天天看點

Zabbix5.0釘釘報警設定!/usr/bin/env pythoncoding:utf-8zabbix釘釘報警

本文基于zabbix5.0.2版本結合釘釘配置告警功能,理論适用于其他版本,配置前首先對zabbix使用熟悉,了解郵件告警原理,熟悉配置動作報警媒介。

吳昊之前也寫過zabbix郵件報警設定,原理與釘釘告警功能差不多

想要實作zabbix通過釘釘告警,我們首先建立一個釘釘告警群,在釘釘告警群中添加釘釘機器人,因為報警是通過釘釘機器人來實作的。

1、建立釘釘群,添加釘釘機器人,擷取Webhook

2、配置告警腳本

登入zabbix-server伺服器,安裝python-pip,配置py腳本

yum install python-pip

pip install requests

mkdir /etc/zabbix/alertscripts

修改/etc/zabbix/zabbix_server.conf配置檔案

vi /etc/zabbix/zabbix_server.conf

AlertScriptsPath=/etc/zabbix/alertscripts

cd /etc/zabbix/alertscripts

vi dingding.py

此py腳本來源于網絡,我這裡做了部分修改,腳本内容如下

!/usr/bin/env python

coding:utf-8

zabbix釘釘報警

import requests,json,sys,os,datetime

webhook="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxx"

log_file="/var/log/zabbix/dingding.log"

user=sys.argv[1]

text=sys.argv[3]

data={

"msgtype": "text",
"text": {
    "content": text
},
"at": {
    "atMobiles": [
        user
    ],
    "isAtAll": False #此處如果改成True則在報警的時候@所有人
}           

}

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

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

if os.path.exists(log_file):

f=open(log_file,'a+')           

else:

f=open(log_file,'w+')           

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

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

f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"發送成功"+"\n"+str(text))
f.close()           
f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"發送失敗"+"\n"+str(text))
f.close()
           

3、腳本授權

chown zabbix:zabbix /etc/zabbix/alertscripts/dingding.py

chmod 755 /etc/zabbix/alertscripts/dingding.py

4、報警功能測試

這裡的a和b是兩個任意關鍵字,whsir是釘釘自定義的關鍵詞

./dingding.py a b "whsir:測試報警功能"

5、重新整理日志權限

touch /var/log/zabbix/dingding.log

chown zabbix:zabbix /var/log/zabbix/dingding.log

6、設定報警媒介類型

在zabbix儀表盤中,選擇管理→報警媒介類型→建立媒體類型

選擇腳本類型,腳本名稱就是前面建立好的dingding.py檔案,腳本參數配置如下

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

7、給使用者設定報警媒介

在zabbix儀表盤中,選擇管理→使用者→Admin(我這裡以Admin使用者為例)→報警媒介→添加釘釘告警

注意:收件人這裡,可以填寫任意内容,也可以填寫釘釘的手機号碼,例:我的釘釘綁定的手機号是18800000000,那麼此處收件人也填寫18800000000,在報警時就會@我了。

如果想在報警的時候@所有人,需要在dingding.py裡修改"isAtAll": False為"isAtAll": True,如果修改為True了,那麼收件人這裡随便填就好了。

8、動作配置

在zabbix儀表盤中,選擇配置→動作→建立新的動作

計算方式預設即可,條件選擇需要報警的主機群組(我這裡以主機群組為例,可結合自身需求更改)

主題:故障{TRIGGER.STATUS},伺服器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!

消息:在消息首行添加關鍵詞,此關鍵詞和釘釘上的關鍵詞需保持一緻,可以使用中文名稱,告警消息内容可結合自身使用情況進行更改。

告警主機:{HOSTNAME1}

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

告警等級:{TRIGGER.SEVERITY}

告警資訊: {TRIGGER.NAME}

告警項目:{TRIGGER.KEY1}

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

目前狀态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

恢複操作也同理,在消息的首行添加釘釘的關鍵詞,可以使用中文

恢複{TRIGGER.STATUS}, 伺服器:{HOSTNAME1}: {TRIGGER.NAME}已恢複!

因為我這裡之前配置過Email報警方式,是以在這裡可以看到,同時支援釘釘和郵件兩種方式告警