zabbix monitoring MySQL, Tomcat and configure email alert

First, the idea

Set up a zabbixserver, this machine needs to install agent to monitor the machine, and then deploy email alert configuration

Second, deployment, configuration

surroundings

CPU name IP addresses Character
zserver 192.168.111.3 Monitoring client terminal and also as monitored, Tomcat
zagent 192.168.111.4 Monitored end, mysql
  • You can properly connect to the Internet
  • Configuration epel source
  • This case will turn off the firewall and selinux
[root@localhost ~]# ntpdate ntp1.aliyun.com
#同步阿里云的时间

wget https://mirrors.tuna.tsinghua.edu.cn/epel//epel-release-latest-7.noarch.rpm
yum clean all 
  • Configure the hostname and hosts
[root@localhost ~]# vim /etc/hosts

192.168.111.3 zserver
192.168.111.4 zagent

[root@zserver ~]#  uname -n
zserver

[root@zagent ~]# uname -n
zagent

Installation zabbix

  • LAMP dependencies and install
[root@zserver ~]# yum -y install httpd mariadb-server mariadb mariadb-devel php php-mbstring php-mysql php-bcmath php-gd php-xmlrpc php-ldap php-xml libevent libevent-devel net-snmp net-snmp-devel libxml2 libxml2-devel

[root@zserver ~]# yum -y install httpd mariadb-server mariadb mariadb-devel php php-mbstring php-mysql php-bcmath php-gd php-xmlrpc php-ldap php-xml libevent libevent-devel net-snmp net-snmp-devel libxml2 libxml2-devel


[root@zserver ~]# systemctl enable mariadb
[root@zserver ~]# systemctl start mariadb
[root@zserver ~]# systemctl start httpd
[root@zserver ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@zserver ~]# mysqladmin -uroot password 123456
  • Deploy binary package jdk
rm -rf /usr/bin/java

tar zxf jdk-8u191-linux-x64.tar.gz 
mv jdk1.8.0_191 /usr/local/java8
echo "JAVA_HOME=/usr/local/java8" >> /etc/profile
source /etc/profile
echo "PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile
source /etc/profile


[root@zserver ~]# javac -version
javac 1.8.0_191
#系统自带的jdk中并无javac程序
  • Deployment zabbix
tar zxf zabbix-3.4.15.tar.gz
cd zabbix-3.4.15/

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-java && make -j2 && make install

#--enable-server打开Zabbix服务器的构建
#--enable-agent打开Zabbix代理和客户端实用程序的构建
#--enable-java打开Zabbix Java网关的构建
#--enable-ipv6启用IPv6支持
#--with-mysql可选;使用MySQL客户端库[default = no]
#--with-net-snmp可选;使用Net-SNMP包[default = no]
  • mariadb be authorized
mysql -uroot -p123456

MariaDB [(none)]> create database zabbix character set utf8;
#创建zabbix专用库

MariaDB [(none)]> grant all on zabbix.* to zabbix@'192.168.111.3' identified by 'zabbix';

MariaDB [(none)]> flush privileges;
  • Import data into the original architecture and database zabbix
cd zabbix-3.4.15/

mysql -uzabbix -pzabbix -h192.168.111.3 zabbix < database/mysql/schema.sql
mysql -uzabbix -pzabbix -h192.168.111.3 zabbix < database/mysql/images.sql 
mysql -uzabbix -pzabbix -h192.168.111.3 zabbix < database/mysql/data.sql 
  • Create specialized user program
[root@zserver zabbix-3.4.15]# useradd -M -s /sbin/nologin zabbix
[root@zserver zabbix-3.4.15]# mkdir /usr/local/zabbix/logs
[root@zserver zabbix-3.4.15]# chown -R zabbix:zabbix /usr/local/zabbix/
  • Profiles
