zabbix接入百度告警詳細攻略


第一章:百度告警端配置

首先需要申請百度告警賬號,使用以下鏈接註冊百度告警賬號:

http://gaojing.baidu.com/#/register

wKioL1kVV1DwYpmmAABzvzsGL4c528.png-wh_50

輸入郵箱後,點擊驗證註冊碼,所註冊的郵箱會收到一封來自百度告警平臺的驗證碼:

wKiom1kVV1HypqrwAABpzZzuY4M681.png-wh_50

賬號註冊完成後來到登錄界面,依次分別驗證手機、短信、及微信賬號,其中微信賬號的驗證爲點擊後出現一幅二維碼,使用微信手機客戶端掃描驗證即可。

wKioL1kVV1HDvNzSAAAzopcTVxU744.png-wh_50

點擊我創建的空間,進入個人告警管理界面

wKiom1kVV1KRS_UiAAAl_m3nado947.png-wh_50

首先點擊“升級策略”,選擇新增升級策略

wKioL1kVV1KiO_2cAACkJJ1-iIo068.png-wh_50

在新增界面升級策略名稱處可隨意輸入一個策略名稱,此處使用“zabbix”,在接收人處下拉選擇個人接收。如需新增2級告警,可點擊加號新增。

wKioL1kVV1KBipIvAAA3b9pyOek566.png-wh_50

下圖解釋爲,告警發生後先微信通知兩名聯繫人,若1分鐘內無人接單,則發送短信給兩位聯繫人,若再次1分鐘內無響應,則電話通知指定聯繫人。

wKiom1kVV1OCjoDmAABRI1DUKd0451.png-wh_50

然後點擊服務管理,選擇新增服務

wKioL1kVV1OynwaRAABwRSYD8pc541.png-wh_50

服務名稱隨意輸入,接入類型選擇“zabbix_api”,默認升級策略選擇剛剛升級策略處輸入的名稱。單擊保存,生成策略。

wKiom1kVV1Twx3AlAABwWEe2gwg234.png-wh_50

然後點擊下方箭頭處,在彈出的下框中記錄下ID號及token號,之後會用到。


 

wKiom1kVV1XgE5uuAAB8nnMQfw0758.png-wh_50

至此百度告警端的配置已完全配置完成。進入下章zabbix端配置。


 

第二章:zabbix端搭建及配置1

由於個人測試使用的是zabbix官方下載的虛擬化的ovf模板搭建。省去了zabbix初期的搭建,下載地址如下:http://www.zabbix.com/download

此模板如需導入esxi需修改ovf文件,具體修改方法爲:

使用notepad++打開ovf文件,修改以下幾處,即可導入。

修改後ovf文件

<               <rasd:Caption>SCSIController</rasd:Caption>

<               <rasd:Description>SCSIController</rasd:Description>

<               <rasd:ElementName>SCSIController</rasd:ElementName>

<               <rasd:InstanceID>5</rasd:InstanceID>

<               <rasd:ResourceSubType>lsilogic</rasd:ResourceSubType>

<               <rasd:ResourceType>6</rasd:ResourceType>

修改前ovf文件

>        <rasd:Caption>sataController0</rasd:Caption>

>        <rasd:Description>SATA Controller</rasd:Description>

>        <rasd:ElementName>sataController0</rasd:ElementName>

>        <rasd:InstanceID>5</rasd:InstanceID>

>        <rasd:ResourceSubType>AHCI</rasd:ResourceSubType>

>        <rasd:ResourceType>20</rasd:ResourceType>

如需使用VMware Workstation 12 Player導入ovf,可直接導入,有告警忽視即可。

導入完成後,先在終端輸入“sudo su”命令然後輸入默認appliance密碼zabbix切換至root用戶wKioL1kVWf7zM09eAAAJUEisa88317.png

即可使用root用戶設置固定ip,文件路徑及配置內容如下wKioL1kVV1XyNPqjAAAqwgaiBOI934.png-wh_50

