监控ZabbixZabbix监控之报警配置
王先森邮件报警
zabbxi 邮件告警推送有两种方式:
- 使用zabbix服务端的本地邮箱账号发送,邮件名为:user@hostname.localdomain,user为发送邮件的用户,hostname为zabbix-server的主机名,该邮箱只能发送,不能接收外部邮件;
- 使用外部邮箱指定为告警发送邮箱
定义发件人
定义收件人
测试报警信息
自定义报警内容过
定制报警内容: https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location
发送警告
1 2 3 4 5 6 7 8 9 10 11
| 报警邮件标题可以使用默认信息,亦可使用如下中文报警内容 名称:Action-Email 默认标题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障! 告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
|
恢复警告
1 2 3 4 5 6 7 8 9 10
| 恢复标题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复! 恢复信息: 告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
|
微信报警
查看配置文件里的脚本目录路径
1 2
| [root@zabbix ~]# grep "^AlertScriptsPath" /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts
|
将weixin.py放在zabbix特定脚本目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
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
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,user,subject,content):
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token send_values = { "touser":'damaiyunwei', "toparty":"2", "msgtype":"text", "agentid":"1000002", "text":{ "content":subject + '\n' + content }, "safe":"0" }
send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8') print(send_data) send_request = urllib2.Request(send_url, send_data) response = json.loads(urllib2.urlopen(send_request).read()) print str(response)
if __name__ == '__main__': user = str(sys.argv[1]) subject = str(sys.argv[2]) content = str(sys.argv[3]) corpid = 'ww758c347e5635e284' corpsecret = 'Sf5m6Xfu3laloq36k9mIrrpjYufGl4U61zyUApCWNcE' accesstoken = gettoken(corpid,corpsecret) senddata(accesstoken,user,subject,content)
|
赋予执行权限
1 2 3
| [root@zabbix ~]# chmod +x /usr/lib//zabbix/alertscripts/weixin.py [root@zabbix ~]# ls /usr/lib//zabbix/alertscripts/weixin.py -l -rwxr-xr-x 1 root root 1045 Nov 17 14:51 /usr/lib//zabbix/alertscripts/weixin.py
|
配置发信人
上图脚本表示调用脚本时向脚本传入什么参数,参数解释如下
{ALTER.SENDTO} # 发送给谁,该参数在邮件告警中有作用,但微信告警中没有
{ALTER.SUBJECT} # 告警标题,该参数在邮件告警中有作用,但微信告警中没有
{ALTER.MESSAGE} # 告警内容,在微信告警中有用
配置收信人
登陆企业微信公众号添加账户
企业微信:https://work.weixin.qq.com/wework_admin/loginpage_wx
登陆后在企业号上新建应用
上传logo,填写应用名称 ,应用介绍等
查看启动应用
同时会生成应用的AgentId以及Secret,这个在后面步骤会有用
测试信息
1 2 3
| [root@zabbix tmp]# python /usr/lib//zabbix/alertscripts/weixin.py 'linuxboy' '测试信息 ' '0000000000000报警信息测试' {"text": {"content": "测试信息 \n0000000000000报警信息测试"}, "safe": "0", "msgtype": "text", "touser": "yunwei", "agentid": "1000002", "toparty": "2"} {u'invaliduser': u'yunwei', u'errcode': 0, u'errmsg': u'ok'}
|
启动发送动作
告警测试