zabbix配置企业微信告警
章节
1.配置企业微信应用
1.1.配置企业微信应用
- 告警应用创建
- 告警应用信息查看
- 配置应用接口调用IP,限制哪些IP地址才能调用
1.2.获取用户信息的URL
其他接口可以参考企业微信开发者文档 https://developer.work.weixin.qq.com/document/path/96067
功能 | API接口信息 |
---|---|
获取access_token | https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid= |
获取部门成员 | https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=<access_token>&department_id=<department_id> |
获取部门成员信息 | https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=<access_token>&department_id=<department_id> |
读取成员信息 | https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=<access_token>&userid= |
- 获取USERID值,用于发送告警
1.3.通过企业微信后台导出信息来获取userid值
2.企业微信告警脚本
2.1 企业微信告警脚本
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
# import的三方库
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='corpid'
# 企业微信zabbix的key
appsecret='appsecret'
# 企业微信zabbix用于ID
agentid=agentid
#获取accesstoken
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]
# 发送告警的messages信息
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)
2.2 zabbix服务器配置
- 安装python库
pip3 install requests
- 放置企业微信告警脚本
mv weixin.py /usr/lib/zabbix/alertscripts/
- 授权脚本
chmod +x /usr/lib/zabbix/alertscripts/weixin.py
- 测试脚本
/usr/lib/zabbix/alertscripts/weixin.py <告警接收人> '<告警标题>' '<告警内容>'
- 授权日志所有权
chown zabbix.zabbix /tmp/weixin.log
3.配置告警推送至企业微信
3.1.添加weixin.py告警媒介
Script parameters:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
- 测试企业微信告警媒介
3.2.企业微信告警联系人添加
3.3.配置告警推送至企业微信
- 告警推送配置
虚拟化环境: 故障{TRIGGER.STATUS},网络设备:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息内容:
告警主机:{HOSTNAME1}
主机名称:{HOST.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
告警链接:{TRIGGER.URL}
- 告警恢复配置
虚拟化环境: 恢复{TRIGGER.STATUS},网络设备:{HOSTNAME1}事件: {TRIGGER.NAME}恢复!
消息内容:
告警主机:{HOSTNAME1}
主机名称:{HOST.NAME}
恢复时间:{EVENT.DATE} {EVENT.RECOVERY.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
告警链接:{TRIGGER.URL}
- 配置故障告警通知
- 配置故障恢复通知
4.企业微信告警结果
- zabbix故障告警显示
- zabbix故障恢复告警显示