zabbix-3.2.11短信報警
公司沒有短信接口可以去短信報警借助於第三方平臺,與郵件報警指定第三方的郵件服務器類似,我們需要指定短信發送服務器,這裏我們以中國網建SMS短信通為例,其官網地址如下:
http://sms.webchinese.com.cn/api.shtml
網站介紹了如何申請註冊用戶,設定登錄密鑰,以及相關api和返回碼的使用說明,通過這個教程可以很方便的學會如何使用腳本發送報警信息。
我介紹是公司自己有短信接口,如何實現zabbix短信報警
要用短信來接收zabbix的報警思路過程:
1、創建一個可以發送短信的腳本
2、要讓zabbix來調用這個腳本,和傳參方式
4、設置動作有報警就把指定的報警信息傳輸給用戶
編寫短信報警的腳本
查看zabbix腳本默認路徑
vim /etc/zabbix/zabbix_server.conf
可以在配置文件中設置腳本位置(註意在腳本文件上一個目錄必須叫alertscripts)
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數據例:
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時很容易使用該函數:
curl -i -H "Accept: application/json" -H "Content-Type:application/json" -X POST --data "$(generate_post_data)" "https://xxx:[email protected]/xxxxx/xxxx/xxxx"
加上執行權限
chmod +x sendSMS.sh
更改擁有人,組
chown zabbix.zabiix sendSMS.sh
測試:
./sendSMS.sh 手機號碼11位 "" "短信內容:測試"
成功會收到短信
沒有短信,先看開發給的短信接口是不是可以正常發短信,可以就用sh -x 來調試腳本哪裏有問題
都成功了就可以配置zabbix的控制面板了
首先配置報警媒介類型選擇SMS(沒有在右上角創建)
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
在來創建用戶
創建收件人這裏定義的就是發送到腳本的$1的內容,點擊add添加用戶
可以選擇報警的嚴重性來發給不同的人,或者同一嚴重性發個多個人(中間用,號隔開)
接下來,創建報警動作的觸發器
最後測試一下
kill掉一個agent
出現這種下圖這種問題就是你的腳本執行有問題,單獨執行看是否成功。
出現sent表示zabbix發送成功,可還是沒有收到短信,可以在腳本裏面加上個touch一個文件,看zabbix是否有調用到腳本。在查看一下配置文件中alterscriptspath路徑和你腳本路徑是不是一樣的,腳本的上一級目錄名字是不是alterscripts,腳本的有沒有x權限,是不是屬於zabbix用的。
zabbix-3.2.11短信報警