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 ShiJie import requests import sys import os import json import logging logging.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' # 需要修改企业ID appsecret= "xxx" # 企业的secret秘钥 agentid= "xxx" # 修改agentid token_url= 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret req=requests.get(token_url) accesstoken=req.json()[ 'access_token' ] msgsend_url= 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken touser=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] # ll total 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寻求帮助。
下一篇:没有了