2012-09-14

Nagios (下) NSClient++

Nagios (下) NSClient++


基本上這跟上篇的做法差不多…架構也很接近…所以說明一下…應該就可以解決了
最主是被監控狀態的主機系統為M$ Windows就必需改用NSClient++
請參考 Nagios 簡易架設

溫故而知新…是知也 >.<


仔細看圖…這是從官方文件中取出的…兩台主機之間交換資料的方式似乎沒有加密~
應該有其它方法可以發展出來~But who care~!


情況說明:抵抗不了M$的暴民,喜愛OpenSource的網管工程師A被迫

Monitor Server仍為之前身負重任的MH1(OpenSuSE11.1_32Bits),
Windows Machine就抓一台來試取名叫WM1(OS WindowsXP_SP3)

@MH1(192.168.1.1)
@WM1(192.168.1.3)



@WM1(192.168.148.131)
要在系統上安裝NSClient++,算是Agent
目前這兒是提供已封裝的.msi檔(也有zip檔可以用),點兩下進行安裝~
依照官方文件說明勾選需求1,2,3項,並修改Allowed hosts加入@MH1的IP_ADDR

127.0.0.1,192.168.148.129
兩組IP用逗號隔開
同時設定一個密碼當使用check_nt時會用到的…此處太神奇…竟然直接顯示密碼,沒有*號… >.<
(第三個可以不用裝,裝了會多check_nrpe,這東西是幹麼的…請複習上回)
(別擔心…裝完可以改設定…裝錯了可以移除重裝…裝壞可以重灌Windows >.<)


下指令檢查有無成功打開Listen Port 12489(預設的)
c:\>netstat -abn -p tcp
應該可以看到由NSClient++.exe打開的port 12489
相關設定檔放在C槽的\Program Files\NSClient++\
主設定檔為NSC.ini,可以看到剛才安裝時所設定的內容
(所以改這兒,再重啟NSClient++就不用重裝)
並且在系統服務中會出現一個叫NSClient++的服務,查看內容得知下次開機也會自己啟動

* 受監控的項目一樣要在這台改~
* Windows的防火牆要接受對port 12489的存取


@MH1(192.168.148.129)
接下來就要改MH1上的設定啦~

#vi /etc/nagios/nagios.cfg
找到這行#cfg_file=/etc/nagios/objects/windows.cfg(約在40附近),取消註解
cfg_file=/etc/nagios/objects/windows.cfg

#vi /etc/nagios/objects/windows.cfg
29行的address改成@WM1的IP_ADDR(192.168.1.3)
成為 address 192.168.1.3
define host{
                   use windows-server ; Inherit default values from a temp late
                   host_name winserver ; The name we're giving to this host
                   alias My Windows Server ; A longer name associated w ith the host
                   address 192.168.1.3 ; IP address of the host
}

上面動作不建議,雖然這樣修改比較快速,也可以直接延用下面的service與command定義
但如果受監控的M$ Windows不止有一台的話…這樣就行不通囉~

因為@WM1有設定check_nt的密碼(1234),請參照安裝畫面的圖
#vi /etc/nagios/objects/commands.cfg
找到定義command check_nt的區段加入-s 1234

define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s 1234 -v $ARG1$ $ARG2$
}


#/etc/init.d/nagios restart



連入http://192.168.1.1/nagios

Finished ~


最底下的W3SVC是檢查受監控主機(@WM1)的網頁伺服器狀況,
我沒有裝,所以有critical log~
同樣的…這台WM1主機上的其它服務也可以受到監控~改天再聊囉

出處 小蘇的世界

Nagios (中) NRPE

Nagios (中) NRPE


這回來談 Nagios 上的應用
假設想利用Nagios去監控其它主機的狀態 ~ (這也是目前最常用的情境)
總不可能每台主機都安裝完整的Nagios…這樣數量一多…管理跟監控就不是那麼簡單的事
還好 Nagios 早已存在這種架構~ 底下來看實作的部份


                                                         (圖截自官網)

 此處說明一下圖…

Monitoring Host 為負責監控的主機
Remote Linux/Unix Host 為被監控的Unix-Like主機
可以將本地資源及服務的狀態經由NRPE傳回(這叫Direct Check)
或再透過這台…檢查另一台的服務(這叫Indirect Checks),在這種情況下此台主機上的NRPE就是一種代理(Proxy)


然而監控與受監控主機可藉由SSL加密來傳輸資料~圖說明到這兒結束

– Nagios will execute the check_nrpe plugin and tell it what service needs to be checked
– The check_nrpe plugin contacts the NRPE daemon on the remote host over an (optionally) SSL-protected connection
– The NRPE daemon runs the appropriate Nagios plugin to check the service or resource
– The results from the service check are passed from the NRPE daemon back to the check_nrpe plugin, which then returns the check results to the Nagios process.


以上四行非常重要(截至官網說明文件),請先看懂,對照著圖看~

光說不練不行…~ 先說明情境~


某A是可憐網管工程師,總是從事吃力不討好的事,在公司環境中利用有限的資源架了一台監控主機OpenSuSE11.1_32Bits(代號MH1)
然後想要監控另一台Linux主機OpenSuSE11.1_32Bits(代號RH1)~於是開始動工…熬夜K完了官網上的說明文件後…得出一些心得

Root access on the remote Linux/Unix host
Access to the nagios user account on the monitoring host


這說明了兩台主機間需要使用何權限~
MH1's_IP_Addr(192.168.1.1)
RH1's_IP_Addr(192.168.1.2)

接在沒有隔開網段的設備上~

仍會以最簡單的方式來實作~ >.<
設定檔位置如果不同,請自行查找

