博文大纲:
一、安装Zabbix agent端
二、登录web界面添加agent主机
三、Zabbix监控MySQL数据库
四、配置邮件报警
五、配置企业微信报警

注:本文是基于博文:部署zabbix监控服务器 的环境。

这篇博文用到的所有软件都可以在这个链接获得:Zabbix 软件包

一、安装Zabbix agent端

这里我启动了一台IP为192.168.20.3的服务器,用于充当agent端。

[root@agent ~]# tar zxf zabbix-3.2.1.tar.gz -C /usr/src/
[root@agent ~]# cd /usr/src/zabbix-3.2.1/
[root@agent zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-agent && make && make install
[root@agent zabbix-3.2.1]# useradd zabbix -M -s /sbin/nologin 
#修改启动脚本
[root@agent zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@agent ~]# sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_agentd 
[root@agent ~]# sed -i 's/PIDFILE=\/tmp\/$BINARY_NAME.pid/PIDFILE=$BASEDIR\/logs\/$BINARY_NAME.pid/g' /etc/init.d/zabbix_agentd 
[root@agent ~]# chmod +x /etc/init.d/zabbix_agentd
#修改配置文件
[root@agent ~]# cd /usr/local/zabbix/etc/
[root@agent etc]# sed -i 's/# PidFile=\/tmp\/zabbix_agentd.pid/PidFile=\/usr\/local\/zabbix\/logs\/zabbix_agentd.pid/g' zabbix_agentd.conf
[root@agent etc]# sed -i 's/LogFile=\/tmp\/zabbix_agentd.log/LogFile=\/usr\/local\/zabbix\/logs\/zabbix_agentd.log/g' zabbix_agentd.conf
[root@agent etc]# sed -i 's/Server=127.0.0.1/Server=192.168.20.2/g' zabbix_agentd.conf
[root@agent etc]# sed -i 's/# ListenPort=10050/ListenPort=10050/g' zabbix_agentd.conf
[root@agent etc]# sed -i 's/ServerActive=127.0.0.1/ServerActive=192.168.20.2/g' zabbix_agentd.conf
[root@agent etc]# sed -i 's/Hostname=Zabbix server/Hostname=192.168.20.3/g' zabbix_agentd.conf
[root@agent etc]# sed -i 's/# Timeout=3/Timeout=15/g' zabbix_agentd.conf
[root@agent etc]# sed -i 's/# Include=\/usr\/local\/etc\/zabbix_agentd.conf.d\//Include=\/usr\/local\/zabbix\/etc\/zabbix_agentd.conf.d\//g' zabbix_agentd.conf
[root@agent etc]# egrep -v '^$|^#' zabbix_agentd.conf   #确认更改的配置文件
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.20.2
ListenPort=10050
ServerActive=192.168.20.2
Hostname=192.168.20.3
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@agent etc]# mkdir /usr/local/zabbix/logs
[root@agent etc]# chown -R zabbix:zabbix /usr/local/zabbix/
[root@agent etc]# /etc/init.d/zabbix_agentd start   #启动agent

二、登录web界面添加agent主机

登录到Zabbix server端进行以下操作,以便监控刚刚配置的agent端。

Zabbix监控客户端及实现邮件、微信报警_第1张图片

Zabbix监控客户端及实现邮件、微信报警_第2张图片

Zabbix监控客户端及实现邮件、微信报警_第3张图片

Zabbix监控客户端及实现邮件、微信报警_第4张图片
Zabbix监控客户端及实现邮件、微信报警_第5张图片

Zabbix监控客户端及实现邮件、微信报警_第6张图片

三、Zabbix监控MySQL数据库

以下操作在新配置的agent端进行(自行部署MySQL数据库,在博文开头的博文链接中有脚本安装MySQL数据库的方法)。

#复制Zabbix提供的MySQL监控脚本
[root@agent etc]# cd /usr/src/zabbix-3.2.1/conf/zabbix_agentd/
[root@agent zabbix_agentd]# cp userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@agent zabbix_agentd]# cd /usr/local/zabbix/etc/
#编写文件,存放登录数据库的账号
[root@agent etc]# cat > .my.cnf << EOF
> [client]
> host=192.168.20.3
> user=test
> password=123.com
> socket=/usr/local/mysql/mysql.sock
> EOF
#修改MySQL监控脚本
[root@agent ~]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d
[root@agent zabbix_agentd.conf.d]# sed -i 's/mysql -N/\/usr\/local\/bin\/mysql -N/g' userparameter_mysql.conf 
[root@agent zabbix_agentd.conf.d]# sed -i 's/mysql -V/\/usr\/local\/bin\/mysql -V/g' userparameter_mysql.conf 
[root@agent zabbix_agentd.conf.d]# sed -i 's/mysqladmin ping/\/usr\/local\/bin\/mysqladmin ping/g' userparameter_mysql.conf 
[root@agent zabbix_agentd.conf.d]# sed -i 's/HOME=\/var\/lib\/zabbix/HOME=\/usr\/local\/zabbix\/etc\//g' userparameter_mysql.conf 
#重启agent服务,使更改生效
[root@agent zabbix_agentd.conf.d]# /etc/init.d/zabbix_agentd restart
#授权数据库用户
[root@agent ~]# mysql -uroot -p123   
mysql> grant all on *.* to test@'192.168.20.%' identified by '123.comm';

