zabbix - 對接釘釘應用接口

在釘釘機器人未推出之前,大家還是採用的自定義的應用來實現報警,效果及配置參考如下:

wKioL1jnbHiiR25PAAJrfcmHdMU093.png

一:下載發送程序 

https://www.qiansw.com/golang-zabbix-alter-to-dingding.html  go語言

測試:

其實明白了機器人報警方式,這個方式也大致相似,只不過webhook變成了應用id

golang-zabbix-alter-to-dingding.exe -agentid=794723 -corpid=dingd6757aa75040e32b -corpsecret=z
C5Jbed9Sx8o9ZwfN4QgFo420WWlKw8NbSDYvk6Qin7gflFIIYLSeq4ZrdOVpk1o -to=manager5675 -msg="{ \"from\": \"Tomcat03\"
, \"time\": \"2016.07.28 14:45:24\", \"level\": \"Warning\", \"name\": \"Response time is too high on Tomcat03\", \"key\": \"icmppingsec
\", \"value\": \"31ms\", \"now\": \"31ms\", \"id\": \"1618\", \"ip\": \"10.139.105.107\", \"color\":\"FF4A934A\", \"age\":\"3m\", \"reco
veryTime\":\"2016.07.28 14:48:24\", \"status\":\"OK\" }"

可用 golang-zabbix-alter-to-dingding.exe -h 查看有什麼參數

-agentid string
AgentID,可以在釘釘後臺查看,不可空。
-corpid string
CorpID,可以在釘釘後臺查看,不可空。
-corpsecret string
CorpSecret,可以在釘釘後臺查看,不可空。
-msg string
Json格式的文本消息內容,不可空。 (default "{\"from\": \"網\",\"time\": \"1970-07-01 08:00:00\",\"level\": \"緊急\",\t\"name\": \"這是一個千思網(qiansw.com)提供的ZABBIX釘釘報警插件。\",\"key\": \"icmpping\",\"value\": \"Down (0)\",\"now\": \"Down (0)\",\t\"id\": \"1511\",\"ip\": \"8.8.8.8\"}")
-to string
消息的接收人,可以在釘釘後臺查看,可空。 (default "@all")
-url string
消息內容點擊後跳轉到的URL,可空。 (default "https://www.qiansw.com/golang-zabbix-alter-to-dingding.html")


1、釘釘添加應用配置

wKiom1jnbLPxw7_wAAJ88iiwAbs582.png

wKioL1jnbLTi4q3kAAIf7brE5Zk876.png


二:zabbix3.0 配置 

1、部署程序

將go腳本拷貝至服務端警告目錄AlertScriptspath下,添加執行權限。


2、創建報警媒介(以下是 json 格式,下面還有 xml 格式)

wKiom1jnbPbTATAcAANP-BC1ZG4546.png

3、添加用戶或組管理-》用戶-》報警媒介-》添加,注意填寫收件人爲我們之前設置的運維部

wKioL1jnbRGw-nr0AABsRywts-U792.png

(可參考對接機器人的配置)

4、創建動作,創建觸發發送條件

wKiom1jnbSvBTuJbAALG2gikf5M865.png

其中 "color":"FFE61A1A", color後面爲消息頭部的顏色,您可以自定義。

其中前兩位爲透明度,後六位爲顏色值,您可以通過查詢取色器來獲取這個顏色值。

