要使用短信報警最好是本身的公司有短信的接口,你在向公司開發要短信接口html
公司沒有短信接口能夠去短信報警藉助於第三方平臺,與郵件報警指定第三方的郵件服務器相似,咱們須要指定短信發送服務器,這裏咱們以中國網建SMS短信通爲例,其官網地址以下:
http://sms.webchinese.com.cn/api.shtml
網站介紹瞭如何申請註冊用戶,設定登陸密鑰,以及相關api和返回碼的使用說明,經過這個教程能夠很方便的學會如何使用腳本發送報警信息。web
我介紹是公司本身有短信接口,如何實現zabbix短信報警
要用短信來接收zabbix的報警思路過程:
一、建立一個能夠發送短信的腳本
二、要讓zabbix來調用這個腳本,和傳參方式
三、設置用戶和定義報警級別來傳參用戶數據
四、設置動做有報警就把指定的報警信息傳輸給用戶shell
查看zabbix腳本默認路徑json
vim /etc/zabbix/zabbix_server.conf
能夠在配置文件中設置腳本位置(注意在腳本文件上一個目錄必須叫alertscripts)vim
vim sendSMS.sh #!/bin/bash #version 1.1 #2018/7/24 CAT="/bin/cat" CURL="/usr/bin/curl" MOBILE_NUMBER=$1 # 手機號碼 MESSAGE_UTF8=$3 # 短信內容 MESSAGE(){ ${CAT} <<EOF { "bizType": 0, "smsContent": "$MESSAGE_UTF8", "userMobile": "$MOBILE_NUMBER" } EOF } # Send it ${CURL} -i \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ -X POST -d "$(MESSAGE)" "大家開發提供的短信接口地址"
這裏要注意的是傳參的問題,在你的開發給你接口通常是用curl命令來調用的,在curl的-d參數中是不能直接用$1的方式來調用位置函數或函數的,首先,編寫一個生成腳本後期數據的函數。 這樣能夠避免出現與shell引用相關的各類麻煩,而且能夠更輕鬆地讀取維護腳本,而不是像在嘗試中那樣在curl的調用行上提供post數據例:api
generate_post_data() { cat <<EOF { "account": { "email": "$email", "screenName": "$screenName", "type": "$theType", "passwordSettings": { "password": "$password", "passwordConfirm": "$password" } }, "firstName": "$firstName", "lastName": "$lastName", "middleName": "$middleName", "locale": "$locale" } EOF }
而後在調用curl時很容易使用該函數:bash
curl -i \ -H "Accept: application/json" \ -H "Content-Type:application/json" \ -X POST --data "$(generate_post_data)" "https://xxx:xxxxx@xxxx-www.xxxxx.com/xxxxx/xxxx/xxxx"
加上執行權限服務器
chmod +x sendSMS.sh
更改擁有人,組app
chown zabbix.zabiix sendSMS.sh
./sendSMS.sh 手機號碼11位 "" "短信內容:測試"curl
成功會收到短信
沒有短信,先看開發給的短信接口是否是能夠正常發短信,能夠就用sh -x 來調試腳本哪裏有問題
都成功了就能夠配置zabbix的控制面板了
{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
建立收件人這裏定義的就是發送到腳本的$1的內容,點擊add添加用戶
能夠選擇報警的嚴重性來發給不一樣的人,或者同一嚴重性發個多我的(中間用,號隔開)
kill掉一個agent
出現這種下圖這種問題就是你的腳本執行有問題,單獨執行看是否成功。
出現sent表示zabbix發送成功,可仍是沒有收到短信,能夠在腳本里面加上個touch一個文件,看zabbix是否有調用到腳本。在查看一下配置文件中alterscriptspath路徑和你腳本路徑是否是同樣的,腳本的上一級目錄名字是否是alterscripts,腳本的有沒有x權限,是否是屬於zabbix用的。