1.编写python脚本
在/usr/lib/zabbix/alertscripts/ 目录下
#!/usr/bin/env python
#_*_coding:utf-8_*_
#导入python模块
import requests
import sys
import os
import json
import logging
#自定义logging模块的格式,具体日志会存放在"/var/log/weixin.log"中,你也可以自定义到其它目录中,该文件默认以追加方式写入,你可以写一个周期性任务进行滚动操作
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('/var/log','weixin.log'),
filemode = 'a')
#指定企业ID
corpid=''
#指定应用管理的Secret
appsecret=""
#指定应用管理的AgentId
agentid=""
#指定Token_url
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
#获取tocken
req=requests.get(token_url)
#获取tocken中access_token字段对应的值
accesstoken=req.json()['access_token']
#定义消息发送的URL
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
#定义要发送的人,也就是zabbix webUI配置的"{ALERT.SENDTO}"参数对应的值
touser=sys.argv[1]
#定义要发送的主题,也就是zabbix webUI配置的"{ALERT.SUBJECT}"参数对应的值
subject=sys.argv[2]
#定义要发送的消息内容,也就是zabbix webUI配置的"{ALERT.MESSAGE}"参数对应的值
message=sys.argv[2] + "\n\n" +sys.argv[3]
#指定参数
params={
"touser": touser,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
#基于requests模块的post方法发送企业微信报警消息
req=requests.post(msgsend_url, data=json.dumps(params))
#发送消息后记得打印日志信息,在本地的配置文件中可以查看
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
2.测试脚本
python weixin.py 测试1 测试2 测试3
log日志会在/var/log/weixin.py这里
2.1添加权限
chmod +x /usr/lib/zabbix/alertscripts/weixin.py
3.zabbix配置报警媒介类型
3.1 脚本参数
收件人:
{ALERT.SENDTO}
主题:
{ALERT.SUBJECT}
消息:
{ALERT.MESSAGE}
3.2 配置动作类型返回消息内容
3.3 模板
模板
=================================================
问题 :
主题: 报警问题: {EVENT.NAME}
消息:
开始时间 :{EVENT.DATE}-{EVENT.TIME}
名称: {EVENT.NAME}
主机: {HOST.NAME}
严重性: {EVENT.SEVERITY}
数据: {EVENT.OPDATA}
问题id: {EVENT.ID}
{TRIGGER.URL}
=================================================
Problem recovery (恢复问题)
主题: 恢复所用时间 {EVENT.DURATION}: {EVENT.NAME}
消息:
恢复时间 : {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME}
名称: {EVENT.NAME}
持续时间: {EVENT.DURATION}
主机: {HOST.NAME}
严重性: {EVENT.SEVERITY}
问题 ID: {EVENT.ID}
{TRIGGER.URL}
4. 创建用户和用户组
1 创建用户组
2 创建用户
3 为用户添加报警媒介
5. 创建动作
5.1 添加动作
5.2 添加操作
有三个操作一个问题发现和恢复,更新 ,配置都一样可以更具实际需求更改
5.3 操作细节
只发给个人就添加用户(我们刚刚创建的)
仅发送就是我们之前新建的报警媒介类型
6.测试完成
可以通过修改主机的宏来模拟测试报警 ok