趁着中午休息時間寫篇博吧。
最近讓我很頭疼的一件事就是公司網絡的監控,不知道該用什麼方案解決,大的網絡故障一出現,老總第一時間就問怎麼沒有監控,這鍋真的不好甩。花錢的方案有,但是作爲運維人來說不是首選。怎麼從開源領域找到一個切實可行的辦法呢?
寫腳本,全國的節點每個機房抽兩臺機器跑腳本,管理難度大;
smokeping,搭一臺,這是有必要的,但是告警不好聚合與分級,沒辦法做總的預測;
用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
腳本賦予執行權限和屬主,模板掛載需要探測的節點上,並不需要在每個節點上定義鍵值對。
模板中的項:
模板中的觸發值:
模板中的圖:
以上我們的zabbix形式的smokeping已經建立完成,下面就要用zabbix關聯觸發與平均值的方式設置主幹網的監控了。
1.每個機房分一個組,在組的基礎上設置一個丟包率平均值的it
em
2.設置這個組的警戒點
3.將幾個組的警戒點關聯在一起,都達到觸發要求的時候執行總判斷,判斷爲主幹網故障。