手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Nagios 流量监控和报警的shell脚本

[日期:2016-10-20] 来源:Linux社区  作者:kai404 [字体: ]

上下文:我们平台的监控系统用的是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

--------------------------------------分割线 --------------------------------------

Ubuntu下配置Mrtg监控Nginx和服务器系统资源 http://www.linuxidc.com/Linux/2013-08/88417.htm

使用 snmp+Mrtg 监控 Linux 系统 http://www.linuxidc.com/Linux/2012-11/73561.htm

Mrtg服务器搭建(监控网络流量) http://www.linuxidc.com/Linux/2012-07/64315.htm

网络监控器Nagios全攻略 http://www.linuxidc.com/Linux/2013-07/87067.htm

Nagios搭建与配置详解 http://www.linuxidc.com/Linux/2013-05/84848.htm

Nginx环境下构建Nagios监控平台 http://www.linuxidc.com/Linux/2011-07/38112.htm

在RHEL5.3上配置基本的Nagios系统(使用Nagios-3.1.2) http://www.linuxidc.com/Linux/2011-07/38129.htm

CentOS 5.5+Nginx+Nagios监控端和被控端安装配置指南 http://www.linuxidc.com/Linux/2011-09/44018.htm

Ubuntu 13.10 Server 安装 Nagios Core 网络监控运用 http://www.linuxidc.com/Linux/2013-11/93047.htm

--------------------------------------分割线 --------------------------------------

Nagios 的详细介绍请点这里
Nagios 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-10/136221.htm

linux
相关资讯       Nagios监控  Nagios流量监控 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款