做爲一款用途普遍的網絡監控工具,Nagios能夠監測各類網絡元件(好比路由器和交換機)的健康情況。除此以外,Nagios通過配置後,還能夠監測路由器的邊界網關協議(BGP)會話;只要現有的一個或多個BGP會話出現了什麼問題,就會發出警報。ios
如今有幾個面向Nagios的BGP監測插件工具。這些工具適用於監測路由器的關鍵BGP對等體,而且爲它們發出警報。這篇教程將解釋如何使用Nagios插件工具,監測BGP鄰居。vim
測試的平臺網絡
測試後證實,與思科ASR 1000系列路由器很是兼容。 session
測試後證實,與思科3700系列第三層交換機很是兼容。 併發
應該與其餘思科設備也能兼容。 ide
測試後測試,與Quagga路由器沒法兼容。 工具
未在JunOS上進行測試。 測試
測試的拓撲結構網站
Nagios能夠監測路由器1的全部BGP會話。BGP鄰居AS 50和AS 70對正常工做而言相當重要,因此一個單獨的腳本將用於監測這些特定的鄰居,萬一它們變得聯繫不上,就發出警報。spa
在Nagios中爲路由器1建立主機
在咱們開始入手以前,咱們將爲路由器1定義一個主機,以下所示。
# vim /etc/nagios3/conf.d/bgp-host.cfg
define host{
use generic-host
host_name router-1
alias router-1
address 100.100.100.100
}
監測路由器1的全部BGP會話
Nagios隨帶一款名爲check_bgpstate的內置工具,可使用SNMP,檢查路由器的BGP狀態。這款工具能夠手動運行,經過提供必要的參數,檢查路由器1。
# /usr/lib/nagios/plugins/check_bgpstate -c myCommunity 100.100.100.100
OK: host '100.100.100.100', sessions up: 4, down: 0, shutdown: 0
如今,咱們將在Nagios中定義一個命令,以便使用這個工具,開始監控路由器1的全部BGP會話。
# vim /etc/nagios-plugins/config/bgp.cfg
define command{
command_name check_all_bgp
command_line /usr/lib/nagios/plugins/check_bgpstate '$HOSTADDRESS$' -C '$ARG1$'
}
鑑於該命令已準備就緒,咱們將定義一個新的服務,這個服務將把該命令應用於路由器1。
# vim /etc/nagios3/conf.d/bgp-service.cfg
define service {
host_name router-1
service_description All BGP session summary
check_command check_all_bgp!myCommunity
check_interval 1
use generic-service
notification_interval 0 ; set > 0 if you want to be re-notified
}
若是須要添加額外的路由器,咱們只須要爲路由器二、路由器3等其餘路由器定義相應主機,而且將命令check_all_bgp應用於每個路由器,就像應用於路由器1那樣。
在從新啓動Nagios服務以前,經過執行一次試運行(dry run),證明全部的參數都已正確配置,以下所示。
# nagios3 -v /etc/nagios3/nagios.cfg
若是一切看起來沒問題,咱們就從新啓動Nagios服務。
# service nagios3 restart
要是一切運行順利,Nagios應該會檢查全部BGP會話的概要狀況,這能夠在Nagios門戶網站處(即http://serverIP/nagios3 > Services)進行證明。
監測路由器1的某個或某些BGP鄰居
前面的check_bgpstate工具只爲BGP會話概要(即上面3個,下面1個)提供了警報。要是檢測到任何有問題的BGP會話,用戶就須要人工登陸到路由器,檢查哪一個BGP會話出了故障。
至於關鍵的BGP鄰居(好比拓撲結構圖中提到的AS 50和AS 70),你可能想要監測個別的BGP鄰居。想讓Nagios可以監測某些BGP鄰居(好比AS 50和AS 70),併發出警報,就要使用一個名爲check_bgp的單獨腳本。
準備check_bgp腳本
check_bgp腳本(最新版本是0.4)能夠從官方網站(http://exchange.nagios.org/directory/Plugins/Network-Protocols/BGP-2D4/check_bgp/details)下載。下載該腳本後,它被拷貝到Nagios插件目錄,並改名。另外針對腳本,設置必要的權限。
# cp check_bgp.0.4.pl /usr/lib/nagios/plugins/check_bgp.pl
# chmod +x /usr/lib/nagios/plugins/check_bgp.pl
鑑於腳本已準備就緒,咱們先進行一番試運行,檢查腳本的輸出結果。
# cd /usr/lib/nagios/plugins/
# ./check_bgp.pl -H 100.100.100.100 -C myCommunity -p 50.50.50.50
OK - 50.50.50.50 (AS50) state is established(6). Established for Duration.
鑑於腳本已準備可供使用,咱們接下來配置Nagios。
準備Nagios
首先咱們在Nagios中定義一個命令,該命令會檢查某個BGP對等體。
# vim /etc/nagios-plugins/config/
define command{
command_name check_bgp
command_line /usr/lib/nagios/plugins/check_bgp.pl -H '$HOSTADDRESS$' -C '$ARG1$' -p '$ARG2$'
}
鑑於命令已定義完畢,咱們將定義兩個新的服務,它們將把該命令分別應用於AS 50和AS 70。
# vim /etc/nagios3/conf.d/bgp-service.cfg
define service {
host_name router-1
service_description BGP check with AS 50
check_command check_bgp!myCommunity!50.50.50.50
check_interval 1
use generic-service
notification_interval 0 ; set > 0 if you want to be re-notified
}
define service {
host_name router-1
service_description BGP check with AS 70
check_command check_bgp!myCommunity!70.70.70.70
check_interval 1
use generic-service
notification_interval 0 ; set > 0 if you want to be re-notified
}
在咱們從新啓動Nagios服務以前,執行一次試運行,證明全部的參數都正確配置,以下所示。
# nagios3 -v /etc/nagios3/nagios.cfg
要是一切看起來沒問題,咱們從新啓動Nagios服務。
# service nagios3 restart
Nagios應該會開始監測路由器1中的兩個BGP鄰居:AS 50和AS 70。兩個BGP對等體的狀態能夠在Nagios門戶網站(http://serverIP/nagios3 > Services)中加以覈查。要是任何一個BGP會話中出現了可疑狀況,Nagios就會發出警報。
要是一切運行順利,Nagios門戶網站中應該會顯示下面這個屏幕截圖。
希望本文有所幫助。