監控軟件:zabbix
需求分析:從系統層面的監控看,現在CPU持續超過80%會報警,流量曲線達到閥值才會報警,但是流量在短時間內起伏很大,肯定是有問題的,目前主要還是依靠人看,肯定有滯后性,如果能定一個規則出來,根據短時間流量變化的百分比,判斷并發出報警提醒,就能夠提前發現業務異常或者***
一、獲取流量腳本#!/bin/bash
#
while true;do
LN=`ifstat -T 1 1 | sed -n '3p' | awk '{print $(NF-1)}'`
OUT=`ifstat -T 1 1 | sed -n '3p' | awk '{print $NF}'`
# echo $LN,$OUT
echo "$LN+$OUT" | bc > /usr/local/zabbix/net.if/totalnet.txt
done
此腳本用ifstat獲取當前流量,保存至totalnet.txt中,以便以后引用
(分析眾多獲取流量工具,最后選擇ifstat,因為其不區分網卡,具有通用性,再則數據比較容易處理)
補充:此腳本需后臺執行,同時需要安裝ifstat工具
二、流量處理腳本#!/bin/bash
#
n=`cat /usr/local/zabbix/net.if/totalnet.txt`
# echo $n
old1=`cat /usr/local/zabbix/net.if/1.txt`
old2=`cat /usr/local/zabbix/net.if/2.txt`
old3=`cat /usr/local/zabbix/net.if/3.txt`
old4=`cat /usr/local/zabbix/net.if/4.txt`
# echo $n,$old1,$old2,$old3,$old4
P1=`echo "scale=2;$n/$old1*100" | bc |awk -F. '{print $1}'`
P2=`echo "scale=2;$n/$old2*100" | bc |awk -F. '{print $1}'`
P3=`echo "scale=2;$n/$old3*100" | bc |awk -F. '{print $1}'`
# echo $P1,$P2,$P3
echo $n > /usr/local/zabbix/net.if/1.txt
echo $old1 > /usr/local/zabbix/net.if/2.txt
echo $old2 > /usr/local/zabbix/net.if/3.txt
echo $old3 > /usr/local/zabbix/net.if/4.txt
if [[ $P1 -gt $1 && $P2 -gt $1 && $P3 -gt $1 ]];then
echo 1
elif [[ $P1 -lt $2 && $P2 -lt $2 && $P3 -lt $2 ]];then
echo 1
else
echo 0
fi
此腳本從total.net中取數據,同之前三次的數據進行對比,如果比值不在預期范圍內,則返回1,否則返回0,腳本中$1 $2為預期波動范圍,可以根據實際需要在zabbix創建項目過程中指定,在觸發器定義中,可以根據返回值定義觸發條件
有不足之處,還望大家補充說明