[root@zserver zabbix-3.4.15]# vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log 
#指定zabbix日志位置 
PidFile=/tmp/zabbix_server.pid   
#指定zabbix pid文件位置 
DBHost=192.168.111.3
#指定数据库主机 
DBName=zabbix 
#指定数据库名为zabbix 
DBUser=zabbix  
DBPassword=zabbix 
#指定用户为zabbix ,密码zabbix
DBSocket=/var/lib/mysql/mysql.sock   
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf 


[root@zserver zabbix-3.4.15]# vim /usr/local/zabbix/etc/zabbix_agentd.conf


PidFile=/tmp/zabbix_agentd.pid
Server=192.168.111.3
#zabbix server的ip地址,多个ip使用逗号分隔
ServerActive=192.168.111.3
#zabbix 主动监控server的ip地址,使用逗号分隔多IP,如果注释这个选项,那么当前服务器的主动监控就被禁用了(被动模式)
Hostname=zserver
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf


ln -s /usr/local/zabbix/sbin/* /usr/local/bin/
ln -s /usr/local/zabbix/bin/* /usr/local/bin/
#链接执行命令

[root@zserver ~]# zabbix_server 

[root@zserver ~]# zabbix_agentd 
#启动监控端,和agent端
  • zabbix front-end configuration PHP
mv zabbix-3.4.15/frontends/php/ /var/www/html/zabbix
chown -R apache:apache /var/www/html/zabbix
vim /etc/php.ini 
    878 date.timezone = Asia/Shanghai      
    #时区 
    384 max_execution_time = 300        
    #单位秒,通过POST、GET以及PUT方式接
    收数据时间进行限制 
    394 max_input_time = 300        
    #php程序上传文件解析数据时的时间限制 
    672 post_max_size = 32M        
    #POST 方式请求数据所允许的最大大小 
    405 memory_limit = 128M        
    #设置php程序的内存限制 
    854 extension=bcmath.so    
    #加载zabbix程序需要加载的扩展模块bcmath.so,手动添加
    
systemctl restart httpd
#重启服务

[root@zserver ~]# netstat -anpt | egrep ':10050|:10051|:80' 
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      72512/zabbix_agentd 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      72450/zabbix_server 
tcp6       0      0 :::10050                :::*                    LISTEN      72512/zabbix_agentd 
tcp6       0      0 :::10051                :::*                    LISTEN      72450/zabbix_server 
tcp6       0      0 :::80                   :::*                    LISTEN      72666/httpd  
  • Client access web pages zabbix installation
    ......

For a preliminary optimization zabbix

  • Chinese Page

-->administration

-->Users

-->Admin

-> Language Select Chinese (zh_CN)

-->UPdates

-> then refresh the page

  • Change the admin password

-->administration

-->Users

-->Admin

  • Solve the Chinese garbled
rm -rf /var/www/html/zabbix/fonts/DejaVuSans.ttf 
#然后将下载到的中文字体.ttf结尾的字体文件放到该目录即可

mv STXINWEI.TTF DejaVuSans.ttf

chown -R apache:apache /var/www/html/zabbix/fonts/*

Add monitoring host

  • Add Yourself
-->配置

    -->主机
        
        -->创建主机
        
            -->主机名称(与agent配置文件中相同)
               可见名称(自定义)    
               群组(将Linuxserver群组添加到左侧)
               ip(agent所在机器的IP地址和端口)
            
            -->添加
        
        -->选定agent1
        
            -->模板(进行选择,选定Template OS Linux)
            
            --添加
            
            -->更新(等待一会,相应的图标如ZBX会高亮)
  • Add another
yum -y install libxml2-devel libcurl-devel pcre-devel mariadb*
#依赖安装

tar zxf zabbix-3.4.15.tar.gz
cd zabbix-3.4.15/

./configure --prefix=/usr/local/zabbix --enable-agent --with-net-snmp --with-libcurl --with-libxml2 && make && make install
#不需要开启server监控端了

cp misc/init.d/tru64/zabbix_agentd /etc/init.d/

vim /etc/init.d/zabbix_agentd 
    DAEMON=/usr/local/zabbix/sbin/zabbix_agentd
    #前面的目录更改为实际安装路径


chmod +x /etc/init.d/zabbix_agentd 
useradd -M -s /sbin/nologin zabbix
mkdir /usr/local/zabbix/logs
chown -R zabbix:zabbix /usr/local/zabbix/


PidFile=/tmp/zabbix_agentd.pid
Server=192.168.111.3
ServerActive=192.168.111.3
Hostname=zagent 
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log 
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf 
UnsafeUserParameters=1 
#允许所有字符的参数传递给用户定义的参数
UserParameter=mysql.version,mysql -V
# =前面表示定义一个键值对,=后面逗号前面是键的名称,后面是键的值.可以在server监控端使用zabbix_get -s 192.168.111.4 -k mysql.version来得到mysql -V命令的输出结果
UserParameter=mysql.status[*],/usr/local/zabbix/etc/chk_mysql.sh $1 
#显而易见,这里表示的就是执行一个脚本了,[*]这个是用户跟的参数,跟后面的$1位置参数对应,脚本里已经定义好
UserParameter=mysql.ping,mysqladmin -uroot -p123456 -P3306 -h192.168.111.4  ping | grep -c alive
#这里是监控MySQL的配置项

[root@zagent ~]# vim /usr/local/zabbix/etc/chk_mysql.sh
[root@zagent ~]# chmod +x /usr/local/zabbix/etc/chk_mysql.sh 
----chk_mysql.sh监控脚本----
cat /usr/local/zabbix/etc/chk_mysql.sh
#!/bin/bash 
# 用户名 
MYSQL_USER='root' 
  
# 密码 
MYSQL_PWD='123456' 
  
# 主机地址/IP 
MYSQL_HOST='192.168.111.4' 
  
# 端口 
MYSQL_PORT='3306' 
  
# 数据连接 
MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}" 
  
# 参数是否正确 
if [ $# -ne "1" ];then  
    echo "arg error!"  
fi 
# 获取数据 
case $1 in  
    Uptime)  
        result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`  
        echo $result  
        ;;  
    Com_update)  
        result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3`  
        echo $result  
        ;;  
    Slow_queries)  
        result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`  
        echo $result  
        ;;  
    Com_select)  
        result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3`  
        echo $result  
                ;;  
    Com_rollback)  
        result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`  
                echo $result  
                ;;  
    Questions)  
        result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`  
                echo $result  
                ;;  
    Com_insert)  
        result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`  
                echo $result  
                ;;  
    Com_delete)  
        result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`  
                echo $result  
                ;;  
    Com_commit)  
        result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`  
                echo $result  
                ;;  
    Bytes_sent)  
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`  
                echo $result  
                ;;  
    Bytes_received)  
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
        echo $result  
                ;;  
    Com_begin)  
        result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3`  
                echo $result  
                ;;  
                         
        *)  
                echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"  
        ;;  
esac
#关于脚本中MySQLadmin的详细用法,可以在网上找一些文档看一看,很多


[root@zagent ~]# systemctl start mariadb
[root@zagent ~]# systemctl enable mariadb

mysqladmin -uroot password 123456

[root@zagent ~]# mysql -uroot -p123456

MariaDB [(none)]> grant all on *.* to root@'zagent' identified by '123456';
#这一步授权,虽然都是MySQL本机,但只是我们人类角度的一台机器,MySQL程序也许并不会这么认为,我们需要明确授权哪台主机名所在的主机.
MariaDB [(none)]> flush privileges;

[root@zagent ~]# /etc/init.d/zabbix_agentd start
Zabbix agent started.


[root@zserver ~]# zabbix_get -s 192.168.111.4 -k mysql.status[Uptime]
4130
#可以在server监控端简单测试一下
-->配置

    -->主机
        
        -->创建主机
        
            -->主机名称(与agent配置文件中相同)
               可见名称(自定义)    
               群组(将Linuxserver群组添加到左侧)
               ip(agent所在机器的IP地址和端口)
            
            -->添加
        
        -->选定agent1
        
            -->模板(进行选择,选定Template OS Linux)
            
            --添加
            
            -->更新(等待一会,相应的图标如ZBX会高亮)
  • Configuration monitoring zagent of MySQL
首先添加服务模板

-->配置

    -->主机
    
        -->选择相应的主机名称
        
            -->模板
            
                -->选择
                
                    -->模板(进行选择,选定Template DB MySQL)
                    
                    --添加
            
                    -->更新(等待一会亮)

创建图形


-->配置

    -->主机
    
        -->选择相应的主机名称后的图形
            
            -->创建图形
            
            -->监控项下-->添加 选择MySQL status
            
            -->添加

Deployment Monitoring Tomcat

Note: When you compile and install zabbixserver, add --enable-java compiler item

This case is installed Tomcat monitoring tests on zabbix-server

[root@zserver ~]# vim /usr/local/zabbix/sbin/zabbix_java/settings.sh 
9 LISTEN_IP="0.0.0.0" 
17 LISTEN_PORT=10052 
27 PID_FILE="/tmp/zabbix_java.pid" 
35 START_POLLERS=5 

[root@zserver ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
#末行追加
JavaGateway=192.168.111.3
JavaGatewayPort=10052
StartJavaPollers=5


[root@zserver ~]# /usr/local/zabbix/sbin/zabbix_java/startup.sh 
[root@zserver ~]# pkill -9 zabbix_server
[root@zserver ~]# zabbix_server 
[root@zserver ~]# netstat -lnpt | grep 10052
tcp6       0      0 :::10052                :::*                    LISTEN      79396/java 

[root@zserver ~]# tar zxf apache-tomcat-8.5.16.tar.gz 
[root@zserver ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8


[root@zserver ~]# vim /usr/local/tomcat8/bin/catalina.sh 

#!/bin/sh
CATALINA_OPTS="$CATALINA_OPTS 
-Dcom.sun.management.jmxremote 
#启用远程监控
-Dcom.sun.management.jmxremote.port=12345 
#jmx远程监控端口,webzabbix添加时必须一致
-Dcom.sun.management.jmxremote.authenticate=false 
#不开启用户密码认证
-Dcom.sun.management.jmxremote.ssl=false
#不开启ssl
-Djava.rmi.server.hostname=192.168.111.3"
#运行tomcat服务器所在IP地址

[root@zserver ~]# vim /usr/local/tomcat8/bin/catalina.sh 
[root@zserver ~]# //usr/local/tomcat8/bin/startup.sh 
Using CATALINA_BASE:   //usr/local/tomcat8
Using CATALINA_HOME:   //usr/local/tomcat8
Using CATALINA_TMPDIR: //usr/local/tomcat8/temp
Using JRE_HOME:        /usr/local/java8
Using CLASSPATH:       //usr/local/tomcat8/bin/bootstrap.jar://usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
                LISTEN      79722/java          
[root@zserver ~]# netstat -lnpt | grep java
tcp6       0      0 :::10052                :::*                    LISTEN      79396/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      79722/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      79722/java          
tcp6       0      0 :::8080                 :::*                    LISTEN      79722/java          
tcp6       0      0 :::46546                :::*                    LISTEN      79722/java          
tcp6       0      0 :::35319                :::*                    LISTEN      79722/java          
tcp6       0      0 :::12345                :::*                    LISTEN      79722/java         
  • webzabbix add Tomcat monitoring
-->配置

    -->主机
    
        -->选择相应的主机名称
        
        -->jmx接口-->添加刚才在配置文件定义的ip以及12345端口
        
        -->更新
        

    -->模板
    
        -->导入(从本机文件中导入,从网络上下载的有很多)
            (不需要修改选项,直接导入就好)
        
-->配置

    -->主机
    
        -->选择相应的主机名称
        
            -->模板
            
            -->选择响应模板进行添加并更新
            
            刷新等待一两分钟,jmx字符会高亮

Configure email alert

首先登陆网易邮箱,获取到授权码,这里已经成功,不在测试

继续进行

zabbixserver端配置邮件服务器

[root@zserver ~]# yum -y install mailx dos2unix
#dos2unix程序用来防止乱码的
[root@zserver ~]# vim /etc/mail.rc 

#末行追加

set from=该邮件来自于谁  smtp=smtp.163.com
#smtp是邮箱服务器地址
set smtp-auth-user=接收邮件的邮箱地址 smtp-auth-password=授权码
set smtp-auth=login



[root@zserver yum.repos.d]# vim /usr/local/zabbix/etc/zabbix_server.conf
#末行追加
AlerScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
#设置邮件报警脚本路径

[root@zserver yum.repos.d]# vim /usr/local/zabbix/share/zabbix/alertscripts/mail.sh
    #!/bin/bash 
    #export.UTF-8 
    bt=$2
    sjr=$1
    FILE=/tmp/mailtmp.txt
    echo "$3" >$FILE
    /usr/bin/dos2unix -k $FILE
    /bin/mail -s "$bt" "$sjr" <$FILE
[root@zserver ~]# chmod +x /usr/local/zabbix/share/zabbix/alertscripts/mail.sh 

[root@zserver ~]# chown zabbix:zabbix /usr/local/zabbix/share/zabbix/alertscripts/mail.sh 
[root@zserver ~]# touch /tmp/mailtmp.txt
[root@zserver ~]# chmod 777 /tmp/mailtmp.txt 
[root@zserver ~]# chown zabbix:zabbix /tmp/mailtmp.txt 

#文件以及报警脚本的归属以及权限,注:脚本文件和存放邮件消息文件归属必须是zabbix; 
  • Mail alarm monitored item configuration zabbixweb
-->管理

    -->报警媒介类型
    
        -->创建媒体类型
        
            -->自定义名称
            -->类型选择脚本
            -->脚本名称我这里输入mail.sh(要和真实脚本名称一致)
            -->添加三个脚本参数分别为{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESSAGE}
            
                -->添加
  • Zabbix configuration used by a user in the type of media and mail address to receive alarm messages;
-->管理

    -->用户
    
        -->Admin
        
            -->报警媒介
            
                -->添加
                
                    -->类型选择,刚才添加的自定义名称
                    -->收件人填写收件人的邮箱地址
                        
                        -->添加
                
                -->更新
  • Create action to send mail
-->配置

    -->动作
    
        -->创建动作
        
            -->自定义动作名称
        
            -->操作
                
                -->默认操作步骤持续时间 60s(设置报警邮件间隔时间)
                -->默认标题 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障! (报警邮件的标题)
                -->消息内容
                    告警主机:{HOSTNAME1} 
 
                    告警时间:{EVENT.DATE} {EVENT.TIME} 
                     
                    告警等级:{TRIGGER.SEVERITY} 
                     
                    告警信息: {TRIGGER.NAME} 
                     
                    告警项目:{TRIGGER.KEY1} 
                     
                    问题详情:{ITEM.NAME}:{ITEM.VALUE} 
                     
                    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
                    
                    事件ID:{EVENT.ID}
                
                -->新的
                
                -->用户选择admin
                
                -->仅送到刚才添加的自定义名称
                
                -->添加
                
                -->恢复操作和操作写的内容一样(确认操作写的内容也是一样的)
                
            -->添加

现在是没有任何条件,即发生任何动作都会触发邮件报警

使用zagent主机上ftp服务做测试,现在将其关掉

稍等几秒监控图形已经可以看到值为0了


                

III. Summary

  • The overall testing process is fairly smooth, but zabbix can not do real-time monitoring, there will certainly be a time delay, although a test environment resources are sufficient, or not real-time alerts, service stopped almost three minutes after the message is received
  • This case did not upload pictures come out, it will affect the intuitive viewer to read
  • Although there has been a result of the monitoring arrangement, but the idea is still not clear

Guess you like

Origin www.cnblogs.com/joinbestgo/p/10944024.html