zabbix檢測網絡質量取代smokeping

    趁着中午休息時間寫篇博吧。

    最近讓我很頭疼的一件事就是公司網絡的監控,不知道該用什麼方案解決,大的網絡故障一出現,老總第一時間就問怎麼沒有監控,這鍋真的不好甩。花錢的方案有,但是作爲運維人來說不是首選。怎麼從開源領域找到一個切實可行的辦法呢?

  1. 寫腳本,全國的節點每個機房抽兩臺機器跑腳本,管理難度大;

  2. smokeping,搭一臺,這是有必要的,但是告警不好聚合與分級,沒辦法做總的預測;

  3. 用zabbix寫一個template替代smokeping,看好zabbix告警聚合分級功能;


    zabbix-trapper:這是一種數據傳遞方式,不同於zabbix-agent,這種方式定義的item需要使用zabbix-sender來發送數據給zabbix-server

(原文:http://wuhf2015.blog.51cto.com/8213008/1766184)

    zabbix-sender需要的參數:

    -z - 指定zabbix server的IP

    -p - 指定zabbix server的端口,默認爲10051

    -s - 指定目標主機,主機名必須是配置中的hostname而不是visible name,切記

    -k - 指定key,我們定義的trapper的key,這邊便是我們前面定義的trap

    -o - 指定要傳遞的數據


     使用fping探測各節點丟包率

    fping的參數:

    -b ping包大小

    -c ping的次數   

    -p ping間隔,單位ms


放在server端的externalscripts中的腳本:

#!/bin/bash
# 
ZBXSERVER=127.0.0.1
FPING=/usr/sbin/fping
ZBXSENDER=/usr/local/zabbix/bin/zabbix_sender
# Where to send ping
IP=$1
# How many ping to send
COUNT=$2
# What interval between ping [ms]
INTERVAL=$3
# How many bytes in one ping
BYTES=$4
# 'Hostname' of the host which will collect data
HOSTNAME=$5
if [ $# -lt 5 ]
 then
     echo
     echo " Not enough parameters"
     echo " Usage: zbxsmokeping <HOST_IP> <NUMBERS_OF_PINGS> <INTERVAL> <BYTES> <TO_WHICH_HOST_SEND_DATA_IN_ZABBIX>"
     echo " Zabbix External Check Item ex.: zbxsmokeping[{HOST.IP},6,1000,68,{HOST.HOST}]"
  exit 2
fi
# debug
#echo $FPING -b $BYTES -c $COUNT -q -p $INTERVAL $IP 2>&1
OUTPUT=`$FPING -b $BYTES -c $COUNT -q -p $INTERVAL $IP 2>&1 | awk '{print $5,$8}' | tr -d "%|," | tr -s " " "/" | awk -F"/" '{print $3,$4,$5,$6}'`
tab=($OUTPUT)
#echo ${tab[3]}
# debug
# echo $ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k PrimaryLoss -o ${tab[0]}
# echo $ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k PrimaryLatencyMin -o ${tab[1]}
# echo $ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k PrimaryLatencyMax -o ${tab[3]}
# echo $ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k PrimaryLatencyAvg -o ${tab[2]}
$ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k SmokLoos -o ${tab[0]} -v | grep  "failed: 1" &> /dev/null
$ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k SmokLatencyMin -o ${tab[1]} -v | grep  "failed: 1" &>/dev/null
$ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k SmokLatencyMax -o ${tab[3]} -v |grep  "failed: 1"  &>/dev/null
$ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k SmokLatencyAvg -o ${tab[2]} -v | grep  "failed: 1"  &>/dev/null


腳本賦予執行權限和屬主,模板掛載需要探測的節點上,並不需要在每個節點上定義鍵值對。

模板中的項:

wKioL1cYXS3S3pHlAABzcGBOznM028.jpg

模板中的觸發值:

wKiom1cYXIawuoFwAAAwBXo5TMI740.jpg


模板中的圖:

wKiom1cYXJiiCb9FAAE5kv1adPQ736.jpg


    以上我們的zabbix形式的smokeping已經建立完成,下面就要用zabbix關聯觸發與平均值的方式設置主幹網的監控了。

    1.每個機房分一個組,在組的基礎上設置一個丟包率平均值的it

wKiom1cYXp_Tmm1ZAAA8LylAwyQ783.jpgem


    2.設置這個組的警戒點

wKioL1cYX2HjZ3THAAAmNmj8GTM550.jpg


    3.將幾個組的警戒點關聯在一起,都達到觸發要求的時候執行總判斷,判斷爲主幹網故障。


wKiom1cYXqDD2zaGAABs5URiOEE114.jpg


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