Zabbix实现Linux流量变化率监控

监控软件: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创建项目过程中指定,在触发器定义中,可以根据返回值定义触发条件

有不足之处,还望大家补充说明。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5f04ccddb148b1b39052c77e46289795.html