本文描述如何通过 Nagios 监控网络设备(例如交换机、路由器等)。监控网络设备的前提是网络设备需要有一个 IP 地址,否则 Nagios 是无法进行监控的。Nagios 可以通过 ping 监控网络设备的连通性(例如丢包和延迟);如果网络设备支持 snmp,那么还可以通过 snmp 协议监控网络设备的性能信息,流量信息。
check_snmp
插件是 Nagios 基础插件库中存在的,如果发现在安装完 Nagios 的基础插件库后没有这个插件,这说明在编译的时候这个插件并未成功编译,原因可能是没有找到其所需的库。如果是这个问题,那么安装 net-snmp 的相关环境,重新编译插件库就可以了。
运行下边命令,安装 net-snmp 的开发库
yum install net-snmp-devel net-snmp-utils
编译安装 Nagios 插件,请前往 这里。
配置过程:
在安装 Nagios 核心的过程中,已经自动生成了一个用于监控网络设备的配置文件,默认情况下核心是不加载这个配置的。因此,需要编辑核心配置文件
vi /usr/local/nagios/etc/nagios.cfg
去掉下边这行的注释
#cfg_file=/usr/local/nagios/etc/objects/switch.cfg
编辑 /usr/local/nagios/etc/objects/switch.cfg
,可以看到如下主机配置,将 address 修改为您的网络设备地址。
define host {
use generic-switch ; Inherit default values from a template
host_name linksys-srw224p ; The name we're giving to this switch
alias Linksys SRW224P Switch ; A longer name associated with the switch
address 192.168.1.253 ; IP address of the switch
hostgroups allhosts,switches ; Host groups this switch is associated with
}
generic-switch
是 Nagios 自带的一个用于监控网络设备的主机模板,相关设置可以到 /usr/local/nagios/etc/objects/templates.cfg
中查看。define service {
use generic-service
host_name linksys-srw224p
service_description PING
check_command check_ping!200.0,20%!600.0,60%
normal_check_interval 5
retry_check_interval 1
}
关于后边两个参数,之后会在其它文章详细介绍。
如果网络设备不支持 snmp 协议,此部分请略过。
define service {
use generic-service
host_name linksys-srw224p
service_description Uptime
check_command check_snmp!-C public -o sysUpTime.0
}
如果你使用 MRTG 监控交换机或路由器的带宽占用,那么就可以通过 Nagios 来进行监控报警。这里你需要设置存储 MRTG 日志的地址,Nagios 可以根据这个日志进行分析。
define service {
use generic-service ; Inherit values from a template
host_name linksys-srw224p
service_description Port 1 Bandwidth Usage
check_command check_local_mrtgtraf!/var/lib/mrtg/192.168.1.253_1.log!AVG!1000000,2000000!5000000,5000000!10
}
如上设置, /var/lib/mrtg/192.168.1.253_1.log
设置了 check_local_mrtgtraf
需要访问的日志文件;AVG
设置获取平均带宽占用数据; 1000000,2000000
定义了 WARNING 级别的报警参数,传入流量大于 1M 字节或 传出流量大于 2M 字节; 5000000,5000000
定义了 CRITICAL 级别的报警参数,传入流量大于 5M 字节或 传出流量大于 5M 字节;10
指示如果 MRTG 的日志文件没有及时更新(10分钟未更新),则触发 CRITICAL 级别的报警。
上边就是通过 Nagios 监控网络设备的基本方法,通过 snmp 协议仍然可以监控更多的信息,例如端口状态等等,并且通过社区也可以获取特定网络设备的监控插件。