zabbix使用釘釘告警需要准備腳本:
腳本示例(注意,使用腳本要在腳本同一級目錄下創建目錄log來存放日志文件):
#! /usr/local/bin/python3
# -*- coding: utf-8 -*-
# @Author : liuguixiang
# @Date : 2022/4/11 14:53
# Software : PyCharm
# version : Python 3.10
# @File : dingtalk.py
import sys
import requests
import json
import datetime
def dingtalk(message_title="null", message_content="null"):
try:
webhook = "https://oapi.dingtalk.com/robot/send?access_token=dsafas"
headers = {'Content-Type': 'application/json'}
data = {
"at": {},
"msgtype": "text",
"text": {
"content": f"{message_title} \n 信息: \n {message_content}\n"
},
}
re = requests.post(url=webhook, data=json.dumps(data), headers=headers)
if re.json()["errcode"] != 0:
with open("./log/dingtalk.log", mode="a") as f:
f.write(
datetime.datetime.now().strftime(
"%Y-%m-%d %H:%M:%S") + " " + "ERROR: " + f"{re.json()['errmsg']} \n")
except Exception as err:
with open("./log/dingtalk.log", mode="a") as file:
file.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " " + f"腳本錯誤: {err} \n")
message_title = sys.argv[2]
message_content = sys.argv[3]
dingtalk(message_title, message_content)
腳本放在/usr/lib/zabbix/alertscripts/目錄下,zabbix默認查找此目錄。
接下來配置zabbix,需要提前創建好監控項和觸發器。
-
添加報警媒介類型

-
填寫參數,腳本名稱必須和在服務器上的腳本名稱相同,參數分別表示發送人、標題、內容。

-
用戶添加報警媒介


-
填寫參數

-
新建動作

-
填寫名稱和條件,條件可以選擇某個具體的觸發器,或者報警等級

-
添加操作

-
選擇發送人,發送方式、消息內容

主題模板:
故障{TRIGGER.STATUS}, 服務器:{HOST.NAME}發生:{TRIGGER.NAME}故障
消息模板:
告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
告警信息:{TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
- 添加恢復操作,和上面類似。

主題模板:
服務器:{HOST.NAME}:{TRIGGER.NAME}恢復
消息模板:
告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
恢復時間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持續時間:{EVENT.AGE}
事件ID:{EVENT.ID}
當前狀態:{TRIGGER.STATUS}
- 添加更新操作,同上

主題模板:
標題:服務器:{HOST.NAME}報警確認
消息模板:
確認人:{USER.FULLNAME}
時間:{ACK.DATE} {ACK.TIME}
確認信息如下:"{ACK.MESSAGE}"
問題服務器IP:{HOSTNAME1}
問題ID:{EVENT.ID}
接下來就可以觸發警告來發送消息了。
