一、报警脚本放到服务端的 /usr/lib/zabbix/alertscripts/下
属组属主为zabbix zabbix
有执行权限
vim weixinbaojing.py
#!/usr/bin/python #_*_coding:utf-8 _*_ import urllib,urllib2 import json import sys import simplejson reload(sys) sys.setdefaultencoding('utf-8') def gettoken(corpid,corpsecret): gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret print gettoken_url try: token_file = urllib2.urlopen(gettoken_url) except urllib2.HTTPError as e: print e.code print e.read().decode("utf8") sys.exit() token_data = token_file.read().decode('utf-8') token_json = json.loads(token_data) token_json.keys() token = token_json['access_token'] return token def senddata(access_token,subject,content): send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token send_values = { "totag":"3", #企业号中的部门id。 "msgtype":"text", #消息类型。 "agentid":"1000010", #企业号中的应用id。 "text":{ "content":subject + ' ' + content }, "safe":"0" } # send_data = json.dumps(send_values, ensure_ascii=False) send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8') send_request = urllib2.Request(send_url, send_data) response = json.loads(urllib2.urlopen(send_request).read()) print str(response) if __name__ == '__main__': subject = str(sys.argv[1]) #zabbix传过来的第二个参数 content = str(sys.argv[2]) #zabbix传过来的第三个参数 corpid = 'xxxxxxxxxxxxx' #CorpID是企业号的标识 corpsecret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' #corpsecretSecret是管理组凭证密钥 accesstoken = gettoken(corpid,corpsecret) senddata(accesstoken,subject,content)
二、web界面操作
创建触发器Triggers--->创建action-->action中指定Conditions-->opreations中设置报警格式(格式如下)-->Recovery opreations中设格式(格式如下(通知类型为Recovery))
Default operation step duration 1h
Default subject 通知类型:WARNING
Default message
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
operations中设置发送那个组,使用哪种方式方式发送
3、在administration中配置Media types,配置格式如下
Name test
Type script
Script name test.py
Script parameters
{ALERT.SUBJECT}
{ALERT.MESSAGE}
{ALERT.SENDTO}
4、在administration中配置user中添加media