在zabbix報(bào)警媒介中,能夠使用腳本、郵件、短信去發(fā)送告警通知,今天我們就來(lái)說(shuō)一下如何利用python去發(fā)送告警通知。
1.首先我們需要查看zabbix-server配置文件中,關(guān)于存放監(jiān)控腳本的目錄存放在哪里?
cat zabbix_server.conf |grep -Ev "^$|[#;]"
...
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
...
那么我們就可以看到目錄是存放在/usr/lib/zabbix/alertscripts下的,那么我們就在這個(gè)目錄下創(chuàng)建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)
腳本的有兩點(diǎn)需要注意的是:
1.api_url中使用的是自己測(cè)試用的token,那么如果你用你自己的,就需要在釘釘上面創(chuàng)建一個(gè)機(jī)器人;
2.atMobiles中定義的是all,其意味著將@釘釘群里所有人,如果你指向單獨(dú)@某個(gè)人的話,可以使用手機(jī)號(hào)的方式,填寫(xiě)方式為"13003000000",多個(gè)的話需要用,分割開(kāi),格式如下:
"atMobiles": [
"130xxxxxxxx",
"135xxxxxxxx"
],
那么當(dāng)我們都配置完成后還需要做什么設(shè)置呢,我們需要在web端配置報(bào)警媒介:
第一步:打開(kāi)瀏覽器進(jìn)入到zabbix的web界面然后找到管理->報(bào)警媒介類(lèi)型

image.png
第二步:設(shè)置報(bào)警媒介名稱(chēng),類(lèi)型選擇腳本,腳本名稱(chēng)選擇在腳本目錄下一樣名字的腳本名,腳本參數(shù)需要添加以下參數(shù):
{ALERT.MESSAGE}

image.png
第三步:那我們就需要配置動(dòng)作,當(dāng)觸發(fā)器示警度大于等于信息的時(shí)候開(kāi)始報(bào)警,僅發(fā)送到腳本中

image.png
然后就可以使用python腳本正常發(fā)送告警信息了。