1. 程式人生 > >zabbix-3.2.11短信報警

zabbix-3.2.11短信報警

roc 第三方 oca nag 更改 添加用戶 first cto pts

要使用短信報警最好是自己的公司有短信的接口,你在向公司開發要短信接口

公司沒有短信接口可以去短信報警借助於第三方平臺,與郵件報警指定第三方的郵件服務器類似,我們需要指定短信發送服務器,這裏我們以中國網建SMS短信通為例,其官網地址如下:
http://sms.webchinese.com.cn/api.shtml
網站介紹了如何申請註冊用戶,設定登錄密鑰,以及相關api和返回碼的使用說明,通過這個教程可以很方便的學會如何使用腳本發送報警信息。

我介紹是公司自己有短信接口,如何實現zabbix短信報警
要用短信來接收zabbix的報警思路過程:
1、創建一個可以發送短信的腳本
2、要讓zabbix來調用這個腳本,和傳參方式

3、設置用戶和定義報警級別來傳參用戶數據
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短信報警