centos7.6實戰(zhàn)部署 zabbix4.0 通過 釘釘 發(fā)送告警信息
環(huán)境:
zabbix版本:4.0 LTS
系統(tǒng)版本:CentOS 7.6
Python版本:3.6.0
一、添加Media Types

Name:自定義的媒介名稱
Type:Scipt 腳本
Scipt name :腳本名稱
Scipt parameters : 傳遞給腳本的參數(shù)。(該參數(shù)可以在后面的Actions部分自定義)。這里我們就使用了一個內(nèi)建參數(shù){ALERT.MESSAGE}。
二、添加Users
這里我們使用已有的Admin賬戶來關(guān)聯(lián)告警媒介DingTalk


點擊添加按鈕,彈出如下:

Type:選擇前面定義的 Ding Talk
Send to : 任意填寫什么內(nèi)容。(本來這個內(nèi)容與媒介內(nèi)建變量{ALERT.SENDTO}對應(yīng),但是我們前面沒有使用就不管它。)
三、添加Actions
本部分定義發(fā)送消息的具體內(nèi)容以及在什么情況下發(fā)送消息。
這里我們選擇與Triger進(jìn)行關(guān)聯(lián),即在某些Triger觸發(fā)的情況下執(zhí)行發(fā)送動作

輸入自定義的動作名稱,添加一個新條件,這里是 觸發(fā)級別 大于等于 平均 ,記得點擊Add按鈕

操作(Operations):
標(biāo)題:服務(wù)器:{HOST.NAME}發(fā)生: {TRIGGER.NAME}故障!
內(nèi)容:
{
告警主機:{HOST.NAME}
告警信息:{TRIGGER.NAME}
告警項目:{ITEM.NAME}
告警時間:{EVENT.DATE}_{EVENT.TIME}
當(dāng)前狀態(tài):故障 值={ITEM.VALUE}
故障已持續(xù){EVENT.AGE},請盡快處理
事件ID:{EVENT.ID}
}
恢復(fù)操作 (Revovery Operations):
標(biāo)題:服務(wù)器:{HOST.NAME}: {TRIGGER.NAME}已恢復(fù)!
內(nèi)容:
{
告警信息:{TRIGGER.NAME}
告警項目:{ITEM.NAME}
告警時間:{EVENT.DATE}{EVENT.TIME}
恢復(fù)時間:{EVENT.RECOVERY.DATE}{EVENT.RECOVERY.TIME}
當(dāng)前狀態(tài):{TRIGGER.STATUS} 值={ITEM.VALUE}
故障共持續(xù){EVENT.AGE}
事件ID:{EVENT.ID}
}
確認(rèn)操作(Update Operations) :
標(biāo)題:服務(wù)器:{HOST.NAME}: 報警確認(rèn)!
內(nèi)容:
{
確認(rèn)信息:"{ACK.MESSAGE}"
服務(wù)器:{HOST.NAME}發(fā)生: {TRIGGER.NAME}故障!
確認(rèn)人:{USER.FULLNAME}
時間:{ACK.DATE} {ACK.TIME}
當(dāng)前的問題是: {TRIGGER.NAME}
時間ID:{EVENT.ID}
}
這里我們介紹Operations
設(shè)置完Default message后,點擊New添加新的條件,主要是設(shè)置告警
四、注冊釘釘
1.注冊釘釘賬戶
2.創(chuàng)建一個群。
3.創(chuàng)建機器人



記住這個webhook,后面告警腳本需要用到
五、添加告警腳本
腳本路徑在zabbix_server.conf文件里面所指定AlertScriptsPath目錄下。
腳本AlertDingTalk.py如下:
#!/usr/bin/python
#!/usr/bin/python
-- coding: utf-8 --
import requests
import json
import sys
import os
headers = {‘Content-Type’: ‘a(chǎn)pplication/json;charset=utf-8’}
api_url = “https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxx” #填入上面得到的webhook
def msg(text):
json_text= {
“msgtype”: “text”,
“text”: {
“content”: text
},
“at”: {
“atMobiles”: [
“xxxxxxxxxxxxx”
],
“isAtAll”: False
}
}
print(requests.post(api_url,json.dumps(json_text),headers=headers).content)
if name == ‘main’:
text = sys.argv[1]
msg(text)
五、測試
停掉客戶端的zabbix-agent,即可收到如下告警消息

