您好,登錄后才能下訂單哦!
基于釘釘方式報警,網上普遍存在的是:
1、報警腳本中 使用釘釘提供的 "text" 文本方式填充內容,報警內容均為黑白字體;
2、釘釘報警彩色顯示內容,使用github上現成的二進制程序,配合xml文本,固定格式報警,程序有可能對zabbix版本有些缺陷;
基于markdown消息類型,可以實現字體彩色顯示,并且報警格式配置更加靈活,更有利于個性化定制消息
成品報警圖
釘釘報警各種文章配置大同小異,不再詳細介紹,只將步驟寫出,其他參考網絡文章即可,著重會寫出markdown類型配置。
后面用到的先在此說明:
zabbix版本: V3.4.6 zabbix腳本路徑: zabbix_server.conf 文件中 AlertScriptsPath 字段配置 webhook 是什么,機器人支持的markdown語法是什么?
https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1
zabbix web配置
1、 Administrator -- media types 增加釘釘報警類型
2、Administrator-- users 建立報警用戶
此處使用super user , 發送對象為 手機號
3、 configure -- action 添加報警動作 【重點說明:markdown 內容編輯在于此】
在 【options -- default messages】中寫入markdown語法內容,用html語法可設置字體顏色,在;
此處對應腳本中要發送的內容,內容使用zabbix內置變量即可。
<font color=#FF0000 size=6 face="黑體">事故等級: {TRIGGER.SEVERITY} </font> ##### **發生時間**: {EVENT.DATE} {EVENT.TIME} ##### **機器**: {HOST.NAME} - {HOST.IP} **問題**: {TRIGGER.NAME} **報警值**: {ITEM.VALUE}
在 option details 中 send only to 選中 設置的釘釘報警 (詳細設置參考網絡文章,略)
同理,【recovery options -- default mesages】寫入報警恢復時發送內容
**狀態**: {TRIGGER.STATUS} **機器**: {HOST.NAME} - {HOST.IP} **恢復時間**: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME} **問題**: {TRIGGER.NAME} **報警值**: {ITEM.VALUE}
以上是頁面配置中針對markdown類型的語法實例,效果見文章開頭,根據個人喜好DIY設置即可。
發送腳本基于網上的python腳本,自己做了一些修改 :
#!/usr/bin/env python # -*- coding: utf-8 -*- # https://www.aityp.com ## mobified by benson , remove config file import requests import json import sys import os import time #import configparser headers = {'Content-Type': 'application/json;charset=utf-8'} time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) log_file = "/var/log/zabbix/zabbix_dingding.log" api_url = "https://oapi.dingtalk.com/robot/send?access_token=bdd59ba55647c60ea9d63025c2af416fb9bd67d17e351430b0535d4ba55da2d2" def log(info): #注意權限,否則寫不進去日志 if os.path.isfile(log_file) == False: f = open(log_file, 'a+') f = open(log_file,'a+') f.write(info) f.close() def msg(text,user): json_text= { "msgtype": "markdown", "markdown": { "title":"zabbix monitor", "text": text }, "at": { "atMobiles": [ user ], "isAtAll": True } } r=requests.post(api_url,data=json.dumps(json_text),headers=headers).json() code = r["errcode"] if code == 0: log(time + ":消息發送成功 返回碼:" + str(code) + "\n") else: log(time + ":消息發送失敗 返回碼:" + str(code) + "\n") exit(3) if __name__ == '__main__': text = sys.argv[3] user = sys.argv[1] msg(text,user)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。