监控交换机大多是监控交换机端口up/down,以及端口流量 。
监控开启状态需要snmp协议,请确保交换机及路由已开启snmp,并设置好社区集(community),监控流量需要mrtg

1、安装mrtg

yum install mrtg Perl libpng zlib


2、修改snmpd的配置,以使其允许mrtg读取其interface(网络接口) 流量数据。

vi /etc/snmp/snmpd.conf

将#view systemview included mib2

的内容修改为:

view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc

然后将

access notConfigGroup "" any noauth exact systemview none none

修改为:

access notConfigGroup "" any noauth exact mib2 none none

然后再重新启动snmpd:

/etc/rc.d/init.d/snmpd restart


3、执行如下命令创建配置文档
cfgmaker -output=/var/www/mrtg/name.cfg SNPM社区集@IP地址

例如:

cfgmaker -output=/var/www/mrtg/myswitch.cfg public@192.168.1.1


4、修改name.cfg,即myswitch.cfg,添加红色文字部分,开头不能有空格,冒号也不能少

vim /var/www/mrtg/myswitch.cfg

#  for UNIX
# WorkDir: /home/http/mrtg

WorkDir: /var/www/mrtg/


5、再执行下面的命令创建对应的端口信息
env LANG=C /usr/bin/mrtg /var/www/mrtg/name.cfg(一般需要执行两边,有时候三遍)
运行成功后ls /var/www/mrtg看看都有哪些端口的信息


6、添加到crontab中

*/5 * * * * env LANG=C /usr/bin/mrtg /var/www/mrtg/myswitch.cfg


7、添加mrtg到nagios

vim command.cfg

# 'check_local_mrtgtraf' command definition
define command{
        command_name    check_local_mrtgtraf
        command_line    $USER1$/check_mrtgtraf -F $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$ -e $ARG5$        ;-F 日志位置及名称,-a 带宽,-w 警告阀值, -c 严重警告阀值 , -e 时间,默认单位分钟
        }


8、启用nagios.cfg中的cfg_dir=/usr/local/nagios/etc/switches


9、创建、编辑nagios中的交换机配置文档

cp -p /usr/local/nagios/etc/objects/swithe.cfg /usr/local/nagios/etc/switches/myswitch.cfg

如果没有switches 就创建一个

mkdir /usr/local/nagios/etc/switches

chown nagio:nagios /usr/local/nagios/etc/switches

chmod 755 /usr/local/nagios/etc/switches


vim /usr/local/nagios/etc/switches/myrouter.cfg

# Define the switch that we'll be monitoring

define host{
        use             generic-switch          ; 调用templatles.cfg中的模板,多个模板用逗号隔开

        host_name       myswitch              ;交换机名
        parents         192.168.0.1             ; 该交换机的上级设被,多个用逗号隔开
        alias               switch                    ; 别名
        statusmap_p_w_picpath switch40.jpg   ;在拓扑图中交换机的图片
        address         192.168.1.1             ;交换机IP
        hostgroups      switches                ;所属组
        }


define service{
        use                       generic-service     ;多个模板用逗号隔开

        host_name                 myswitch         ; 多个名字用逗号隔开
        service_description        PING            ; The service description
        check_command      check_ping!200.0,20%!600.0,60%  ; ping200次,丢失20%告警,ping600次,丢失60%严重告警
        normal_check_interval     5               
        retry_check_interval          1              
        }


# Monitor uptime via SNMP

define service{
        use                               generic-service    
        host_name                   myswitch

        service_description       Uptime
        check_command           check_snmp!-C public -o sysUpTime.0    ;检查开机时长
        }


# Monitor Port 1 status via SNMP

define service{
        use                              generic-service 
        host_name                  myswitch

        service_description     port1
        check_command           check_snmp!-C public -o ifOperStatus.1005 -r 1 -m RFC1213-MIB

        检查端口1的开启状态,1表示开启,当不是1时告警
        }


# Monitor bandwidth via MRTG logs

define service{
        use                                 generic-service 
        host_name                     myswitch
        service_description        port1
        check_command           check_local_mrtgtraf!/var/www/mrtg/192.168.1.1_1001.log!AVG!20000000,20000000!17500000,17500000!10   ;检查1号端口的流量 ,2个20000000和17500000是因为带宽分为上下行
        }