Zabbbix之十二------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] + "\n\n" +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、在动作里添加操作。
默认标题:业务报警{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服务,查看企业微信发送的恢复消息
实战二:在zabbix网页创建聚合图形
1、在zabbix网页上创建聚合图形,选择了两行两列
2、在创建的linux_web聚合图形界面添加要监控的主机指标,跨主机、以及跨主机群组的主机,都可以监控
3、以下是个人创建的四个聚合图形监控
4、如果有多个主机,可以创建多个聚合图形,以下是创建的第二个linux_web2的聚合图形。
5、创建幻灯片演示
6、将前面创建的聚合图形添加到幻灯片中
7、最后打开创建的幻灯片演示,此时创建的聚合图形就会每3s进行切换图形在屏幕上显示所要监控的信息。