前面已分別介紹了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界面里的"報表"->“動作日志”

