Nagios監控路由器和交換機
Nagios監控路由器和交換機
1. 介紹
本文將介紹如何來監控路由器和交換機的狀態。一些便宜的"無網管"功能的交換機與集線器不能配置IP地址而且對于網絡是不可見的組成構件,因而沒辦法來監控這種東西。稍貴些的交換機和路由器可以配置IP地址可以用PING檢測或是通過SNMP來查詢狀態信息。
2. 概覽
監控交換機與路由器可簡可繁-主要是看擁有什么樣設備與想監控什么內容。做為極為重要的網絡組成構件,毫無疑問至少要監控一些基本狀態。
交換機與路由器可以簡單地用PING來監控丟包率、RTA等數據。如果交換機支持SNMP,就可以監控端口狀態等,用check_snmp插件,也可以監控帶寬(如果用了MRTG),用check_mrtgtraf插件。
check_snmp插件只有當系統里安裝了net-snmp和net-snmp-utils包后才編譯。先確定插件已經在/usr/local/nagios/libexec目錄里再繼續做,如果沒有這個文件,安裝net-snmp和net-snmp-utils包并且重編譯并重新安裝Nagios插件包。
3. 步驟
要監控交換機與路由器要有幾步工作:
第一時間執行些必備工作;
給設備創建要監控的主機與服務對象定義;
重啟動Nagios守護進程。
4. 已經做了什么?
為了讓工作輕松點,幾個配置任務已經做好了:
兩個命令定義(check_snmp和check_local_mrtgtraf)已經加到了commands.cfg文件中。可以用check_snmp和check_mrtgtraf插件來監控網絡打印機。
一個交換機模板(命名為generic-switch)已經創建在templates.cfg文件里。可以在對象定義里更容易地加一個新的交換機與路由器設備。
以上的監控配置文件可以在/usr/local/nagios/etc/objects/目錄里找到。如果愿意可以修改這些定義或是加入其他適合需要的更好的定義。但推薦你最好是等到你熟練地掌握了Nagios配置之后再這么做。開始的時候,只要按上述的配置來監控網絡里的路由器和交換機就可以了。
5. 必備工作
要配置Nagios用于監控網絡里的交換機之前,有必要做點額外工作。記住,這是首先要做的工作才能監控。
編輯Nagios的主配置文件
- vi /usr/local/nagios/etc/nagios.cfg
移除文件里下面這行的最前面的(#)符號
- #cfg_file=/usr/local/nagios/etc/objects/switch.cfg
保存文件并退出。
為何要這么做?這是要讓Nagios檢查/usr/local/nagios/etc/objects/switch.cfg配置文件來找些額外的對象定義。在文件里可以增加有關路由器和交換機設備的主機與服務定義。配置文件已經包含了幾個樣本主機、主機組和服務定義。做為監控路由器與交換機的第一步工作是最好在樣例的主機與服務對象定義之上修改而不是重建一個。
6. 配置Nagios
需要做些對象定義以監控新的交換機與路由器設備。
打開switch.cfg文件進行編輯。
- vi /usr/local/nagios/etc/objects/switch.cfg
給要監控的交換機加一個新的主機對象定義。如果這是第一臺要監控的交換機設備,可以簡單地修改switch.cfg里的樣例配置。修改主機對象里的host_name、alias和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
- }
7. 監控服務
現在可以加些針對監控交換機的服務對象定義(在同一個配置文件)。如果是第一臺要監控的交換機設備,可以簡單地修改switch.cfg里的樣例配置。
注意:替換樣例定義里的"linksys-srw224p"主機名為你剛才定義的名字,是修改在host_name域。
8. 監控丟包率和RTA
增加如下的服務定義以監控自Nagios監控主機到交換機的丟包率和平均回包周期RTA,在一般情況下每5分鐘檢測一次。
- define service
- {
- use generic-service ;
- Inherit values from a template host_name linksys-srw224p ;
- The name of the host the service is associated with service_description PING ;
- The service description check_command check_ping!200.0,20%!600.0,60% ;
- The command used to monitor the service normal_check_interval 5 ;
- Check the service every 5 minutes under normal conditions retry_check_interval 1 ;
- Re-check the service every minute until its final/hard state is determined
- }
這個服務的狀態將會處于:
緊急(CRITICAL)-條件是RTA大于600ms或丟包率大于等于60%;
告警(WARNING)-條件是RTA大于200ms或是丟包率大于等于20%;
正常(OK)-條件是RTA小于200ms或丟包率小于20%
9. 監控SNMP狀態信息
如果交換機與路由器支持SNMP接口,可以用check_snmp插件來監控更豐富的信息。如果不支持SNMP,跳過此節。
加入如下服務定義到你剛才修改的交換機對象定義之中
- define service
- {
- use generic-service ;
- Inherit values from a template
- host_name linksys-srw224p
- service_description Uptime
- check_command
- check_snmp!
- -C public
- -o sysUpTime.
- 0
- }
在上述服務定義中的check_command域里,用"-C public"來指定SNMP共同體名稱為"public",用"-o sysUpTime.0"指明要檢測的OID(譯者注-MIB節點值)。
如果要確保交換機上某個指定端口或接口的狀態處于運行狀態,可以在對象定義里加入一段定義:
- define service
- {
- use generic-service ;
- Inherit values from a template
- host_name linksys-srw224p
- service_description Port 1
- Link Status check_command
- check_snmp!
- -C public
- -o ifOper
- Status.1 -r 1
- -m RFC1213-MIB
- }
在上例中,"-o ifOperStatus.1"指出取出交換機的端口編號為1的OID狀態。"-r 1"選項是讓check_snmp插件檢查返回一個正常(OK)狀態,如果是在SNMP查詢結果中存在"1"(1說明交換機端口處于運行狀態)如果沒找到1就是緊急(CRITICAL)狀態。"-m RFC1213-MIB"是可選的,它告訴check_snmp插件只加載"RFC1213-MIB"庫而不是加載每個在系統里的MIB庫,這可以加快插件運行速度。
這就是給SNMP庫的例子。有成百上千種信息可以通過SNMP來監控,這完全取決于你需要做什么和如果來做監控。祝你好運!
通常可以用如下命令來尋找你想用于監控的OID節點(用你的交換機IP替換192.168.1.253):snmpwalk -v1 -c public 192.168.1.253 -m ALL .1
10. 監控帶寬和流量
可以監控交換機或路由器的帶寬利用率,用MRTG繪圖并讓Nagios在流量超出指定門限時報警。check_mrtgtraf插件(它已經包含在Nagios插件軟件發行包中)可以實現。
需要讓check_mrtgtraf插件知道如何來保存MRTG數據并存入文件,以及門限等。在例子中,監控了一個Linksys交換機。MRTG日志保存于/var/lib/mrtg/192.168.1.253_1.log文件中。這就是我用于監控的服務定義,它可以用于監控帶寬數據到日志文件之中...
- 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命 令意思是插件的MRTG日志文件在這個文件里讀寫,"AVG"參數的意思是取帶寬的統計平均值,"1000000,200000"參數是指流入的告警門限 (以字節為單位),"5000000,5000000"是輸出流量緊急狀態門限(以字節為單位),"10"是指如果MRTG日志如果超過10分鐘沒有數據 返回一個緊急狀態(應該每5分鐘更新一次)。
保存該配置文件
11. 重啟動Nagios
一旦給switch.cfg文件里加好新的主機與服務對象定義,就可以開始對路由器與交換機進行監控。為了開始監控,需要先驗證配置文件再重新啟動Nagios。
如果驗證過程有有任何錯誤信息,修改配置文件再繼續。一定要保證配置驗證過程中沒有錯誤信息再啟動Nagios!
【編輯推薦】