«

»


06
2011

如何使用Nagios监控Cisco交换机硬件及运行状态

系统环境:Nagios 3.x + CentOS 5.6 + Cisco 4500

前提条件:
1. Cisco交换机都支持SNMP协议,只需要简单的设置即可开启,例如:snmp-server community snmppw RO。更加详细的设置请使用Google搜索“Cisco 开启 SNMP”,参考网上相关文章。

2. 在安装Nagios之前,必须已经安装Net-Utils及其开发组件。成功安装Nagios之后,再次检查libexec目录下有check_snmp命令。

系统测试:
check_snmp命令提供了详细的使用说明,只需要在Linux命令行输入 check_snmp –help即可查看帮助信息,这其中包括每一项参数的使用等。

这里以检测Cisco交换机的系统为例,示范如何使用check_snmp。交换机为Cisco 4500系列,系统描述的OID为.1.3.6.1.2.1.1.1.0

[root@wardking libexec]# ./check_snmp -H 10.241.10.1 -o .1.3.6.1.2.1.1.1.0 -C snmppw
SNMP OK – “Cisco IOS Software, Catalyst 4500 L3 Switch Software (cat4500-ENTSERV | K9-M), Version 12.2(53)SG2, RELEASE SOFTWARE (fc1)

建议用于Nagios监控的OID:
系统内存使用(5分钟内)1.3.6.1.4.1.9.9.48.1.1.1.5.1
系统可用内存(5分钟内)1.3.6.1.4.1.9.9.48.1.1.1.6.1
CPU使用率(5分钟内)1.3.6.1.4.1.9.2.1.58.0
硬件状态1.3.6.1.4.1.9.9.13

系统配置:
由于使用check_snmp检测的结果不够人性化,大部分的结果都需要重新调整。使用Perl脚本调用NET::SNMP模块,实现收集监控结果,并重新输出,更易阅读和使用。

这里引用4个从国外网站收集的脚本,check_snmp_envcheck_snmp_cisco_memutilcheck_snmp_cisco_loadavgcheck_snmp_cisco_ifstatus

请下载至nagios安装目录下的libexec子目录中,例如/usr/local/nagios/libexec,重命名去掉txt扩展名,赋予可执行权限:

[root@nagios libexec]# pwd
/usr/local/nagios/libexec
[root@nagios libexec]# chmod a+x check_snmp_cisco_* check_snmp_env -v
mode of `check_snmp_cisco_ifstatus’ retained as 0755 (rwxr-xr-x)
mode of `check_snmp_cisco_loadavg’ retained as 0755 (rwxr-xr-x)
mode of `check_snmp_cisco_memutil’ retained as 0755 (rwxr-xr-x)
mode of `check_snmp_env’ retained as 0755 (rwxr-xr-x)

剩下的工作就是follow标准流程设置监控命令,添加被监控的交换机和服务了。

编辑etc/objects/command.cfg,添加如下定义:

#Check Cisco, Extreme and Juniper hardware
define command{
command_name check_snmp_env
command_line $USER1$/check_snmp_env -H $HOSTADDRESS$ -C $ARG1$ $ARG2$
}
#Cisco SNMP device monitoring

define command{
command_name check_snmp_cisco_mem
command_line $USER1$/check_snmp_cisco_memutil -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$
}
define command{
command_name check_snmp_cisco_cpu
command_line $USER1$/check_snmp_cisco_loadavg -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$
}
define command{
command_name check_snmp_cisco_if
command_line $USER1$/check_snmp_cisco_ifstatus -H $HOSTADDRESS$ -C $ARG1$ -i $ARG2$ -w $ARG3$ -c $ARG4$
}

编辑switch.cfg加入监控的交换机配置,新增相关系统服务,例如:

define service{
use generic-service ; Inherit values from a template
host_name CAT4506E_B1_LG3_1, CAT4506E_B3_A09L_1, CAT4507R_B5_A09R_1, CAT4507R_B1_LG3_1, CAT4507R_B5_D12_1, RackSW_PDC_1, RackSW_PDC_2, RackSW_PDC_3, RackSW_PDC_4, RackSW_SDC_2, RackSW_SDC_3
service_description Environment
check_command check_snmp_env!snmppw
}
define service{
use generic-service ; Inherit values from a template
host_name CAT4507R_B5_D12_1, CAT4507R_B1_LG3_1, CAT4506E_B1_LG3_1, CAT4506E_B3_A09L_1, CAT4507R_B5_A09R_1
service_description LoadAVG
check_command check_snmp_cisco_cpu!snmppw!60!80
}
define service{
use generic-service ; Inherit values from a template
host_name CAT4507R_B5_D12_1, CAT4507R_B1_LG3_1, CAT4506E_B1_LG3_1, CAT4506E_B3_A09L_1, CAT4507R_B5_A09R_1
service_description Memutil
check_command check_snmp_cisco_mem!snmppw!70!90
}

最终监控列表:

Permanent link to this article: http://www.wardking.com/2011/06/monitoring-cisco-switch-by-nagios/

2 条评论

  1. 游客 says:

    use generic-service ; Inherit values from a template 调用的generic-service这个配置很重要啊,怎么没有贴出来哦

  2. Michael ZHANG says:

    这个generic-service是在另一个配置文件template.cfg中,安装好Nagios后自动生成的。一般情况下不需要调整。

发表评论

呢称和邮箱是必填项,您的邮箱只有管理员可见。

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>