報警信息
{
  "from": "{HOSTNAME1}",
  "time": "{EVENT.DATE} {EVENT.TIME}",
  "level": "{TRIGGER.SEVERITY}",
  "name": "{TRIGGER.NAME}",
  "key": "{TRIGGER.KEY1}",
  "value": "{ITEM.VALUE}",
  "now": "{ITEM.LASTVALUE}",
  "id": "{EVENT.ID}",
  "ip": "{HOST.IP}",
  "color":"FFE61A1A",
  "age":"{EVENT.AGE}",
  "status":"{EVENT.STATUS}"
}
恢復信息
{
  "from": "{HOSTNAME1}",
  "time": "{EVENT.DATE} {EVENT.TIME}",
  "level": "{TRIGGER.SEVERITY}",
  "name": "{TRIGGER.NAME}",
  "key": "{TRIGGER.KEY1}",
  "value": "{ITEM.VALUE}",
  "now": "{ITEM.LASTVALUE}",
  "id": "{EVENT.ID}",
  "ip": "{HOST.IP}",
  "color":"FF4A934A",
  "age":"{EVENT.AGE}",
  "recoveryTime":"{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}",
  "status":"{EVENT.RECOVERY.STATUS}"
}

-----------------------------------------------------------------------------------------

變更記錄 2016-08-01 21:22 增加了對xml源消息的支持,防止json格式的消息中有引號造成消息失敗的問題。 2017-01-09 13:08 增加了對消息內 url 字段支持。

2、創建報警媒介(以下是 json 格式,下面還有 xml 格式)

wKioL1jnbYDzBttmAAE6h90jrFQ239.png

3、添加用戶或組管理-》用戶-》報警媒介-》添加,注意填寫收件人爲我們之前設置的運維部

(可參考對接機器人的配置)

4、創建動作,創建觸發發送條件

報警信息
<?xml version="1.0" encoding="UTF-8" ?>
<root>
  <from>{HOSTNAME1}</from>
  <time>{EVENT.DATE} {EVENT.TIME}</time>
  <level>{TRIGGER.SEVERITY}</level>
  <name>{TRIGGER.NAME}</name>
  <key>{TRIGGER.KEY1}</key>
  <value>{ITEM.VALUE}</value>
  <now>{ITEM.LASTVALUE}</now>
  <id>{EVENT.ID}</id>
  <ip>{HOST.IP}</ip>
  <color>FFE61A1A</color>
  <url>這裏的url會替換報警媒介的url</url>
  <age>{EVENT.AGE}</age>
  <status>{EVENT.STATUS}</status>
<acknowledgement> {EVENT.ACK.STATUS} </acknowledgement>
<acknowledgementhistory> {EVENT.ACK.HISTORY}</acknowledgementhistory>
</root>
恢復信息
<?xml version="1.0" encoding="UTF-8" ?>
<root>
  <from>{HOSTNAME1}</from>
  <time>{EVENT.DATE} {EVENT.TIME}</time>
  <level>{TRIGGER.SEVERITY}</level>
  <name>{TRIGGER.NAME}</name>
  <key>{TRIGGER.KEY1}</key>
  <value>{ITEM.VALUE}</value>
  <now>{ITEM.LASTVALUE}</now>
  <id>{EVENT.ID}</id>
  <ip>{HOST.IP}</ip>
  <color>FF4A934A</color>
  <url>這裏的url會替換報警媒介的url</url>
  <age>{EVENT.AGE}</age>
  <recoveryTime>{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}</recoveryTime>
  <status>{EVENT.RECOVERY.STATUS}</status>
</root>

----------------------------------------------------------------------------------------

三:zabbix 2.4 配置

同樣如果是zabbix 2.4版的,無法直接在web端輸入golong腳本參數,我們可以類似機器人的方式寫一個shell 傳參,在告警媒介調用這個shell。

#!/bin/bash

agentid=7947xxxxxx

corpid=dingd6757axxxxxxxxx

corpsecret=xxxxxxxxxx

to=manager56xxxxxxx

/zabbix/share/zabbix/alertscripts/golang-zabbix-alter-to-dingding.exe -agentid=$agentid -corpid=$corpid -corpsecret=$corpsecret  -to=$to   -msg="$5"

您還可以創建多個報警媒介、動作中創建多個步驟,來實現消息分級。

例如:

  1. 1-10條消息僅發送給運維,11條開始也要發送給運維主管。

  2. 某類的消息發給運維的同時,還要發給DBA。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章