Zabbix-servre端测试是否可以采集到agent端的MySQL状态:

[root@zabbix logs]# zabbix_get -s 192.168.20.3 -p 10050 -k "mysql.status[Uptime]"
728
#在server端执行上述命令可以看到的数字,就是数据库相关的状态

回到Zabbix的web页面,添加MySQL数据库监控模板

Zabbix监控客户端及实现邮件、微信报警_第7张图片

选择MySQL模板:

Zabbix监控客户端及实现邮件、微信报警_第8张图片

Zabbix监控客户端及实现邮件、微信报警_第9张图片

查看添加的MySQL监控信息(若没有信息,则需要稍等一会):

Zabbix监控客户端及实现邮件、微信报警_第10张图片

四、配置邮件报警

以下所有操作需要在Zabbix server端配置

[root@zabbix ~]# yum -y install perl-Net-SSLeay perl-IO-Socket-SSL
[root@zabbix ~]# tar zxf sendEmail-v1.56.tar.gz -C /usr/src/
[root@zabbix ~]# cp /usr/src/sendEmail-v1.56/sendEmail /usr/local/bin/
[root@zabbix ~]# chown zabbix:zabbix /usr/local/bin/sendEmail 
[root@zabbix ~]# vim /usr/local/bin/sendEmail 
        if (! IO::Socket::SSL->start_SSL($SERVER)) {
#跳转到1906行,修改如上,然后保存退出

在进行接下来的操作前,需要有自己邮箱的授权码,这里以QQ为例(163或者新浪都可以)。

Zabbix监控客户端及实现邮件、微信报警_第11张图片

Zabbix监控客户端及实现邮件、微信报警_第12张图片

根据提示发送信息:

Zabbix监控客户端及实现邮件、微信报警_第13张图片

需要的就是以下授权码:

Zabbix监控客户端及实现邮件、微信报警_第14张图片


#Zabbix  Server上编写邮件报警脚本
[root@zabbix alertscripts]# pwd    #所有脚本必须在该目录下
/usr/local/zabbix/share/zabbix/alertscripts
[root@zabbix alertscripts]# vim SendEmail.sh     #脚本如下:
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail -o tls=auto -f [email protected] -t "$to" -s smtp.qq.com -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp xphunzguzeibdag -m "$body"
#各项解释如下:
# /usr/local/bin/sendEmail:命令主程序;
# -f [email protected] :发件人邮箱
# -t [email protected] :收件人邮箱
# -s smtp.126.com :发件人邮箱的 smtp 服务器
# -u "我是邮件主题" :邮件的标题 
#-o message-content-type=html:邮件内容的格式,html 表示它是 html 格式
# -o message-charset=utf8:邮件内容编码
# -xu [email protected]:发件人邮箱的用户名
# -xp WEE78@12l$ #发件人邮箱授权码(就是我刚刚生成的那个授权码)
# -m "我是邮件内容" :邮件的具体内容
#测试是否可以成功发送邮件
[root@zabbix alertscripts]# chmod +x SendEmail.sh     #给与脚本执行权限
[root@zabbix logs]# sh SendEmail.sh [email protected] test 123456
Nov 09 22:17:55 zabbix sendEmail[9970]: Email was sent successfully!

我收到的邮件如下:

Zabbix监控客户端及实现邮件、微信报警_第15张图片

回到web界面,添加报警媒介

Zabbix监控客户端及实现邮件、微信报警_第16张图片

Zabbix监控客户端及实现邮件、微信报警_第17张图片

确认已添加报警媒介:

Zabbix监控客户端及实现邮件、微信报警_第18张图片

将报警媒介关联到用户

Zabbix监控客户端及实现邮件、微信报警_第19张图片

Zabbix监控客户端及实现邮件、微信报警_第20张图片

Zabbix监控客户端及实现邮件、微信报警_第21张图片

Zabbix监控客户端及实现邮件、微信报警_第22张图片

创建一个触发动作

Zabbix监控客户端及实现邮件、微信报警_第23张图片

Zabbix监控客户端及实现邮件、微信报警_第24张图片

Zabbix监控客户端及实现邮件、微信报警_第25张图片

Zabbix监控客户端及实现邮件、微信报警_第26张图片

设置“恢复操作”

配置当故障恢复后执行的操作:

Zabbix监控客户端及实现邮件、微信报警_第27张图片

Zabbix监控客户端及实现邮件、微信报警_第28张图片

配置触发器

Zabbix监控客户端及实现邮件、微信报警_第29张图片

Zabbix监控客户端及实现邮件、微信报警_第30张图片

Zabbix监控客户端及实现邮件、微信报警_第31张图片

确定可以看到我们配置的触发器:

Zabbix监控客户端及实现邮件、微信报警

报警测试:

将agent端服务器的zabbix_agent进程关闭,邮箱可以收到邮件则表示配置正确。

#在agent服务器进行以下操作
[root@agent ~]# /etc/init.d/zabbix_agentd stop    #关闭agent进程

至此,即可收到报警邮件如下:

Zabbix监控客户端及实现邮件、微信报警_第32张图片

五、配置企业微信报警

网页搜索企业微信并登陆到企业微信并且自行注册,然后进行以下操作:

创建应用:

Zabbix监控客户端及实现邮件、微信报警_第33张图片

Zabbix监控客户端及实现邮件、微信报警_第34张图片
应用程序创建成功后,会显示应用信息,如下:
Zabbix监控客户端及实现邮件、微信报警_第35张图片

在上面重点记录下此应用的Agent和Secret,以便后面配置中使用。

查看企业ID、部门ID、用户账号等信息:

企业ID:

Zabbix监控客户端及实现邮件、微信报警_第36张图片

部门ID:
Zabbix监控客户端及实现邮件、微信报警_第37张图片

用户账号:

Zabbix监控客户端及实现邮件、微信报警_第38张图片

以上查看的信息,以后都要用到。

Zabbix server上获取微信报警脚本。

[root@zabbix alertscripts]# pwd
/usr/local/zabbix/share/zabbix/alertscripts
[root@zabbix alertscripts]# wget https://www.ixdba.net/zabbix/weixin_linux_amd64
#若上面的地址失效,也可从博文开头的网盘链接中获取
[root@zabbix alertscripts]# mv weixin_linux_amd64 weixin   #更改名称
[root@zabbix alertscripts]# chmod 755 weixin    #赋予执行权限
[root@zabbix alertscripts]# echo "AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts" >> /usr/local/zabbix/etc/zabbix_server.conf
#向Zabbix主配置文件中追加上述内容
#测试这个脚本是否可用,执行下面的命令(需要修改相应的值):
[root@zabbix alertscripts]# ./weixin --corpid=ww829ec5c69739bbee --corpsecret=n0CcdnCzqQHUlJSdPC8C_VDr4XXzizK2sjDMUkng0b0 --msg="微信告警测试" --user=LvJianZhao --agentid=1000004
{"errcode":0,"errmsg":"ok","invaliduser":""}
#需要修改的内容如下:
# corpid=企业号里面的企业ID;
# corpsecret:这里就是我们自建应用里面的Secret的ID;
# agentid:我们自建应用里面的AgentId;
# msg:要发送的消息内容;
# user:我们接受消息的用户账号,注意是在微信企业号里面成员详情页的账号;

执行完毕后,没有报错的话,那么我们就可以在企业微信号上收到了这条命令的告警信息了,如下:

Zabbix监控客户端及实现邮件、微信报警_第39张图片

登陆到web界面,创建微信报警媒介

Zabbix监控客户端及实现邮件、微信报警_第40张图片
Zabbix监控客户端及实现邮件、微信报警_第41张图片

关联到Zabbix管理用户:
Zabbix监控客户端及实现邮件、微信报警_第42张图片
Zabbix监控客户端及实现邮件、微信报警_第43张图片

Zabbix监控客户端及实现邮件、微信报警_第44张图片

注意上面的收件人设置,这个收件人就是在微信企业号后台中,通讯录下面的成员详情看到的账号,一定不要写错了。

确定已经添加:

Zabbix监控客户端及实现邮件、微信报警_第45张图片

配置动作

Zabbix监控客户端及实现邮件、微信报警_第46张图片

Zabbix监控客户端及实现邮件、微信报警_第47张图片

Zabbix监控客户端及实现邮件、微信报警_第48张图片
上述填写的内容,可从下面复制:

服务器:{HOST.NAME}发生:{TRIGGER.NAME}故障

告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}

Zabbix监控客户端及实现邮件、微信报警_第49张图片

添加后如下:

Zabbix监控客户端及实现邮件、微信报警_第50张图片

配置恢复操作:

Zabbix监控客户端及实现邮件、微信报警_第51张图片

以上添加的内容,可以从下面复制:

服务器:{HOST.NAME}:{TRIGGER.NAME}故障已恢复

告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE}{EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}

确定无误后,点击添加:

Zabbix监控客户端及实现邮件、微信报警_第52张图片

至此,微信告警整合Zabbix就配置完成了,如下:

Zabbix监控客户端及实现邮件、微信报警_第53张图片

测试微信告警功能:

#在agent进行以下操作,以便模拟故障
[root@agent ~]# /etc/init.d/zabbix_agentd stop

关闭agent端后,稍后企业微信端(邮箱也会收到)即可收到以下信息:

Zabbix监控客户端及实现邮件、微信报警_第54张图片

#启动agent端,测试恢复操作:
[root@agent ~]# /etc/init.d/zabbix_agentd start     

企业微信收到的信息如下:

Zabbix监控客户端及实现邮件、微信报警_第55张图片