Nagios監(jiān)控路由器和交換機
Nagios監(jiān)控路由器和交換機
1. 介紹
本文將介紹如何來監(jiān)控路由器和交換機的狀態(tài)。一些便宜的"無網(wǎng)管"功能的交換機與集線器不能配置IP地址而且對于網(wǎng)絡(luò)是不可見的組成構(gòu)件,因而沒辦法來監(jiān)控這種東西。稍貴些的交換機和路由器可以配置IP地址可以用PING檢測或是通過SNMP來查詢狀態(tài)信息。
2. 概覽
監(jiān)控交換機與路由器可簡可繁-主要是看擁有什么樣設(shè)備與想監(jiān)控什么內(nèi)容。做為極為重要的網(wǎng)絡(luò)組成構(gòu)件,毫無疑問至少要監(jiān)控一些基本狀態(tài)。
交換機與路由器可以簡單地用PING來監(jiān)控丟包率、RTA等數(shù)據(jù)。如果交換機支持SNMP,就可以監(jiān)控端口狀態(tài)等,用check_snmp插件,也可以監(jiān)控帶寬(如果用了MRTG),用check_mrtgtraf插件。
check_snmp插件只有當(dāng)系統(tǒng)里安裝了net-snmp和net-snmp-utils包后才編譯。先確定插件已經(jīng)在/usr/local/nagios/libexec目錄里再繼續(xù)做,如果沒有這個文件,安裝net-snmp和net-snmp-utils包并且重編譯并重新安裝Nagios插件包。
3. 步驟
要監(jiān)控交換機與路由器要有幾步工作:
第一時間執(zhí)行些必備工作;
給設(shè)備創(chuàng)建要監(jiān)控的主機與服務(wù)對象定義;
重啟動Nagios守護進程。
4. 已經(jīng)做了什么?
為了讓工作輕松點,幾個配置任務(wù)已經(jīng)做好了:
兩個命令定義(check_snmp和check_local_mrtgtraf)已經(jīng)加到了commands.cfg文件中??梢杂胏heck_snmp和check_mrtgtraf插件來監(jiān)控網(wǎng)絡(luò)打印機。
一個交換機模板(命名為generic-switch)已經(jīng)創(chuàng)建在templates.cfg文件里。可以在對象定義里更容易地加一個新的交換機與路由器設(shè)備。
以上的監(jiān)控配置文件可以在/usr/local/nagios/etc/objects/目錄里找到。如果愿意可以修改這些定義或是加入其他適合需要的更好的定義。但推薦你最好是等到你熟練地掌握了Nagios配置之后再這么做。開始的時候,只要按上述的配置來監(jiān)控網(wǎng)絡(luò)里的路由器和交換機就可以了。
5. 必備工作
要配置Nagios用于監(jiān)控網(wǎng)絡(luò)里的交換機之前,有必要做點額外工作。記住,這是首先要做的工作才能監(jiān)控。
編輯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配置文件來找些額外的對象定義。在文件里可以增加有關(guān)路由器和交換機設(shè)備的主機與服務(wù)定義。配置文件已經(jīng)包含了幾個樣本主機、主機組和服務(wù)定義。做為監(jiān)控路由器與交換機的第一步工作是最好在樣例的主機與服務(wù)對象定義之上修改而不是重建一個。
6. 配置Nagios
需要做些對象定義以監(jiān)控新的交換機與路由器設(shè)備。
打開switch.cfg文件進行編輯。
- vi /usr/local/nagios/etc/objects/switch.cfg
給要監(jiān)控的交換機加一個新的主機對象定義。如果這是第一臺要監(jiān)控的交換機設(shè)備,可以簡單地修改switch.cfg里的樣例配置。修改主機對象里的host_name、alias和address域值來適用于監(jiān)控。
- 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. 監(jiān)控服務(wù)
現(xiàn)在可以加些針對監(jiān)控交換機的服務(wù)對象定義(在同一個配置文件)。如果是第一臺要監(jiān)控的交換機設(shè)備,可以簡單地修改switch.cfg里的樣例配置。
注意:替換樣例定義里的"linksys-srw224p"主機名為你剛才定義的名字,是修改在host_name域。
8. 監(jiān)控丟包率和RTA
增加如下的服務(wù)定義以監(jiān)控自Nagios監(jiān)控主機到交換機的丟包率和平均回包周期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
- }
這個服務(wù)的狀態(tài)將會處于:
緊急(CRITICAL)-條件是RTA大于600ms或丟包率大于等于60%;
告警(WARNING)-條件是RTA大于200ms或是丟包率大于等于20%;
正常(OK)-條件是RTA小于200ms或丟包率小于20%
9. 監(jiān)控SNMP狀態(tài)信息
如果交換機與路由器支持SNMP接口,可以用check_snmp插件來監(jiān)控更豐富的信息。如果不支持SNMP,跳過此節(jié)。
加入如下服務(wù)定義到你剛才修改的交換機對象定義之中
- 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
- }
在上述服務(wù)定義中的check_command域里,用"-C public"來指定SNMP共同體名稱為"public",用"-o sysUpTime.0"指明要檢測的OID(譯者注-MIB節(jié)點值)。
如果要確保交換機上某個指定端口或接口的狀態(tài)處于運行狀態(tài),可以在對象定義里加入一段定義:
- 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狀態(tài)。"-r 1"選項是讓check_snmp插件檢查返回一個正常(OK)狀態(tài),如果是在SNMP查詢結(jié)果中存在"1"(1說明交換機端口處于運行狀態(tài))如果沒找到1就是緊急(CRITICAL)狀態(tài)。"-m RFC1213-MIB"是可選的,它告訴check_snmp插件只加載"RFC1213-MIB"庫而不是加載每個在系統(tǒng)里的MIB庫,這可以加快插件運行速度。
這就是給SNMP庫的例子。有成百上千種信息可以通過SNMP來監(jiān)控,這完全取決于你需要做什么和如果來做監(jiān)控。祝你好運!
通??梢杂萌缦旅顏韺ふ夷阆胗糜诒O(jiān)控的OID節(jié)點(用你的交換機IP替換192.168.1.253):snmpwalk -v1 -c public 192.168.1.253 -m ALL .1
10. 監(jiān)控帶寬和流量
可以監(jiān)控交換機或路由器的帶寬利用率,用MRTG繪圖并讓Nagios在流量超出指定門限時報警。check_mrtgtraf插件(它已經(jīng)包含在Nagios插件軟件發(fā)行包中)可以實現(xiàn)。
需要讓check_mrtgtraf插件知道如何來保存MRTG數(shù)據(jù)并存入文件,以及門限等。在例子中,監(jiān)控了一個Linksys交換機。MRTG日志保存于/var/lib/mrtg/192.168.1.253_1.log文件中。這就是我用于監(jiān)控的服務(wù)定義,它可以用于監(jiān)控帶寬數(shù)據(jù)到日志文件之中...
- 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"參數(shù)傳給check_local_mrtgtraf命 令意思是插件的MRTG日志文件在這個文件里讀寫,"AVG"參數(shù)的意思是取帶寬的統(tǒng)計平均值,"1000000,200000"參數(shù)是指流入的告警門限 (以字節(jié)為單位),"5000000,5000000"是輸出流量緊急狀態(tài)門限(以字節(jié)為單位),"10"是指如果MRTG日志如果超過10分鐘沒有數(shù)據(jù) 返回一個緊急狀態(tài)(應(yīng)該每5分鐘更新一次)。
保存該配置文件
11. 重啟動Nagios
一旦給switch.cfg文件里加好新的主機與服務(wù)對象定義,就可以開始對路由器與交換機進行監(jiān)控。為了開始監(jiān)控,需要先驗證配置文件再重新啟動Nagios。
如果驗證過程有有任何錯誤信息,修改配置文件再繼續(xù)。一定要保證配置驗證過程中沒有錯誤信息再啟動Nagios!
【編輯推薦】