@RH1(192.168.1.2)
#zypper install nagios-plugins
系統安裝光碟片中有提供…也可rpm進行安裝
#zypper install nagios-nrpe
此處裝完後…會發現系統上多出一個名叫nagios的使用者、與名叫nagios的群組

#zypper install xinetd
這個套件很清楚,其實就是透過xinetd來管理這個NRPE服務…
官網上文件提到可以用inetd,xinetd…或者透過其它方式(沒法透過Tcp_wrappers來做限制,不安全)
#rpm -qa | grep nagios
nagios-nrpe
nagios-plugins
nagios-nrpe-server
nagios-nrpe-client

得知RH1安裝了套件~

接下來

#vi /etc/xinetd.d/nagios-nrpe
only_from = 127.0.0.1 <MH1's_IP_Addr>
disable = no

等號左右邊空一格,每個IP間也要空一格,這是xinetd的設定檔格式規範
ex:
only_from = 127.0.0.1 192.168.1.1
也就是說從192.168.1.1(MH1)可以連到這兒~

 #grep nrpe /etc/services
nrpe 5666/tcp # nagios nrpe
如果/etc/services裡面沒這行…請自行加入…不然xinetd會啟動失敗

測試時間到…

#/etc/init.d/xinetd restart

#netstat -at
tcp 0 0 *:nrpe *:* LISTEN

成功打開TCP 5666 port ~

接下來用check_nrpe連自己…如果成功…會回傳NRPE的版本代號,並檢查自己的一些東西~
#/usr/lib/nagios/plugins/check_nrpe -H localhost

NRPE v2.12

#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_users
#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_load
#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_hda1
#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_total_procs
#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_zombie_procs


如果check_hda1錯誤是因為RH1並沒有這項裝置
#vi /etc/nagios/nrpe.cfg

Line 201 修正為 command[check_sda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1
#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_sda1

修正Firewall…加入TCP 5666的存取控制…自己弄~


@MH1(192.168.1.1)


#zypper install nagios-nrpe-server (這兒應該不用裝這個套件…但需要的check_nrpe由這提供)
#zypper install nagios-nrpe-client (提供更多的check_XXXX…裝起來備用…可以當一般指令用)

還有…別忘了…基本的nagios monitor server架設所需要的套件也要裝好~帳密也要弄好…請參考 Nagios 簡易架設

接下來比較麻煩一些…盡可能解釋清楚~

#vi /etc/nagios/objects/localhost.cfg

################################################################

171 define host{
#定義一筆host
172 use linux-server
#使用繼承至 templates.cfg的linux-server定義,該定義中的register選項表明這是template
#register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!\
173 host_name remotehost
#定義主機名稱,會顯示在nagios中的名稱
174 alias OpenSuse 11.1
#定義詳細主機名稱,會顯示在nagios中的完整名稱
175 address 192.168.148.130
#定義受監控主機的IP_ADDR
176 }
#定義結束
177 # The following service will monitor the CPU load on the remote host.
178 define service{
179 use generic-service
#使用繼承至 templates.cfg的generic-service定義
180 host_name remotehost
#使用在那個Host上,名稱相同於host定義的host_name
181 service_description CPU Load
#描述一下名稱,會出現在nagios中
182 check_command check_nrpe!check_load
#這行最重要指明使用check_nrpe,執行check_load
#可以查看/etc/nagios/nrge.cfg中的
#command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
183 }
184 # The following service will monitor the the number of currently logged in users on the remote host.
185 define service{
186 use generic-service
187 host_name remotehost
188 service_description Current Users
189 check_command check_nrpe!check_users
190 }
191 # The following service will monitor the free drive space on /dev/hda1 on the remote host.
192 define service{
193 use generic-service
194 host_name remotehost
195 service_description /dev/sda1 Free Space
196 check_command check_nrpe!check_sda1
197 }
198 # The following service will monitor the total number of processes on the remote host.199 define service{
200 use generic-service
201 host_name remotehost
202 service_description Total Processes
203 check_command check_nrpe!check_total_procs
204 }
205
206 # The following service will monitor the number of zombie processes on the remote host.
207 define service{
208 use generic-service
209 host_name remotehost
210 service_description Zombie Processes
211 check_command check_nrpe!check_zombie_procs
212 }
213 ##############################################################

重新啟動Nagios…
#/etc/init.d/nagios restart

用Browser連入 http://192.168.1.1/nagios



可以看到囉@RH1的五項狀態(cpu load,on line user,sda1 space,total process,zombie process)
如果要加其它的也可以

@RH1當中必須要有plugin

#cd /usr/lib/nagios/plugins/
#ls
#less /etc/nagios/command.cfg
(參考上面的中的用法,或者文件)
#less /etc/nagios/nrpe.cfg

ex:
此處說明在@RH1上啟動Pure-ftpd服務(自己裝),並在@MH1監控@RH1上的Pure-ftpd服務

@MH1
#vi /etc/nagios/objects/localhost.cfg
加入
define service{
use generic-service
host_name remotehost
service_description Pure-ftpd Service
check_command check_nrpe!check_ftp
}

#/etc/init.d/nagios restart

@RH1
#vi /etc/nagios/nrpe.cfg
加入
command[check_ftp]=/usr/lib/nagios/plugins/check_ftp -H 192.168.1.2
#/etc/init.d/xinetd restart


註:
@MH1只要啟動nagios服務
@RH1只要啟動nrpe服務(此處交給xinetd來管)
NRPE只能運作在Unix架構的被監控主機上
下篇再來說監控M$ Windows如何發展吧~~ >.<