Zabbix監控系統系列之十九 :基於Markdown的釘釘告警

背景信息

在之前的系列文章中,我介紹兩種不同的告警方式,大家可以參考如下傳送門:
Zabbix監控系統系列之六:EMAIL警告配置
Zabbix監控系統系列之十六:企業微信告警

EMAIL方式與企業微信都有一定侷限性,比如企業郵箱沒法通過手機查收(我們公司就是如此),企業微信告警信息過於單調等。阿里釘釘靈活度比起前兩者會更具備優勢一些。

在這裏插入圖片描述

釘釘配置

1. 釘釘機器人配置

在釘釘客戶端針對一個羣組增加自定義機器人獲得webhook字符串:
在這裏插入圖片描述

2. 釘釘腳本配置[此步驟在Zabbix Server配置]

cd /usr/lib/zabbix/alertscripts
vi dingding.py
---dingding.py腳本開始---
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import json
import sys
import os
import time

headers = {'Content-Type': 'application/json;charset=utf-8'}
time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())


log_file = "/var/log/dingding.log"
api_url = "https://oapi.dingtalk.com/robot/send access_token=09191748ebe131055fae62f154ea5399a256ccc80a05bb22d8d4ef8f90b557b8"      #說明:這裏改爲自己創建的機器人的webhook的值

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)
---dingding.py腳本結束---

# 腳本授權配置
chmod +x dingding.py
touch /var/log/dingding.log
chmod 777 /var/log/dingding.log

3. Zabbix告警媒介配置

名稱:Dingding
類型:腳本
腳本名稱:dingding.py
腳本參數:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}
在這裏插入圖片描述

4. Zabbix用戶報警媒介配置

類型:Dingding
收件人:(隨意的,腳本不關心此字段)
當啓用時:設置時間窗
如果存在嚴重性則使用:設置告警級別
在這裏插入圖片描述

5. Zabbix告警動作設置

針對釘釘告警設置專門的告警動作,其中告警操作與恢復操作可以參考如下:

<font color=#FF0000 size=6 face="黑體">監控告警通知</font>
------
**主機名稱:** {HOSTNAME1}  
**告警名稱:** {TRIGGER.NAME}  
**告警級別:** {TRIGGER.SEVERITY}  
**告警時間:** {EVENT.DATE} {EVENT.TIME}  
**檢查項:** {TRIGGER.KEY1}  
**當前值:** {ITEM.LASTVALUE}  
**IP地址:** {HOST.IP}   
**事件ID:** {EVENT.ID}

<font color=#006400 size=6 face="黑體">監控恢復通知</font>
------
**主機名稱:** {HOSTNAME1}  
**告警名稱:** {TRIGGER.NAME}  
**告警級別:** {TRIGGER.SEVERITY}  
**告警時間:** {EVENT.DATE} {EVENT.TIME}  
**恢復時間:** {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}   
**故障時長:** {EVENT.AGE}  
**檢查項:** {TRIGGER.KEY1}  
**當前值:** {EVENT.RECOVERY.VALUE}  
**IP地址:** {HOST.IP}   
**事件ID:** {EVENT.ID}

在這裏插入圖片描述

常見問題

  1. 如果出現1條釘釘告警信息重複出現多次時,請檢查腳本關聯的日誌文件是否授權正確。
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章