2012-09-14

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如何發展吧~~ >.<

沒有留言:

張貼留言