分散式監控系統Zabbix-3.0.3--簡訊報警設定

散盡浮華發表於2017-08-20

 

前面已分別介紹了zabbix的郵件、微信報警設定,這些都是手機在有網路時才能收到報警資訊,那如果手機沒有網的情況下怎麼辦,這就需要考慮使用簡訊介面報警了。當服務出現故障達到預警級別是通過傳送簡訊的形式告訴運維人員,以便及時處理。公司的簡訊介面是從簡訊伺服器購買的,並經過公司開發大神調整後使用的。廢話不多贅述,下面直接記錄配置過程:

一、zabbix服務端的指令碼路徑設定

[root@zabbix ~]# cat /data/zabbix/etc/zabbix_server.conf|grep alertscripts
AlertScriptsPath=/data/zabbix/alertscripts

二、簡訊指令碼

--------------------------------------------------------------------------------------------------------
下面是開發大神給定義的一個簡訊模板,經過除錯之後給運維部門使用的:
curl -H "Content-type: application/json" -X POST 192.168.1.10:8080/sms/send/batch -d '
{
  "phones": [
    "13611789029",
    "12310703369",
    "13314466149"
  ],
  "callOrgCode": "YW1001",
  "callOrgName": "運維部門",
  "callAppCode": "WANG_OPS",
  "key": "R13-G294595Y32M24TAD60JK",
  "templateId": 6,
  "valueMap": {
   "msg": "test001伺服器出現問題!請儘快修復!" 
  }
} '

可以在命令列裡手動執行上面的介面進行發信測試,在目標手機檢視是否收到簡訊。(上面的簡訊模板需要開發人員在自己的簡訊介面平臺裡特意給我們運維部門造的)
--------------------------------------------------------------------------------------------------------

結合上面的簡訊介面,zabbix簡訊報警指令碼如下:

[root@zabbix alertscripts]# cat zabbixsend_sms.sh
#!/bin/bash
export LANG=en_US.UTF-8

PHONE=$(echo $1|sed 's/,/",\n"/g')                         #第一個變數($1)。由於多個號碼要換行,並且每行要加雙引號,故要做匹配轉換設定
#Message=$(echo $3|sed 's/:/": "/g'|sed 's/,/",\n"/g')
#Message=$(echo $3|sed 's/: /": "/g'|sed 's/,/",\n"/g')
Message=$3                                                 #第三個變數

curl -H "Content-type: application/json" -X POST 192.168.1.10:8080/sms/send/batch -d """          #公司的簡訊介面地址,這裡採用post方式
{
  \"phones\": [
    \"$PHONE\"
  ],
  \"callOrgCode\":\"YW1001\",                        
  \"callOrgName\": \"運維部門\",
  \"callAppCode\": \"WANG_OPS\",
  \"key\": \"R13-G294595Y32M24TAD60JK\",
  \"templateId\": \"6\",
  \"valueMap\": {
   \"msg\": \"$Message\"
  }
} """                                         #前後三個引號表示引號裡的內容輸入什麼就是什麼,變數引數不會被影響。

time=`date '+%F %T'`
echo "${time}  ${PHONE} $Message" >> /data/log/sendsms_`date +%Y-%m`.log

[root@zabbix alertscripts]# chmod 755 zabbixsend_sms.sh 

可以先手動執行指令碼進行發信測試:
$1是發信的手機號碼
$2是發信的主題,這個一般簡訊報警資訊裡不顯示,如下測試是"報警測試"。上面指令碼中沒有配置$2的變數
$3是發信的內容。
三個變數使用空格隔開
[root@zabbix alertscripts]# ./zabbixsend_sms.sh 13633767819 報警測試 backup01伺服器當機了!
{"totalCnt":1,"successCnt":1,"failCnt":0,"failPhones":[],"failMsg":null,"msgContent":"backup01伺服器當機了!"}

三、zabbix的web介面裡的報警設定

1)報警媒介型別設定

2)使用者的報警媒介設定

3)"動作"設定

上面的報警主題如下,這個其實在簡訊報警資訊中沒有體現,隨便定義即可。

故障{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}

手機簡訊報警截圖如下:

發信後,可以檢視zabbix的web介面裡的"報表"->“動作日誌”

相關文章