zabbix3.4.15用python實現釘釘機器人告警的方法

chenfeng發表於2019-01-29

zabbix伺服器監控到異常,可以通過釘釘機器人進行報警通知,具體配置如下:

釘釘機器人配置:

 需要新建一個釘釘群,群裡面新增一個機器人即可。



報警用到的python指令碼:

#cat dingding.py

#!/usr/bin/env python

#coding:utf-8

#zabbix釘釘報警

import requests,json,sys,os,datetime

webhook="https://oapi.dingtalk.com/robot/send?access_token=3dee44ff7fecfxxxxxxxxxxxxxxxxx"  --釘釘機器人webhook地址

user=sys.argv[1]

text=sys.argv[3]

data={

    "msgtype": "text",

    "text": {

        "content": text

    },

    "at": {

        "atMobiles": [

            user

        ],

        "isAtAll": False

    }

}

headers = {'Content-Type': 'application/json'}

x=requests.post(url=webhook,data=json.dumps(data),headers=headers)

if os.path.exists("/tmp/zabbix_dingding.log"):

    f=open("/tmp/zabbix_dingding.log","a+")

else:

    f=open("/tmp/zabbix_dingding.log","w+")

f.write("\n"+"--"*30)

if x.json()["errcode"] == 0:

    f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"傳送成功"+"\n"+str(text))

    f.close()

else:

    f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "傳送失敗" + "\n" + str(text))

    f.close()


備註:需要把此指令碼放到zabbix定義的指令碼執行目錄裡。

檢視zabbix裡面定義的指令碼執行目錄方法:

#cat /etc/zabbix/conf/zabbix_server.conf | grep AlertScriptsPath

### Option: AlertScriptsPath

AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts



釘釘機器人webhook地址獲取方法:

群設定--> 群機器人-->本群的機器人,選擇之前新增的機器人,然後點開,見下圖:


WEB介面上的配置:

1、配置使用者可以使用指令碼報警

使用者-->找到Admin,點開,找到報警媒介



2、建立報警媒介:

名稱  dingding

型別  指令碼

名稱  dingding.py

指令碼引數:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}



建立使用者指定報警媒介型別

管理--> 報警媒介型別-->建立媒體型別



建立觸發器傳送警告動作

配置-->動作-->建立動作




操作和恢復操作需填寫的內容如下:

標題:故障資訊!

內容:

主機名稱:{HOST.NAME}

主機地址:{HOST.IP}

主機分組:{TRIGGER.HOSTGROUP.NAME}

告警時間:{EVENT.DATE} {EVENT.TIME}

告警等級:{TRIGGER.SEVERITY}

告警專案:({EVENT.ID}){TRIGGER.KEY1}

告警資訊:{TRIGGER.NAME}

問題詳情:{ITEM.NAME}:{ITEM.VALUE}

事件狀態:{TRIGGER.STATUS}

傳送時間:{TIME}


預設標題:恢復資訊!

訊息內容:

主機名稱:{HOST.NAME}

主機地址:{HOST.IP}

主機分組:{TRIGGER.HOSTGROUP.NAME}

恢復時間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}

恢復專案:({EVENT.RECOVERY.ID}):{TRIGGER.KEY1}

恢復資訊:{TRIGGER.NAME}

恢復詳情:{ITEM.NAME}:{ITEM.VALUE}:{EVENT.RECOVERY.VALUE} 

當前狀態:{EVENT.RECOVERY.STATUS}

傳送時間:{TIME}



4、測試傳送結果

檢視告警傳送的日誌內容,status列為傳送狀態,error為錯誤提示資訊。

【報表->審計->動作->選擇時間段】

【報表->審計->動作日誌->選擇時間段】

釘釘能收到報警資訊,配置完成。

收到的告警資訊類似如下圖:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2565146/,如需轉載,請註明出處,否則將追究法律責任。

相關文章