需求:在zabbix服務器配置短信報警,當服務出現故障達到預警級別是通過發送短信的形式告訴運維人員,以便及時處理.
一、zabbix服務器端配置短信腳本
我的短信腳本放置位置為 /etc/zabbix/alertscripts,這個必須在/etc/zabbix/zabbix_server.conf配置文件中放開 AlertScriptsPath=/etc/zabbix/alertscripts
進入/etc/zabbix/alertscripts目錄,創建短信告警腳本sendSMS.sh,內容入下:
#!/bin/bash # 腳本的日志文件 LOGFILE="/var/log/zabbix/sms.log" :>"$LOGFILE" exec 1>"$LOGFILE" exec 2>&1 MOBILE_NUMBER=$1 # 手機號碼 MESSAGE_UTF8=$3 # 短信內容 XXD="/usr/bin/xxd" CURL="/usr/bin/curl" TIMEOUT=5 # 短信內容要經過URL編碼處理,除了下面這種方法,也可以用curl的--data-urlencode選項實現。 MESSAGE_ENCODE=$(echo "$MESSAGE_UTF8" | ${XXD} -ps | sed 's/\(..\)/%\1/g' | tr -d '\n') # SMS API 接口用戶名和秘鑰 ACCOUNT="xxx" PASS="1234xxxooxx" URL="http://10.73.17.10/msg/HttpBatchSendSM?account=${ACCOUNT}&pswd=${PASS}&mobile=${MOBILE_NUMBER}&msg=${MESSAGE_ENCODE}&needstatus=true" # Send it set -x ${CURL} -s --connect-timeout ${TIMEOUT} "${URL}"
然后執行下面的命令,設置腳本和日志文件權限:
touch /tmp/SMS.log chown zabbix:zabbix /tmp/SMS.log chown zabbix:zabbix /etc/zabbix/alertscripts/sendSMS.sh chmod +x /etc/zabbix/alertscripts/sendSMS.sh
手動測試腳本:
# /etc/zabbix/alertscripts/sendSMS.sh xxxxxxxxxxx "" "尊敬的客戶,您的訂單已出庫發貨,正在配送中,請您耐心等待。"
腳本第一個參數為手機號碼;第二個參數不會用到,設為空就行;第三個參數為短信內容。
腳本執行后,到日志文件/tmp/SMS.log里查看返回值,如果大於0代表發送成功,小於0發送失敗。
二、在zabbix web界面配置告警方式(Media types)
選擇【Administration】->【Media types】-> 【Create media type】,創建短信告警方式,如下圖:
注意:"Name"給告警方式起個名字,"Type"選擇Script類型,"Script name"填寫上面創建的腳本名.
三、配置用戶的手機號碼
選擇【Administration】->【Users】,進入用戶配置界面,在"Media"選項卡中配置用戶接收告警的手機號碼。點擊"Add",在彈出的窗口中輸入用戶手機號,見下圖:
四、配置告警動作(Action)
選擇【Configuration】->【Actions】,進入告警動作配置界面,創建新的action。
1、配置短信內容(Default message)
2、配置告警條件(Conditions)
3、配置告警接收人(Action operations)
參考文檔:http://www.sxt.cn/u/756/blog/3198