標籤:nagios
方法一:
實驗思路:
第一步在commands.cfg檔案中定義你要使用的檢測命令:
vi /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name tcp60910 #命令名
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 60910 -t 60 #命令內容,該處調用到check_tcp這個指令碼 -P後面是連接埠。如果你要監控很多連接埠,就多編幾條,做示範就弄2條。 -t是逾時時間,單位是秒。 }
define command{
command_name tcp60911
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 60911 -t 60 #這裡如果不用-t也可以,預設是10秒,假如你的監控端是電信,你被監控端是網通,那麼你監控過去就會偶爾出現10秒以上,所以這個時間可以放大點,但最大是60秒。 }
再定義主機群組。
第二步定義要進行連接埠監控的主機並修改nagios.cfg檔案使nagios可以識別:
#vi /usr/local/nagios/etc/objects/hosts.cfg #注意,這個檔案本身不內建的,可以直
接VI編輯,別忘了還要去nagios.cfg裡聲明它的存在
下面是去聲明它的存在,vi /usr/local/nagios/etc/nagios.cfg
# You can specify individual object config files as shown below:
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
下面是hosts.cfg的檔案內容。
define host{
use linux-server #這裡是調用模板檔案就是templates.cfg這個裡面的linux-server模板,其實我們監控的是windows,可是我測試了下模板用windows就莫名其妙報錯,大家可以用windows-server試試
host_name ts1 #這個是定義的ts1名字,這個名字用來給下面的members調用。
alias ts1 #這個是會在網站監控按鈕上顯示的文字。
address XXX.XXX.XXX.XXX #這個是對應ts1的IP地址,就是你要監控的機器。
}
define host{
#這裡是第二台
use linux-server
host_name ts2
alias ts2
address XXX.XXX.XXX.XXX
}
define hostgroup{
hostgroup_name Ts-servers #主機群組名 Ts-servers 同樣等下要被監控服務調用。
alias Ts-Servers #這個同上面那個一個意思,用來在web頁面顯示的名字。
members ts1,ts2 #這裡就是調用上面的host_name內容,用”,"逗號分開,我這裡就2台,全部添加進去了。
}
好了,到最後一步,調用主機群組名和命令來監控服務。
第三步定義需要連接埠監控的主機要監控的連接埠:
在# vi /usr/local/nagios/etc/objects/windows.cfg配置
define service{
use generic-service #調用模板不累述。可以不調用,但你要再這直接把所有的資訊都放進去,什麼連絡人,通知各種雜七雜八的欄位都要填。直接弄個模板反正大多都是預設的,比如24X7小時監控之類的。
hostgroup_name Ts-servers #這個就是調用hosts.cfg裡的define hostgroup下的“hostgroup_name”
normal_check_interval 1 #這個是正常活動訊號間隔時間時間,就是檢測1次連接埠發現正常後下次檢測的時間。預設是1分鐘,在nagios.cfg裡有個
interval_length=60 這個是指nagios的時間單位,預設是60秒,所以這裡的1就是1分鐘。
retry_check_interval 1 #這個是不正常活動訊號間隔時間時間,就是檢測發現不正常後下次檢測的時間。
service_description port60910 #這個是描述,也是出現在web頁面上的
check_command tcp60910 #這個是調用的命令,就是一開始定義好的命令。注意此check_command後面的tcp60910要跟command.cfg檔案中定義的command_name的名稱一致。
}
下面是監控第二個連接埠,意思就不累述了。
define service{
use generic-service hostgroup_name Ts-servers normal_check_interval 1 retry_check_interval 1
service_description port60911 check_command tcp60911 }
最後重啟nagios,如果重啟失敗,請直接#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg來查看 nagios設定檔的錯誤資訊。
我上面那個不能用windows-server模板就是這麼檢測出來的,坑爹啊,那個檔案裡明明有windows模板的,就是不能用,只好用linux-server.望後來人解決之。
方法二:
第二種方法是在定義命令的時候幾個地方變一下
define command{
command_name tcp60910 #命令名 command_line $USER1$/check_tcp -H
$HOSTADDRESS$ -p $ARG1$ -t $ARG2$ #"$ARG1$"這個是變數的意思,就是你想輸什麼就輸什麼,但一定要輸對應意思的,等下下面會再說明。
}
中間主機群組和主機還是不變,最後的服務調用命令要變下
define service{
use generic-service hostgroup_name Ts-servers normal_check_interval 1 retry_check_interval 1
service_description port60911
第一個欄位是填IP的,但因為$HOSTADDRESS$是在宏裡定義好的。就是最終的host_name。方法2我沒試過,網上說可以直接忽略寫第二個欄位。大家不
妨試試。這裡就直接填了連接埠和延遲時間。
check_command tcp60911!60910!60 #原來這裡是沒參數的,直接調用的命令名,主要是因為原來定義好了參數,現在要自己寫。!號是分隔字元 }
其實我覺得方法二靈活點。由於我現在用了centreon,所以也沒直接配置nagios檔案了。其實最終效果還是一樣的
還有監控多線路HTTP頁面的方法,有機會會更新好的。
如果你要定義100台機器,那麼你只要定義好define host 然後在define hostgroup裡添加好像ts1 ts2這樣加下去就行了。
如果你既要監控windows又要監控linux,監控的種類又不相同,那麼原理還是一樣的。只要在檔案裡添加好欄位和參數就行了。
本文出自 “Anna--linux之家” 部落格,謝絕轉載!