zabbix企业微信告警配置教程
前言:
zabbix企业微信告警只需要配置一次就可以使用很久了,但是发现再次配置时,总会有遗忘,很麻烦又要去重新熟悉,所以,现在记录一份详细的配置过程,方便日后再次配置。
1.zabbix_server服务器端配置:
cat /usr/local/zabbix/etc/zabbix_server.conf | grep -Ev "^$|^#"
LogFile=/tmp/zabbix_server.log DBHost=127.0.0.1 DBName=zabbix DBUser=root DBPassword=mysql_password DBPort=3306 StartPollers=30 StartPollersUnreachable=3 StartTrappers=5 StartPingers=5 StartDiscoverers=5 MaxHousekeeperDelete=20000 CacheSize=64M HistoryCacheSize=128M TrendCacheSize=4M ValueCacheSize=128M Timeout=30 AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #发消息脚本路径 LogSlowQueries=3000
2.编写发消息到企业微信脚本
vim /usr/local/zabbix/share/zabbix/alertscripts/sed_messages_weixin.py
#!/usr/bin/env python # _*_ coding: utf-8 _*_ # author:chenjianwen # email:1071179133@qq.com import sys import urllib2 import json import requests toparty = sys.argv[1] #发给哪个部门 title = sys.argv[2] #标题 message = sys.argv[3] #内容 corpid = 'ww7xxxx' #企业微信号id #corpsecret = 'Hjekn1xxxV9xA' ##应用Secret if toparty == "4": #根据部门id确定对应项目的报警消息发送到对应部门 corpsecret = 'xxxxxxxxxxxxxxxxxxxxxxx' agentid = 1000004 elif toparty == "13": corpsecret = 'xxxxxxxxxxxxxxxxxxxxxxx' agentid = 1000013 get_access_token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s'%(corpid,corpsecret) def get_access_token(get_access_token_url): data = urllib2.urlopen(get_access_token_url).read().decode('utf-8') data = json.loads(data) #print data["access_token"] return data["access_token"] def send_messages(access_token,toparty,agentid,content): send_messages_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s'%access_token data = { "touser" : "", #成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为@all,则向该企业应用的全部成员发送 "toparty" : toparty, ##部门ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数 "totag" : "", #标签ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数 "msgtype" : "text", #消息类型,此时固定为:text "agentid" : agentid, #企业应用的id,整型。可在应用的设置页面查看 "text" : { "content" : content #消息内容,最长不超过2048个字节 }, "safe":0 #表示是否是保密消息,0表示否,1表示是,默认0 } value = json.dumps(data) ##转换为str格式 request = requests.post(send_messages_url, data=value) ##post请求发送数据 request_result = request.status_code ##获取请求码 if request_result == 200: print "【%s】消息发送成功"%content else: print "【%s】消息发送失败"%content if __name__ == '__main__': access_token = get_access_token(get_access_token_url) send_messages(access_token,toparty,agentid,message)
3.创建报警媒介类型,尝试次数:3,尝试间隔10s
脚本参数说明: {ALERT.SENDTO} #发送给哪个部门 {ALERT.SUBJECT} #发送的标题 {ALERT.MESSAGE} #发送的内容
4.创建用户报警媒介
5.创建动作触发器
配置信息:
【项目】:豆豆打僵尸,【状态】:{TRIGGER.STATUS},【服务器】:{HOST.IP},【问题】: {TRIGGER.KEY1} 【告警项目】: 豆豆打僵尸 【告警主机】: {HOST.IP} 【告警时间】: {EVENT.DATE} {EVENT.TIME} 【告警等级】: {TRIGGER.SEVERITY} 【告警项目】: {TRIGGER.KEY1} 【问题详情】: {ITEM.NAME} {ITEM.VALUE} 【当前状态】: {TRIGGER.STATUS} {ITEM.VALUE1} 故障 【事 件 ID】: {EVENT.ID} ================================================================ 【项目】:豆豆打僵尸,【状态】:{TRIGGER.STATUS},【服务器】:{HOST.IP},【问题】: {TRIGGER.KEY1} 恢复 【恢复项目】: 豆豆打僵尸 【恢复主机】: {HOST.IP} 【告警时间】: {EVENT.DATE} {EVENT.TIME} 【恢复时间】: {EVENT.DATE} {EVENT.RECOVERY.TIME} 【恢复等级】: {TRIGGER.SEVERITY} 【恢复项目】: {TRIGGER.KEY1} 【问题恢复】: {ITEM.NAME} {ITEM.VALUE} 【当前状态】: {TRIGGER.STATUS} {ITEM.VALUE1} 恢复 【事 件 ID】: {EVENT.ID}
一些事情一直在干,说不定以后就结果了呢
本文来自博客园,作者:chenjianwen,转载请注明原文链接:https://www.cnblogs.com/chenjw-note/p/11978129.html