在zabbix报警媒介中,能够使用脚本、邮件、短信去发送告警通知,今天我们就来说一下如何利用python去发送告警通知。
1.首先我们需要查看zabbix-server配置文件中,关于存放监控脚本的目录存放在哪里?
cat zabbix_server.conf |grep -Ev "^$|[#;]"
...
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
...
那么我们就可以看到目录是存放在/usr/lib/zabbix/alertscripts
下的,那么我们就在这个目录下创建python脚本吧。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=e580dbc9d992b790f86136601d95582630afb345ebbf55b373ef5e2fdc92dd6b"
def msg(text):
json_text= {
"msgtype": "text",
"at": {
"atMobiles": [
"all"
],
"isAtAll": False
},
"text": {
"content": text
}
}
print requests.post(api_url,json.dumps(json_text),headers=headers).content
if __name__ == '__main__':
text = sys.argv[1]
msg(text)
脚本的有两点需要注意的是:
1.api_url
中使用的是自己测试用的token,那么如果你用你自己的,就需要在钉钉上面创建一个机器人;
2.atMobiles
中定义的是all
,其意味着将@钉钉群里所有人,如果你指向单独@某个人的话,可以使用手机号的方式,填写方式为"13003000000"
,多个的话需要用,
分割开,格式如下:
"atMobiles": [
"130xxxxxxxx",
"135xxxxxxxx"
],
那么当我们都配置完成后还需要做什么设置呢,我们需要在web端配置报警媒介:
第一步:打开浏览器进入到zabbix的web界面然后找到管理->报警媒介类型
第二步:设置报警媒介名称,类型选择脚本,脚本名称选择在脚本目录下一样名字的脚本名,脚本参数需要添加以下参数:
{ALERT.MESSAGE}
第三步:那我们就需要配置动作,当触发器示警度大于等于信息的时候开始报警,仅发送到脚本中
然后就可以使用python脚本正常发送告警信息了。