Zabbix整合微信报警通知
实战一:实现zabbix监控微信报警
1、在企业微信上注册账号
1、注册企业微信,管理员需要写上自己的真实姓名,扫描以下的二维码,与微信关联真实姓名。

2、登陆企业微信,然后创建一个微信故障通知应用

3、对创建的应用命名,并上传图片

4、查看创建的应用


5、添加成员

6、查看此时的管理员账号是姓名全拼,但首字母都是大写,例如:张三,账号就是ZhangSan

2、在Linux系统的zabbix server服务器端配置weixin.py脚本
1、首先安装python脚本需要的命令
[root@zabbix web]# yum install python-pip -y[root@zabbix web]# pip install requests |
2、在指定的目录下/usr/lib/zabbix/alertscripts创建weixin.py脚本,在企业微信里找到agentid、企业ID以及企业秘钥
#!/usr/bin/env python#coding:utf-8#Author:Zhang ShiJieimport requestsimport sysimport osimport jsonimport logginglogging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',datefmt = '%a, %d %b %Y %H:%M:%S',filename = os.path.join('/tmp','weixin.log'), # 指定临时weixin的日志路径filemode = 'a')corpid='xx' # 需要修改企业IDappsecret="xxx" # 企业的secret秘钥agentid="xxx" # 修改agentidtoken_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecretreq=requests.get(token_url)accesstoken=req.json()['access_token']msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstokentouser=sys.argv[1]subject=sys.argv[2]message=sys.argv[2] + " " +sys.argv[3]params={"touser": touser,"msgtype": "text","agentid": agentid,"text": {"content": message},"safe":0}req=requests.post(msgsend_url, data=json.dumps(params))logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message) |
3、对weixin.py脚本加上执行权限,并将属组和属主加上
[root@zabbix alertscripts]# pwd # 将weixin.py脚本存放在此目录下/usr/lib/zabbix/alertscripts[root@zabbix alertscripts]# chmod +x weixin.py # 加上执行权限[root@zabbix alertscripts]# chown zabbix.zabbix weixin.py -R # 将权限进行修改[root@zabbix alertscripts]# lltotal 4-rwxr-xr-x 1 zabbix zabbix 981 Dec 25 02:55 weixin.py |
4、对weixin.py脚本进行测试
[root@zabbix alertscripts]# python weixin.py 姓名账号 "这是主题" "这是内容"[root@zabbix alertscripts]# python weixin.py 姓名账号 "这是主题" "这是内容11"[root@zabbix alertscripts]# python weixin.py 姓名账号 "这是主题" "这是内容 linux" |
5、此处很关键,由于手动推送的脚本生成的临时文件/tmp/weixin.log是root权限的数据,我们启动的zabbix--server服务器都是zabbix 用户启动的,需要我们将/tmp/weixin.log文件的属组和属主改为zabbix用户,或者删除即可。
[root@zabbix alertscripts]# ll /tmp/weixin.log -rw-r--r-- 1 root root 914 Feb 28 09:20 /tmp/weixin.log[root@zabbix alertscripts]# rm -rf /tmp/weixin.log #删除临时log文件[root@zabbix alertscripts]# chown zabbix.zabbix /tmp/weixin.log -R # 改为zabbix用户 |
6、手动推送脚本成功后,此时手机上就可以收到,微信故障报警通知

3、在zabbix网页上创建nginx监控
这里在linux系统上配置nginx服务、监听nginx状态以及监听nginx的80端口,不再细讲,详情请看:https://www.cnblogs.com/struggle-1216/p/12347283.html
1、创建主机群组

2、创建主动模式的proxy代理

3、创建监控nginx模板

4、全克隆一个监控主动模式的proxy代理模板,因为默认的监控项里边的监控项原型、网络部分都是被动模式,需要将选项改为主动模式,时间间隔设置为5s,生产中设置为5m,详情见:https://www.cnblogs.com/struggle-1216/p/12354813.html里边的主动模式监控,这里不再演示。
5、创建主机,添加的主动模式代理的proxy代理模板

6、开始关联主机模板

7、在上面创建的Linux_nginx模板没有应用集、监控项、触发器等信息,需要在下面进行添加,第一步先创建应用集。

8、创建监控项,这里只创建了监听nginx的80端口。

9、创建触发器,这里只做了监听nginx的80端口监听,其他的同理一样的操作。

监控的agent主机是默认五分钟内不可用就会触发触发器,表达式含义是:在5分钟之内的agent.ping不等于1就触发报警

10、创建监控nginx图形

11、此时可以看到监控的nginx主机配置正常

12、查看nginx监控图形

4、在zabbix网页上创建实现触发报警,发送报警通知到企业微信上
1、创建报警媒介类型,脚本参数如下:
{ALERT.SENDTO} # 发给谁{ALERT.SUBJECT} # 主题{ALERT.MESSAGE} # 信息 |

2、创建用户

3、修改VIP的用户权限,改为超级管理员,其他创建的用户也一样。

4、对创建的用户(VIP)全部都加上报警媒介。

5、创建动作

6、在动作里添加操作。
|
1
2
|
默认标题:业务报警{TRIGGER.STATUS}消息内容:上海业务报警服务器:{HOST.NAME},IP:{HOSTNAME1},详情:{ITEM.NAME}:{ITEM.VALUE} |

7、在动作里添加恢复操作,用来提醒自己,业务已经恢复。
默认标题:业务报警{TRIGGER.STATUS}消息内容:上海业务报警服务器:{HOST.NAME},IP:{HOSTNAME1},详情:{ITEM.NAME}:{ITEM.VALUE} |

5、测试效果
1、在被监控端停掉nginx服务和zabbix-agent服务
[root@node1 ~]# nginx -s stop[root@node1 ~]# systemctl stop zabbix-agent |
2、查看此时的报警信息。

3、查看此时的企业微信发送的报警信息

4、恢复此时的nginx服务及zabbix-agent服务,查看企业微信发送的恢复消息

如果您的问题仍未解决,还可以加入服务器在线技术交流QQ群:8017413寻求帮助。
下一篇:没有了
