Zabbix监控服务03-实现触发器微信告警
要实现微信报警,首先我们需要注册一个企业微信,获取企业ID、secret、企业AgentId,然后编写一个python脚本接入微信,并将脚本放入zabbix指定的脚本目录,并访问到zabbix管理页面,在管理报警媒介类型中添加微信报警,最后在用户管理里添加微信报警媒介,即可实现微信告警
第一个历程:注册企业微信,并做简单配置
我的企业:
1)获取企业ID:ww20fc32c8e433d8eb
2)获取企业二维码:允许员工加入
管理工具:进行成员加入审核
应用小程序:
1)进行创建应用
2)收集程序信息
AgentId:1000002
Secret:QL-9EpXLOBOPnq-x0pAGC86sVoAKLs3Hiw5oxUIcNKg
第二个历程:编写python脚本
第二个历程:编写python脚本
cat /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts --- 放置报警脚本路径
[root@m01 alertscripts]# vim /usr/lib/zabbix/alertscripts/weixin.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#comment: zabbix接入微信报警脚本
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'),
filemode = 'a')
corpid='ww20fc32c8e433d8eb'
appsecret='QL-9EpXLOBOPnq-x0pAGC86sVoAKLs3Hiw5oxUIcNKg'
agentid=1000002
#获取acceddtoken
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]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]
params={
"touser": touser,
# "toparty": toparty,
"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)
测试python脚本
[root@m01 alertscripts]# ./weixin.py ChenYun 晚上 小树林;
第三个历程:修改添加报警媒介 --- 定义了发微信配置
点击管理 --- 报警媒介类型 --- 编写相关信息 --- 添加
脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
第四个历程:配置接收微信的人员
点击小人头 --- 报警媒介 --- 填写相关信息 --- 添加 --- 更新
zabbix发送报警信息时遇到如下报警
原因:/tmp/weixin.log属主的root,而zabbix执行时使用的zabbix用户,权限不足
解决方法:
[root@m01 alertscripts]# chown zabbix.zabbix /tmp/weixin.log
将nginx服务再次停止测试