一. 釘釘機器人建立
登陸釘釘客戶端,建立一個羣,把須要收到報警信息的人員都拉到這個羣內.而後點擊羣右上角的"羣機器人"->"添加機器人"->"自定義",記錄該機器人的webhook值!web
二. Zabbix設置json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
vim /usr/local/zabbix/etc/zabbix_server.conf
AlertScriptsPath=
/usr/local/zabbix/alertscripts
登陸到
/usr/local/zabbix/alertscripts
下編寫dingding.py腳本(腳本中包含釘釘機器人的webhook值):
cd /usr/local/zabbix/alerscripts/
vim dingding.py
#!/usr/bin/env python
#coding:utf-8
#zabbix釘釘報警
import
requests,json,sys,os,datetime
webhook=
"https://oapi.dingtalk.com/robot/send?**********************************************"
user=sys.argv[1]
text=sys.argv[2]
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(
"/usr/local/zabbix/logs/dingding.log"
):
f=
open
(
"/usr/local/zabbix/logs/dingding.log"
,
"a+"
)
else
:
f=
open
(
"/usr/local/zabbix/logs/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()
建立上面腳本中的日誌路徑:
touch /usr/local/zabbix/logs/dingding.log
chown zabbix:zabbix dingding.py
chmod 777 dingding.py
chown zabbix:zabbix /usr/local/zabbix/logs/dingding.log
手動測試腳本發信是否正常:
這是條文檔記錄的測試信息,忽略
./dingding.py test 13611027803 "這是條測試信息,忽略"
===========================================================
注意:該腳本要求至少python2.6.6版本,且具備requests模塊.
不然會報錯:
Traceback (most recent call last):
File
"./dingding.py"
, line 4,
in
<module>
import
requests,json,sys,os,datetime
ImportError: No module named requests
解決辦法:
yum -y install python-pip
pip -v
pip install requests
===========================================================
|
三. Zabbix監控界面設置vim
1) 建立報警媒介. api
三個參數分別是:bash
{ALERT.SENDTO} 服務器
{ALERT.SUBJECT} app
{ALERT.MESSAGE}運維
2) 用戶添加報警媒介
收件人是釘釘上的手機號碼.這裏使用Admin管理員用戶,在Admin用戶的"報警媒介"裏添加收件人信息
特別注意:這裏只須要添加釘釘羣裏的任何一個成員的手機號碼便可,即添加一個收件人,這樣在機器人羣裏成員都能看到告警信息.
若是添加多個收件人,則機器人羣裏就會發送多個告警信息,一個收件人發一條信息. post
3) 添加動做
動做裏的報警信息和恢復信息都發送給Admin用戶.
操做:
默認標題:
服務器:{HOST.NAME}發生: {TRIGGER.NAME}故障!
消息內容:
告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
當前狀態:{TRIGGER.STATUS}
恢復操做:
默認標題:
服務器:{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}
當前的問題是: {TRIGGER.NAME}
而後進行測試,好比關閉一臺被監控機器的vsftpd服務,過一下子,查看下釘釘上的報警信息。
還能夠查看dingding.log日誌,看看告警信息發送狀況: