Nagios 通过snmp检查网卡流量


centos安装:
检查有无安装snmp
rpm -qa|grep snmp
使用yum安装
yum install net-snmp*
检查glib版本
yum install glibc
###############
ubuntu安装 配置:
apt-get install snmpd snmp
apt-get install snmp-mibs-downloader
apt-get install gawk dc snmpd snmp snmp-mibs-downloader sysstat libssl-dev
vi /etc/snmp/snmpd.conf
把 rocommunity public  default    -V systemonly改成 rocommunity public  localhost
测试:./check_traffic.sh -V 2c -C public -H localhost -L
如果启动snmpd报错:snmpd[1544]: /etc/snmp/snmpd.conf: line 143: Error: unknown payload OID
1. Install snmpd :apt-get install snmpd
2. Ensure the multiverse repository is enabled :
apt-get install python-software-properties
add-apt-repository 'deb http://archive.ubuntu.com/ubuntu precise multiverse'
apt-get update
3. Install the snmp-mibs-downloader :apt-get install snmp-mibs-downloader
4. Edit/etc/default/snmpdand setMIBS=UCD-SNMP-MIB(this is the key fix)
5. Restart snmpd :/etc/init.d/snmpd restart
syslog中有大量 snmpd: Connection from UDP:
vi /etc/default/snmpd
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'
改成:
SNMPDOPTS='-LS3d -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'
service snmpd restart
#########################################################
community string
网络设备在使用SNMP中都设有community string,它类似于简单的口令验证机制,用来确认是否具有可读或读写的权限。许多用户在购买设备以来,从未修改系统缺省的community string,因此非授权用户使用缺省口令就可以对重要的系统信息、设备的状态等进行修改。
将"COMMUNITY"字段改为你要设置的密码.比如"public"或privatepass.
将“localhost”改为你想哪台机器可以看到你的snmp信息,如localhost或10.10.10.10。
SNMP的版本
在SNMP协议得益于重大升级,因为在1988年推出。
不幸的是,很大比例的网络内容供应商,甚至一些网络管理系统厂商都没有利用这些改进。
许多网络元素只支持SNMPv1和SNMPv2c 。 支持SNMPv3的是最小的。
版本 描述
SNMPv1 SNMPv1 ,其中实施以社区为基础的安全
SNMPv2c SNMPv2以社区为基础的安全
SNMPv2u SNMPv2与基于用户的安全
SNMPv2 SNMPv2党为基础的安全
SNMPv3安全机制 SNMPv3安全机制,而实现基于用户的安全
########################
配置snmp
 vi /etc/snmp/snmpd.conf
加入以下:
com2sec starsliao     localhost       ssssss      //添加成员,允许的源地址,密钥
group      ivggroup    v2c                starsliao    //添加组,协议,加入成员
view         mib2          included        .iso.org.dod.internet.mgmt.mib-2      fc  //添加一条权限规则
access    ivggroup     ""                   any       noauth    exact     mib2     none none   //允许组访问该权限规则
    1. #启动
    2. /usr/local/sbin/snmpd
    3. #加入启动
    4. echo '/usr/local/sbin/snmpd' >> /etc/rc.local
    5. #查看161端口是否开启
    6. netstat -ano|grep 161
    7. #测试
    8. snmpwalk -v 1 -c ssssss localhost system

snmp安装完毕
安装check_traffic脚本
下载check_traffic_v1.2.4.zip脚本
http://www.itnms.info/discuz/viewthread.php?tid=767&extra=page%3D1%26amp%3Bfilter%3Ddigest&page=1
上传./check_traffic.sh 至/usr/local/nagios/libexec
    1. cd /usr/local/nagios/libexec/
    2. chown nagios:nagios ./check_traffic.sh
    3. chmod 755 ./check_traffic.sh

用 -L选项列出对应主机所有的interface,来确定你要监控的网络接口(如果能你确认接口的index值,这一步可以省略)。
通过输出,我们确认要监控的网络接口为4,对应为"Macronix MX98715-Based Ethernet Adapter (Generic) - 数据包计划程序微型端口"
    1. ./check_traffic.sh -V 2c -C privatepass -H localhost -L

List Interface for host localhost.
Interface index 1 orresponding to lo
Interface index 2 orresponding to eth0
Interface index 3 orresponding to eth1
Interface index 4 orresponding to sit0
按照说明,选择版本为2c(一般选择1或者2c),community为privatepass,interface为2,单位为KB/s,in流量对应warning/critical值为200/400,out流量对应warning/critical值为300/500.
    1. sudo -u nagios ./check_traffic.sh -V 2c -C privatepass -H localhost -I 2 -w12,30 -c15,50 -K -b

Can not found data in the history data file.
If it's the first time for this plugins, that's OK.
Otherwise,please use debug mode and check the debug file.
##############
e.g.:
检查snmp
snmpwalk -v 2c -c starsliao localhost system
检查网络接口
./check_traffic.sh -V 2c -C starsliao -H 192.168.9.248 -L
检查流量
./check_traffic.sh -V 2c -C starsliao -H 192.168.9.248 -I 1798 -w100,400 -c200,800 -M -b -6
./check_traffic.sh -V 2c -C starsliao -H $HOSTADDRESS$ -I $ARG1$ -w $ARG2$ -c $ARG3$ -M -b -6
########
第一次执行,因为history data file不存在,因此会由此提示,可以忽略。
如果每次执行都忽略,则要检查/var/tmp下是否有/var/tmp/check_traffic_${Host}_${Interface}.hist_dat文件生成。
文件的内容是系统当前的时间,in及out当前的数值。
nagios监控本机的配置
修改/usr/local/nagios/etc/objects/commands.cfg,增下以下内容
    1. define command{
    2. command_name check_traffic_nv
    3. command_line $USER1$/check_traffic.sh -V 2c -C privatepass -H localhost -I $ARG1$ -w $ARG2$ -c $ARG3$ -M -b
    4. }

修改/usr/local/nagios/etc/objects/localhost.cfg,增下以下内容
    1. define service{
    2. use local-service,srv-pnp ; Name of service template to use
    3. host_name nagios
    4. service_description check_nv_traffic_eth0
    5. check_command check_traffic_nv!2!12,30!15,35
    6. notifications_enabled 0
    7. normal_check_interval 5 ;5分钟
    8. retry_interval 1 ;1分钟
    9. }


nagios监控远程机的配置
修改/usr/local/nagios/etc/objects/remotehost.cfg,增下以下内容
    1. define service{
    2.         use                             local-service,srv-pnp         ; Name of service template to use
    3.         host_name                       nagios
    4.         service_description             check_nv_traffic_eth0
    5.         check_command                   check_nrpe!check_traffic_nv
    6.         notifications_enabled           0
    7.         normal_check_interval           5  ;5分钟
    8. retry_interval 1   ;1分钟
    9.         }

修改/usr/local/nagios/etc/nrpe.cfg增加以下内容
    1. command[check_traffic_nv]=/usr/local/nagios/libexec/check_traffic_nv.sh -V 2c -C privatepass -H localhost -I 2 -w 12,30 -c 15,35 -M -b

访问http://localhost/nagios
点击Service Detail
点击check_nv_traffic_eth0服务旁的小太阳
等5分钟后就可以看到图表
which: no snmpwalk in (/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin)
如果check_nv_traffic_eth0服务报找不到snmpwalk.
    1. ln -s /usr/local/bin/snmpwalk /usr/bin/snmpwalk