然後配置DNS解析,文件路徑及配置內容如下

wKiom1kVWprBg49SAAAXDmXaTCY473.png

dns配置重啓後會失效,修改如下配置文件可確保重啓服務器後DNS配置依舊生效

wKioL1kVWpqz39_xAAAJ79Lc4f0351.png

配置完成後重啓網絡服務,使其生效。

psubuntu模板默認未安裝vim,如使用vi不習慣可配置完網絡後使用“apt-getinstall vim-gtk”命令在線安裝vim

由於本人環境已擁有網閘做安全防護,顧使用如下命令關閉並刪除了防火牆

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -P OUTPUT ACCEPT

iptables -F

apt-get remove iptables

配置ubuntu的本地時區,並做同步

date –R             //查看當前時間和時區,如果大陸地區末尾不是+0800則進行以下操作,若是則可跳過本段

sudo tzselect            //選擇時區,此處選擇5Asia),然後選擇9China),1Shanghai),1Yes

sudo cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime            //將配置文件複製到本地時間目錄下

sudo ntpdate time.windows.com            //網絡同步時間

sudo hwclock –systohc                                       //將系統時間寫入硬件時間

配置php時區

備份並編輯/etc/php5/apache2/php.ini文件,修改以下部分

wKioL1kVV1bz6oJHAAAQ9KBwUEU282.png-wh_50

配置zabbix時區

備份並編輯/etc/apache2/conf-enabled/zabbix.conf文件,修改以下部分

wKiom1keQwPw_nRsAAA-dlN7mU8915.png

完成後使用如下命令,重啓apachezabbix服務

/etc/init.d/apache2 restart
/etc/init.d/zabbix-server restart

wKiom1kVV1fi-V1MAAAahrLGfgo731.png-wh_50

完成後登陸zabbix網頁端,查看網頁端時間和本地時間是否正常。

wKiom1kVW8ay3EGLAAFGajtQOCU215.png

時間正常後進入第三章。


 

第三章:zabbix端搭建及配置2

此章主要爲配置zabbix網頁端的告警轉發

首先在zabbix主頁選擇管理”——“報警媒介類型”——點擊創建媒體類型若是zabbix版本爲3.X配置如下所示:

wKioL1keQznBnjWgAAB4qXHPso0522.png

zabbix版本爲2.X則刪除腳本參數,如下圖所示即可

wKioL1kVXHejjIP2AABgx3aPVsY581.png-wh_50

登陸zabbix命令行界面,使用root用戶切換目錄至zabbix告警腳本目錄。默認路徑爲“/usr/lib/zabbix/alertscripts”,若是沒有,可使用“find / -name "zabbix_server.conf"”查找zabbix配置文件,然後搜索“AlertScript”即可查找到alertscripts的默認路徑

wKioL1kVXKLgrphcAAAXQ7W4gCY854.png

cdalertscripts目錄下,使用“vimbaidu_gaojing.sh”命令創建百度告警腳本。腳本文件如下(可參見附件):

#! /bin/bash
#
# Copyright(c) 2015 Badu.com,Inc. All Rights Reserved
# Date: 2016/01/04
# Name: Zabbix aojing proxy sender
# Version: 1.0
# Brief:
#   Format and send zabbix alerts to baidu gaojing.
# Require:
#   Bash 3.x or higher
# See:
#   Baidu Gaojing API:
#   http://help.gaojing.baidu.com/api.html
#  

# option
set -o xtrace
set -o errexit
set -o nounset

# config
# log flag, enabled when set 'TRUE' 
declare -r LOG_FLAG='TRUE' 

# const
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
LOG="${CURRENT_DIR}/gaojing_proxy_history.log"
API_URL="http://gaojing.baidu.com/event/create"

