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

zabbix服务端部署可参考:https://blog.51cto.com/14227204/2474670
注:本文是基于上述链接

一、安装Zabbix agent端
这里我启动了一台IP为192.168.171.134的服务器,来用于充当agent端

[ /]# mkdir /zabbix          # 个人习惯,可忽略
[ /]# cd /zabbix/
[ /]# rz
[ zabbix]# tar zxf zabbix-3.2.1.tar.gz 
[ zabbix]# cd zabbix-3.2.1/
[ zabbix-3.2.1]# useradd -M -s /sbin/nologin  zabbix
[ zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-agent && make && make install
[ zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[ /]# sed -i ‘s/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g‘ /etc/init.d/zabbix_agentd 
[ /]# sed -i ‘s/PIDFILE=\/tmp\/$BINARY_NAME.pid/PIDFILE=$BASEDIR\/logs\/$BINARY_NAME.pid/g‘ /etc/init.d/zabbix_agentd 
[ /]# chmod +x /etc/init.d/zabbix_agentd
[ /]# sed -i ‘s/# PidFile=\/tmp\/zabbix_agentd.pid/PidFile=\/usr\/local\/zabbix\/logs\/zabbix_agentd.pid/g‘ /usr/local/zabbix/etc/zabbix_agentd.conf
[ /]# sed -i ‘s/LogFile=\/tmp\/zabbix_agentd.log/LogFile=\/usr\/local\/zabbix\/logs\/zabbix_agentd.log/g‘ /usr/local/zabbix/etc/zabbix_agentd.conf
[ /]# sed -i ‘s/Server=127.0.0.1/Server=192.168.171.133/g‘ /usr/local/zabbix/etc/zabbix_agentd.conf
[ /]# sed -i ‘s/# ListenPort=10050/ListenPort=10050/g‘ /usr/local/zabbix/etc/zabbix_agentd.conf
[ /]# sed -i ‘s/ServerActive=127.0.0.1/ServerActive=192.168.171.133/g‘ /usr/local/zabbix/etc/zabbix_agentd.conf
[ /]# sed -i ‘s/Hostname=Zabbix server/Hostname=192.168.171.134/g‘ /usr/local/zabbix/etc/zabbix_agentd.conf
[ /]# sed -i ‘s/# Timeout=3/Timeout=15/g‘ /usr/local/zabbix/etc/zabbix_agentd.conf
[ /]# sed -i ‘s/# Include=\/usr\/local\/etc\/zabbix_agentd.conf.d\//Include=\/usr\/local\/zabbix\/etc\/zabbix_agentd.conf.d\//g‘ /usr/local/zabbix/etc/zabbix_agentd.conf
[ /]# egrep -v ‘^$|^#‘ /usr/local/zabbix/etc/zabbix_agentd.conf 
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.171.133
ListenPort=10050
ServerActive=192.168.171.133
Hostname=192.168.171.134
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
[ /]# mkdir -p /usr/local/zabbix/logs       # 创建日志存放路径
[ /]# chown -R zabbix:zabbix /usr/local/zabbix/     # 赋予权限
[ /]# /etc/init.d/zabbix_agentd start           # 启动agent
Reloading systemd:                                         [  OK  ]
Starting zabbix_agentd (via systemctl):                    [  OK  ]

二、登录web界面添加agent主机
登录到Zabbix server端进行以下操作,监控刚刚所配置的agent端
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
三、Zabbix监控MySQL数据库
以下操作在新配置的agent端进行即可

#复制Zabbix提供的MySQL监控脚本
[ /]# cd /zabbix/zabbix-3.2.1/conf/zabbix_agentd/
[ zabbix_agentd]# cp userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[ zabbix_agentd]# cd /usr/local/zabbix/etc/
[ etc]# cat > .my.cnf << EOF
> [client]
> host=192.168.171.134
> user=test
> password=123.com
> socket=/usr/local/mysql/mysql.sock
> EOF
[ etc]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[ zabbix_agentd.conf.d]# sed -i ‘s/mysql -N/\/usr\/local\/bin\/mysql -N/g‘ userparameter_mysql.conf 
[ zabbix_agentd.conf.d]# sed -i ‘s/mysql -V/\/usr\/local\/bin\/mysql -V/g‘ userparameter_mysql.conf 
[ zabbix_agentd.conf.d]# sed -i ‘s/mysqladmin ping/\/usr\/local\/bin\/mysqladmin ping/g‘ userparameter_mysql.conf
[ zabbix_agentd.conf.d]# sed -i ‘s/HOME=\/var\/lib\/zabbix/HOME=\/usr\/local\/zabbix\/etc\//g‘ userparameter_mysql.conf 
[ zabbix_agentd.conf.d]# /etc/init.d/zabbix_agentd restart
Restarting zabbix_agentd (via systemctl):                  [  OK  ]
[ /]# mysql -u root -p123
mysql> grant all on *.* to ‘192.168.171.%‘ identified by ‘123.com‘;

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

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

回到Zabbix的web页面,添加MySQL数据库监控模板
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
四、配置邮件报警
以下所有操作需要在Zabbix server端配置

[ /]# yum -y install perl-Net-SSLeay perl-IO-Socket-SSL
[ ~]# tar zxf /zabbix/sendEmail-v1.56.tar.gz -C /usr/src/
[ ~]# cp /usr/src/sendEmail-v1.56/sendEmail /usr/local/bin/
[ ~]# chown zabbix:zabbix /usr/local/bin/sendEmail 
[ ~]# vim /usr/local/bin/sendEmail 
if (! IO::Socket::SSL->start_SSL($SERVER)) {
#切到1906行,修改为上述所示

接下来就是邮箱上的配置:
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
生成授权码时,有密保的同志他会让你发送一条短信进行身份确认
Zabbix监控客户端及实现邮件、微信报警

#在zabbix-server端上配置 
[ /]# cd /usr/local/zabbix/share/zabbix/alertscripts/
[ alertscripts]# vim SendEmail.sh
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail -o tls=auto -f  -t "$to" -s smtp.qq.com -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu  -xp wrsxyidhdokobdah -m "$body"
#各项解释如下:
# /usr/local/bin/sendEmail:命令主程序;
# -f  :发件人邮箱
# -t  :收件人邮箱
# -s smtp.126.com :发件人邮箱的 smtp 服务器
# -u "我是邮件主题" :邮件的标题 
#-o message-content-type=html:邮件内容的格式,html 表示它是 html 格式
# -o message-charset=utf8:邮件内容编码
# -xu :发件人邮箱的用户名
# -xp $ #发件人邮箱授权码(就是我刚刚生成的那个授权码)
# -m "我是邮件内容" :邮件的具体内容
#测试是否可以成功发送邮件
[ alertscripts]# sh SendEmail.sh  test 123456
Mar 06 18:04:11 zabbix sendEmail[4604]: Email was sent successfully!

Zabbix监控客户端及实现邮件、微信报警
回到web界面,添加报警媒介
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
将报警媒介关联到用户
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
创建一个触发动作
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
配置触发器
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
报警测试:
将agent端服务器的zabbix_agent进程关闭,邮箱可以收到邮件则表示配置正确。

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

这里我们可以看到邮箱已经收到报警信息:
Zabbix监控客户端及实现邮件、微信报警

五、配置企业微信报警
1、创建应用:
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
应用程序创建成功后,会显示应用信息,如下:
Zabbix监控客户端及实现邮件、微信报警
在上面重点记录下此应用的Agent和Secret,以便后面配置中使用。

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

企业ID:
Zabbix监控客户端及实现邮件、微信报警
部门ID:
Zabbix监控客户端及实现邮件、微信报警
用户账号:
Zabbix监控客户端及实现邮件、微信报警
以上查看的信息,一会都要用到

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

执行完毕后,没有报错的话,那么我们就可以在企业微信号上收到了这条命令的告警信息了,如下:
Zabbix监控客户端及实现邮件、微信报警
登陆到web界面,创建微信报警媒介
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
关联到Zabbix管理用户:
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警

注意上面的收件人设置,这个收件人就是在微信企业号后台中,通讯录下面的成员详情看到的账号,一定不要写错了
Zabbix监控客户端及实现邮件、微信报警
配置动作
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警

服务器:{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监控客户端及实现邮件、微信报警
添加后如下:
Zabbix监控客户端及实现邮件、微信报警
配置恢复操作:
Zabbix监控客户端及实现邮件、微信报警
Zabbix监控客户端及实现邮件、微信报警
测试微信告警功能:

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

关闭agent端后,稍后企业微信端(邮箱也会收到)即可收到以下信息:
Zabbix监控客户端及实现邮件、微信报警
接下来,启动agent端,测试恢复操作:
Zabbix监控客户端及实现邮件、微信报警

相关推荐