0 %

Zabbix监控之报警配置

2026-01-21 01:28:31

邮件报警

zabbxi 邮件告警推送有两种方式:

使用zabbix服务端的本地邮箱账号发送,邮件名为:user@hostname.localdomain,user为发送邮件的用户,hostname为zabbix-server的主机名,该邮箱只能发送,不能接收外部邮件;使用外部邮箱指定为告警发送邮箱定义发件人定义收件人测试报警信息自定义报警内容过定制报警内容: https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location

发送警告代码语言:javascript复制报警邮件标题可以使用默认信息,亦可使用如下中文报警内容

名称: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}恢复警告代码语言:javascript复制恢复标题:恢复{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}微信报警查看配置文件里的脚本目录路径代码语言:javascript复制[root@zabbix ~]# grep "^AlertScriptsPath" /etc/zabbix/zabbix_server.conf

AlertScriptsPath=/usr/lib/zabbix/alertscripts将weixin.py放在zabbix特定脚本目录代码语言:javascript复制#!/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,user,subject,content):

send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token

send_values = {

"touser":'damaiyunwei', #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。

"toparty":"2", #企业号中的部门id。

"msgtype":"text", #消息类型。

"agentid":"1000002", #企业号中的应用id。

"text":{

"content":subject + '\n' + content

},

"safe":"0"

}

# send_data = json.dumps(send_values, ensure_ascii=False)

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]) #zabbix传过来的第一个参数

subject = str(sys.argv[2]) #zabbix传过来的第二个参数

content = str(sys.argv[3]) #zabbix传过来的第三个参数

corpid = 'ww758c347e5635e284' #CorpID是企业号的标识

corpsecret = 'Sf5m6Xfu3laloq36k9mIrrpjYufGl4U61zyUApCWNcE' #corpsecretSecret是管理组凭证密钥

accesstoken = gettoken(corpid,corpsecret)

senddata(accesstoken,user,subject,content)赋予执行权限

代码语言:javascript复制[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,这个在后面步骤会有用

测试信息代码语言:javascript复制[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'}启动发送动作告警测试

Posted in 仙盟风云
Copyright © 2088 幻斗之墟最新活动_仙侠MMO官网 All Rights Reserved.
友情链接