LINUX開源監控平臺Nagios(插件的安裝和使用)

插件的安裝和使用

nagios主頁下載了最新的nagios官方插件,本文中用到的是nagios-plugins-1.4.9.tar.gz

1
  解壓

 

代碼:

tar xzf nagios-plugins-1.4.9.tar.gz

2  編譯

 

代碼:

./configure --prefix=prefix
#變量prefix 爲安裝目錄,例如/usr/local/nagios

3  安裝

 

代碼:

make
make install

4  檢查

 

代碼:

ls /usr/local/nagios/libexec

如果安裝成功的話,你可以看到在這個目錄下有很多可執行程序或者腳本,名稱類似:check_icmp

經過上述4個步驟,nagios的腳本就宣告安裝成功,但是如何讓這些腳本工作起來呢?nagios並沒有提供每個監控程序的腳本的說明文檔,想了解這些腳本如何工作的話,需要通過--h參數,顯示其使用方法和參數。例如:

 

代碼:

./check_icmp --h
Usage: check_icmp [options] [-H] host1 host2 hostn
Options:
-h, --help Print detailed help screen
-V, --version Print version information
-H specify a target -w warning threshold (currently 200.000ms,0%)
-c critical threshold (currently 500000.000ms,80%)
-n number of packets to send (currently 5)
-i max packet interval (currently 80.000ms)
-I max target interval (currently 0.000ms)
-m number of alive hosts required for success
-l TTL on outgoing packets (currently 0)
-t timeout value (seconds, currently 10)
-b icmp packet size (currenly ignored)
-v verbose
...

根據提示的方法,可以在命令行中嘗試使用一下:

 

代碼:

./check_icmp -H www.baidu.com
OK - www.baidu.com: rta 33.632ms, lost 0%|rta=33.632ms;200.000;500.000;0; pl=0%;40;80;;

可以看到狀態值“OK”,以及一些詳細的數據信息。

經過了上述實驗,說明這些插件都是可以獨立使用的,那在nagios之中,是如何調用這些插件的呢?如果要加入參數又需要用哪種格式呢?

首先,要了解這些插件會被nagios用在什麼地方。nagios有很多個cfg文件,用來定義各式各樣的信息,其中hosts.cfg services.cfg(一般是這兩個,也可能是其他定義主機和服務的配置文件)是用來定義主機和服務的信息的。這些插件就被使用在這裏。例如,我在 services.cfg中定義個一需要監控的SSH服務,名稱爲TestSSH

 

代碼:

define service {
host_name TestSSH
service_description check_ssh
……
check_command check_ssh
}

host_name 項說明該服務所在的主機名,service_description項爲服務的說明信息,這項的內容會顯示在nagios頁面中,所以要儘量簡短明確。 check_command項說明要使用的命令,這個例子中的命令check_ssh就是在一個插件了。這個服務定義,明確了nagios在需要監控的內 容和監控的手段,及用check_ssh插件來監控主機TestSSH上的ssh服務。

除了直接使用插件來做check_command項的參數以外,還可以使用自己定義的命令來。例如,我定義一個需要監控的主機,名字是test.VN

 

代碼:

define host {
host_name test.VN
alias test.VN
address 192.168.0.1
……
check_command check-host-alive
……
}

在此例中,check_command項的參數“check-host-alive”並非一個插件,而是在commands.cfg文件中定義的一個命令。其實他的本質也是插件,只不過,他把插件加工包裝了。我們來看一下在commands.cfg中對這個命令的定義:

 

代碼:

# 'check-host-alive' command definition
define command{
command_name check-host-alive
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1
}

在這個定義中,可以看到,命令名稱就定義爲“check-host-alive”,命令實際的操作定義爲藍色部分。我們對應check_ping的說明來分析一下這個操作的意圖。

check_ping
用法:

 

代碼:

check_ping -H <host_address> -w <wrta>,<wpl>% -c <crta>,<cpl>%
[-p packets] [-t timeout] [-4|-6]

首先,$USER1$這個參數在resource.cfg中定義,這個值會指向插件的目錄(如:/usr/local/nagios/libexec)。“-H $HOSTADDRESS$” 是定義目標主機的地址,這個地址在hosts.cfg中定義了(如:www.baidu.com 或者 192.168.0.1)。“-w 3000.0,80%” 其中-w說明後面的一對值對應的是“WARNING”狀態,“80%”是其臨界值。“-c 5000.0,100%” 其中“-c”說明後面的一對值對應的是" CRITICAL"“100%”是其臨界值。“-p 1”說明每次探測發送一個包。

有很多朋友問我這樣的問題,如何監聽非默認端口的服務。下面我就舉例說明一下這個問題:
例如:現需檢查的一個運行在8080端口上的http服務。那麼我們可以對commands.cfg文件中對關於check_http的聲明做如下修改(紅色部分爲添加的內容)。

 

代碼:

# 'check_http' command definition
define command{
command_name check_http
command_line $USER1$/check_http -H $HOSTADDRESS$ -p $ARG1$
}

其中$ARG1$是指在調用這個命令的時候,命令後面的第一個參數。

再把services.cfg中,對應服務的檢測命令後面加一個參數:

 

代碼:

define service {
host_name ...
...
check_command check_http!8080
}

這樣就可以對8080端口的http服務進行監控了。如果你要添加多個參數的時候,也可以類似操作。

綜上,插件的安裝和調用方法也就舉例介紹完畢了,大家在使用中也可以使用自己寫的檢測腳本來完成比較特殊的檢測功能。Enjoy
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章