nagios流量监控和报警的shell脚本-创新互联
上下文:我们平台的监控系统用的是cacti+nagios。之前没有加流量异常报警设置,cacti上到是有插件可以时间报警,但是无法使用我们自己的短信接口(nagios用的购买的短信接口),所以想自己写一个脚本配合nagios实现基本的流量异常报警。

脚本思路:/proc/net/dev取出当前流经网卡的(接收和发送)的kb总数量,在检测间隔时间后再次读取这两个值,
相减既是间隔时间段内的增量,再根据此增量做计算,算出间隔时间内的平均流量,和基准流量作比较,触发nagios报警事件
局限性:我们只检测外网卡的流量,且默认em1网卡为外网卡(需根据各位实际情况自行调整)
#!/bin/bash
#by ljk
#默认第一块网卡为外网卡,检查当前系统是以eth0还是em1作为网卡一,后面会引用网卡名
interface=`ip a|grep -e "eth0" -e "em1"|awk '{print $NF}'|tail -1`
#定义存储结果的函数,以便在任何异常/正常退出前都能保存最新的记录
function tmp_store {
chmod 777 /tmp/receive /tmp/transfer &> /dev/null
#以防以root用户验证脚本时以root创建这两个文件,等nagios以nagios用户调用脚本的时候无法写入新的记录值,导致检测结果不准
cat /proc/net/dev|grep "$interface"|sed 's/^ *//g'|awk -F'[ :]+' '{print $2}' > /tmp/receive
cat /proc/net/dev|grep "$interface"|sed 's/^ *//g'|awk -F'[ :]+' '{print $10}' > /tmp/transfer
}
#将当时流量统计记录于tmp,然后由nagios调用脚本,定时(5分钟,遇异常隔5分钟再检测)采集新的统计值,
做计算统计出时间段内流量的平均值
RX_bytes_last=`cat /tmp/receive`
TX_bytes_last=`cat /tmp/transfer`
RX_bytes=`cat /proc/net/dev|grep "$interface"|sed 's/^ *//g'|awk -F'[ :]+' '{print $2}'`
TX_bytes=`cat /proc/net/dev|grep "$interface"|sed 's/^ *//g'|awk -F'[ :]+' '{print $10}'`
speed_RX=`echo "scale=0;($RX_bytes - $RX_bytes_last)*8/1024/1024/300"|bc`
#300即5分钟,nagios 每五分钟检测一次流量,统计出来的 单位为Mb
speed_TX=`echo "scale=0;($TX_bytes - $TX_bytes_last)*8/1024/1024/300"|bc`
if [ $speed_RX -gt 5 -a $speed_TX -gt 5 ];then #此处的5,是我们的基准值,各位自行调整
echo "speed_RX=$speed_RX, speed_TX=$speed_TX. both great than normal"
tmp_store;
exit 2
elif [ $speed_RX -gt 5 -o $speed_TX -gt 5 ];then
if [ $speed_RX -gt 5 ];then
echo "receive is $speed_RX Mbps, great than 5Mbps"
tmp_store;
exit 2
else
echo "transfer is $speed_TX Mbps, great than 5Mbps"
tmp_store;
exit 2
fi
else
echo "OK speed_RX=$speed_RX Mbps, speed_TX=$speed_TX Mbps"
tmp_store;
exit 0
fi另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站栏目:nagios流量监控和报警的shell脚本-创新互联
网站链接:http://www.jxjierui.cn/article/diechh.html


咨询
建站咨询
