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进行切换图形在屏幕上显示所要监控的信息。

 

   

 

 

   

 

  

 

posted @ 2020-02-28 16:45  一叶知秋~~  阅读(1252)  评论(0编辑  收藏  举报