# trigger problem
function send_trigger {
    local service_id=$1
    local service_key=$2
    local status=$3
    local original_id=$4
    local description=$5

    local event_type="trigger"
    if [[ $trigger_status = "OK" ]]; then
        event_type="resolve"
    fi

    local data="{service_id : ${service_id}, original_id : ${original_id}, event_type : \"${event_type}\", description : \"${description}\"}"
    local result=`curl --silent -H "servicekey:${service_key}" -X POST -d "${data}" $API_URL`
# log request and result
    if [[ $LOG_FLAG = "TRUE" ]]; then
        echo "[INFO][$(date +'%Y-%m-%dT%H:%M:%S%z')][request:${data}][result:${result}]">>$LOG
    fi
}

# error
err() {
#log error info
    if [[ $LOG_FLAG = "TRUE" ]]; then
        echo "[ERROR][$(date +'%Y-%m-%dT%H:%M:%S%z')]: $@" >>$LOG
    fi
    exit -1
}

function main() {
    if [[ $LOG_FLAG = "TRUE" ]]; then
        echo "[INFO][$(date +'%Y-%m-%dT%H:%M:%S%z')][params:$@]">>$LOG
    fi

    if [ $# -lt 3 ]; then
        err "params num not equal to 3,zabbix action config error, params: $@"
    fi

# input args
    local send_to=$1
    local title=$2
    local content=""
    num=0
    for i in $@;
    do
        if [ $num -lt 2 ];then
            num=$(($num+1))
            echo $num
            continue
        fi
        content=$content" "$i
    done
        

# parse zabbix alert
    local service_id=$(echo ${send_to} | awk -F, '{print $1}')
    local service_key=$(echo ${send_to} | awk -F, '{print $2}')
    local trigger_status=$(echo ${title} \
            | awk -F'|' '{print $1}' \
            | awk -F':' '{print $1}')
    local event_id=$(echo ${title} \
            | awk -F'|' '{print $1}' \
            | awk -F':' '{print $2}')
    
# validate parsing
    if [[ -z $service_id ]]; then
        err "service_id parse error, params: $@"
    fi

    if [[ -z $service_key ]]; then
        err "service_key parse error, params: $@"
    fi

    if [[ -z $trigger_status ]]; then
        err "trigger_status parse error, params: $@"
    fi

    if [[ -z $event_id ]]; then
        err "event_id parse error, params: $@"
    fi

    send_trigger $service_id $service_key $trigger_status $event_id "$content"
}

main "$@"

或使用如下命令下載腳本文件至zabbix告警目錄,賦予腳本執行權限,並且將腳本文件存放的文件夾及文件夾內的文件權限均改爲“zabbix:zabbix”權限,此操作原因是告警腳本執行後會在其所在目錄生成一個名爲“gaojing_proxy_history.log”的日誌文件,若用戶及組權限不對則腳本無法執行下去告警將會發送失敗。

wgethttp://gaojing.baidu.com/doc/zabbix-help/download/gaojing_zabbix.sh -O/usr/lib/zabbix/alertscripts/gaojing_zabbix.sh

cd /usr/lib/zabbix/alertscripts

mv gaojing_zabbix.sh baidu_gaojing.sh

chmod +x baidu_gaojing.sh

cd ..

chown –R zabbix:zabbix alertscripts

完成後進去zabbix告警主界面,選擇管理”——“用戶”——“Admin”

wKiom1kVXcHz0topAABgnHtdbvc333.png

在新出窗口中單擊報警媒介

wKiom1kVXgzx2-kDAAChbRHiMHk699.png

在告警媒介處選擇“添加”然後在新彈出的報警媒介窗口中,將類型修改爲之前創建的“baidu-gaojing”,收件人輸入之前記錄的“ID,token號”使用英文逗號將其隔開。

wKioL1kVXgyCxqGhAABkVg2I7Yk869.png

最後效果如下

wKiom1kVXiiSF6vAAACwEdCADsU749.png-wh_50

然後在權限處,將所有機器的讀寫權限賦予Admin用戶

wKioL1kVX1ORuWg8AACv9XRR6BM519.png-wh_50

然後需要創建一個動作,如下圖所示,依次點擊配置”——“動作”——“創建動作

wKioL1kVX46BMLutAACYpAjvFLw764.png


動作界面中,名稱可隨意輸入,默認接收人必須按規定輸入“{TRIGGER.STATUS}:{EVENT.ID}”,默認信息可以按照需求自定義,是否需要回覆信息也可按需選擇。

wKiom1kVX47y51kOAACmXQb-N3g454.png

條件選擇默認即可

wKioL1kVX9WRWwKaAABoVjJBM9k060.png-wh_50

操作選擇界面,需選擇新增,創建新的動作操作。

wKiom1kVX9ah9IJcAABi5-4_4o8808.png-wh_50

此時需在發送到用戶處添加“Admin”管理用戶,在發送到處選擇之前新建的“baidu-gaojing”,點擊添加,完成動作的配置。

wKioL1kVX9bAtUkKAACygQq6aWg636.png-wh_50

完成後可手動觸發一個告警,比如增加磁盤使用率將其達到告警閥值,或者跑些應用將cpu內存增高之類的,測試告警是否會發送到百度告警平臺,並手機微信收到提示短信。


 

第四章  故障排錯

若微信未收到告警信息,可按照以下步驟進行排錯。

首先進入zabbix主界面在右下角最近20個問題處,查看告警是否觸發,觸發後再動作下方的1處,查看告警是否發送,若是告警已送達,則證明zabbix已將告警整合送至腳本處。

wKioL1kVYDfDEoJHAAEcmtAaIW4403.png

wKioL1kVYDfx9fLfAAFBm1qonso554.png


然後可以使用ssh登錄zabbix服務器,cd至告警腳本存放目錄“/usr/lib/zabbix/alertscripts”使用ls查看該目錄下是否生成一個log日誌文件,若無日誌文件則說明告警目錄權限並非zabbix:zabbix,只是日誌無法寫入成功,修改目錄權限即可。

wKiom1kVYLvzMvx2AAANyVrxlCY641.png

然後使用cat 查看日誌文件,若告警文件內提示“params num not equal to 3,zabbix action config error, params: 

wKioL1kVYLyygd57AAATzbHm5co477.png

則說明在網頁端的創建報警媒介界面未填寫腳本參數,按下圖將參數添加即可。

wKiom1kVYOHSAtJvAABl6t8LzOk956.jpg-wh_50

然後可以使用“tail -n 10 -f gaojing_proxy_history.log”命令實時監控該告警日誌,並且再次觸發告警,查看告警日誌內是否有內容生成,若有類似下圖的告警內容可嘗試以下步驟。

wKiom1kVYPmgONdyAAAhX_jo8B0703.png

另外,若是不希望自動生成告警日誌,可將“baidu_gaojing.sh”告警腳本中的declare -r LOG_FLAG='TRUE' 這部分語句,修改爲FALSE 來關閉告警日誌。

由於腳本採用curl命令向百度告警傳輸告警內容,所以某些精簡安裝的系統會爲安裝該命令,ubuntu下可使用apt-get install curl 來安裝curl。另外可以使用下列腳本來測試百度告警的告警接收情況,具體使用如下:

首先cdtmp目錄,新建一個名爲sendtest.sh的腳本,內容包含

#!/bin/bash

SERVICE_KEY="xxxxxxxxxxxxxxxxxxxxxxx"

SERVICE_ID=xxxx

curl -H"servicekey:$SERVICE_KEY" -X POST -d"{'service_id':$SERVICE_ID,'description':'This is the eventdescription.','event_type':'trigger'}"http://gaojing.baidu.com/event/create

 

service_key爲百度告警的token號,而service_id則爲百度告警的id號,完成後,可用“sh sendtest.sh”命令發送告警測試,幾秒後再百度告警頁面即可收到告警信息,內容爲” This is the event description.”

 

 

 

 

 

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章