Nagios功能之監(jiān)控windows的本地信息
Nagios功能之監(jiān)控windows的本地信息的操作過(guò)程有點(diǎn)煩躁,但是很容易學(xué),來(lái)看看!
圖-Nagios
如何監(jiān)控windows系統(tǒng)的”本地信息”
在nagios2.x系列里面,文檔里面對(duì)于windows服務(wù)器的監(jiān)控相關(guān)說(shuō)明較少,剛到nagios主頁(yè)上看到3.x的文檔里面有一篇講監(jiān)控windows的([url]http://nagios.sourceforge.net/docs/3_0/monitoring-windows.html[/url]
),我就仿照過(guò)來(lái),對(duì)它略作修改來(lái)應(yīng)用到我們當(dāng)前的nagios2.9上去.(畢竟3.x還是測(cè)試版,2.9是最新的穩(wěn)定版,用起來(lái)放心啊)
細(xì)心的朋友可能注意到了,在nagios的libexec下有check_nt這個(gè)插件,它就是用來(lái)檢查windows機(jī)器的服務(wù)的,其功能類(lèi)似于上一章講的check_nrpe.不過(guò)還需要搭配另外一個(gè)軟件NSClient,它則類(lèi)似于NRPE
NSClient的原理如下圖

可以看到,NSClient與nrpe最大的區(qū)別就是:
--被監(jiān)控機(jī)上安裝有nrpe,并且還有插件,最終的監(jiān)控是由這些插件來(lái)進(jìn)行的.當(dāng)監(jiān)控主機(jī)將監(jiān)控請(qǐng)求發(fā)給nrpe后,nrpe調(diào)用插件來(lái)完成監(jiān)控.
--NSClient則不同,被監(jiān)控機(jī)上只安裝NSClient,沒(méi)有任何的插件.當(dāng)監(jiān)控主機(jī)將監(jiān)控請(qǐng)求發(fā)給NSClient后,NSClient直接完成監(jiān)控,所有的監(jiān)控是由NSClient完成的.
這也說(shuō)明了NSClient的一個(gè)很大的問(wèn)題,不靈活,沒(méi)有可擴(kuò)展性.它只能完成自己本身包含的監(jiān)控操作,不能由一些插件來(lái)擴(kuò)展.好在NSClient已經(jīng)做的不錯(cuò)了,基本上可以完全滿足我們的監(jiān)控需要.
#p#
安裝NSClient
從[url]http://sourceforge.net/projects/nscplus[/url]下載NSClient++-0.2.7.zip
解壓為C:\NSClient++
打開(kāi)cmd 切換到C:\NSClient++
執(zhí)行nsclient++ /install進(jìn)行安裝

執(zhí)行nsclient++ SysTray 注意大小寫(xiě),這一步是安裝系統(tǒng)托盤(pán),時(shí)間稍微有點(diǎn)長(zhǎng)

在運(yùn)行里面輸入services.msc打開(kāi)”服務(wù)”

看到下圖就說(shuō)明NSClient服務(wù)已經(jīng)安裝上了

雙擊打開(kāi),點(diǎn)”登錄”標(biāo)簽,在”允許服務(wù)與桌面交互”前打勾

編輯C:\NSClient++下的NSC.ini文件
將 [modules]部分的所有模塊前面的注釋都去掉,除了CheckWMI.dll and RemoteConfiguration.dll這兩個(gè)
在[Settings]部分設(shè)置'password'選項(xiàng)來(lái)設(shè)置密碼,作用是在nagios連接過(guò)來(lái)時(shí)要求提供密碼.這一步是可選的,我這里方便起見(jiàn)跳過(guò)它,不要密碼.
將[Settings]部分'allowed_hosts'選項(xiàng)的注釋去掉,并且加上運(yùn)行nagios的監(jiān)控主機(jī)的IP.我改為如下這樣allowed_hosts=127.0.0.1/32,192.168.0.111 以逗號(hào)相隔.這個(gè)地方是支持子網(wǎng)的,如果寫(xiě)成192.168.0.0/24則表示該子網(wǎng)內(nèi)的所有機(jī)器都可以訪問(wèn).如果這個(gè)地方是空白則表示所有的主機(jī)都可以連接上來(lái).注意是[Settings]部分的,因?yàn)閇NSClient]部分也有這個(gè)選項(xiàng).
必須保證[NSClient]的'port'選項(xiàng)并沒(méi)有被注釋,并且它的值是'12489',這是NSClient的默認(rèn)監(jiān)聽(tīng)端口
在CMD中執(zhí)行nsclient++ /start啟動(dòng)服務(wù),注意所在目錄是C:\NSClient++

這時(shí)在桌面右下角的系統(tǒng)托盤(pán)處會(huì)出現(xiàn)一個(gè)黃色的M字樣的圖標(biāo)

查看服務(wù)

已經(jīng)正常啟動(dòng)了.注意服務(wù)默認(rèn)設(shè)的是”自動(dòng)”,也就是說(shuō)是開(kāi)機(jī)自動(dòng)啟動(dòng)的.
在cmd里面執(zhí)行netstat –an可以看到已經(jīng)開(kāi)始監(jiān)聽(tīng)tcp的12489端口了

這樣外部就可以訪問(wèn)了嗎?錯(cuò)!防火墻也要打開(kāi)tcp的12489端口,否則nagios檢查此服務(wù)的時(shí)候會(huì)報(bào)socket 超時(shí)錯(cuò)誤.是critical哦!后果很十分嚴(yán)重啊.我就犯了這個(gè)錯(cuò)誤,所以特別強(qiáng)調(diào)一下.
這樣被監(jiān)控機(jī)的配置就搞定了,它就等待nagios發(fā)出某個(gè)監(jiān)控請(qǐng)求,然后它執(zhí)行請(qǐng)求將監(jiān)控的結(jié)果發(fā)回到nagios監(jiān)控主機(jī)上.
#p#
對(duì)監(jiān)控主機(jī)的配置
接下來(lái)就是要配置監(jiān)控主機(jī)了.與之前的nrpe的過(guò)程類(lèi)似,在監(jiān)控主機(jī)上做的就3件事情
1.安裝監(jiān)控windows的插件(已經(jīng)默認(rèn)安裝了,check_nt)
2.定義命令
3.定義要監(jiān)控的項(xiàng)目
定義命令
vi /usr/local/nagios/etc/commands.cfg
增加下面的內(nèi)容
- #
- # 2007.9.6 add by yahoon
- # CHECK_NT
- # check windows hosts info
- #
- define command{
- command_name check_nt
- command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
- }
如果NSClient設(shè)置了連接需要密碼,則應(yīng)寫(xiě)成如下格式
$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
具體含義參考check_nt命令的用法
增加監(jiān)控項(xiàng)目
vi /usr/local/nagios/etc/services.cfg
下面這個(gè)服務(wù)是監(jiān)控NSClient的版本
- define service{
- host_name yahoon
- service_description check-version
- check_command check_nt!CLIENTVERSION
- max_check_attempts 5
- normal_check_interval 3
- retry_check_interval 2
- check_period 24x7
- notification_interval 10
- notification_period 24x7
- notification_options w,u,c,r
- contact_groups sagroup
- }
同樣的可以增加如下服務(wù)(為了篇幅,我只給出最關(guān)鍵的check_command這一項(xiàng))
1)監(jiān)控windows服務(wù)器運(yùn)行的時(shí)間
check_command check_nt!UPTIME
2)監(jiān)控Windows服務(wù)器的CPU負(fù)載,如果5分鐘超過(guò)80%則是warning,如果5分鐘超過(guò)90%則是critical
check_command check_nt!CPULOAD!-l 5,80,90
3)監(jiān)控Windows服務(wù)器的內(nèi)存使用情況,如果超過(guò)了80%則是warning,如果超過(guò)90%則是critical.
check_command check_nt!MEMUSE!-w 80 -c 90
4)監(jiān)控Windows服務(wù)器C:\盤(pán)的使用情況,如果超過(guò)80%已經(jīng)使用則是warning,超過(guò)90%則是critical
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
注:-l后面接的參數(shù)用來(lái)指定盤(pán)符
5)監(jiān)控Windows服務(wù)器D:\盤(pán)的使用情況,如果超過(guò)80%已經(jīng)使用則是warning,超過(guò)90%則是critical
check_command check_nt!USEDDISKSPACE!-l d -w 80 -c 90
6)監(jiān)控Windows服務(wù)器的W3SVC服務(wù)的狀態(tài),如果服務(wù)停止了,則是critical
check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
7)監(jiān)控Windows服務(wù)器的Explorer.exe進(jìn)程的狀態(tài),如果進(jìn)程停止了,則是critical
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
#p#
重啟nagios服務(wù)來(lái)生效,等一會(huì)就可以查看頁(yè)面了

(紅色的錯(cuò)誤是因?yàn)槲覄偘裦tp給關(guān)了,等會(huì)啟動(dòng)就好了)發(fā)現(xiàn)有三個(gè)服務(wù)的顏色是深黃色,狀態(tài)是UNKNOWN,后面的信息是NSClient - ERROR: PDH Collection thread not running
這問(wèn)題有點(diǎn)莫明其妙,因?yàn)榇蟛糠值男略龇?wù)都已經(jīng)可以正常運(yùn)行了,不要緊,把這句話放到goole里面一看,原來(lái)是由于操作系統(tǒng)語(yǔ)言的問(wèn)題,好像NSClient默認(rèn)支持的語(yǔ)言并不多.具體信息參考下面這兩個(gè)頁(yè)面
- [url]http://trac.nakednuns.org/nscp/ticket/54[/url]
- [url]http://www.meulie.net/portal_plugins/forum/forum_viewtopic.php?8636[/url]
查看NSClient的日志C:\NSClient++下的nsclient.log,里面信息如下
- 2007-09-06 10:38:35: error:.\PDHCollector.cpp:69: Getting counter info...
- 2007-09-06 10:38:35: error:.\PDHCollector.cpp:97: Detected language: 0x0804 but it could not be found in: counters.defs
- 2007-09-06 10:38:35: error:.\PDHCollector.cpp:98: You need to manually configure performance counters!
注意紅色部分,說(shuō)是需要我手動(dòng)配置.按照它的說(shuō)明打開(kāi)counters.defs文件,查看一下里面的內(nèi)容,很容易就知道該怎么改了.結(jié)合上面的錯(cuò)誤信息知道0x0804是當(dāng)前系統(tǒng)語(yǔ)言”簡(jiǎn)體中文”的代碼,推測(cè)系統(tǒng)文件和變量應(yīng)該與原始的英文版都一樣,復(fù)制文件里面"English US"那部分內(nèi)容,再做修改就行.我在counters.defs的最后加上了如下的內(nèi)容:
- [0x0804]
- Description = "Chinese"
- NT4_SystemTotalProcessorTime = "\System\% Total Processor Time"
- NT4_SystemSystemUpTime = "\System\System Up Time"
- NT4_MemoryCommitLimit = "\Memory\Commit Limit"
- NT4_MemoryCommitByte = "\Memory\Committed Bytes"
- W2K_SystemTotalProcessorTime = "\Processor(_total)\% Processor Time"
- W2K_SystemSystemUpTime = "\System\System Up Time"
- W2K_MemoryCommitLimit = "\Memory\Commit Limit"
- W2K_MemoryCommitByte = "\Memory\Committed Bytes"
OK,再等一會(huì)看頁(yè)面,發(fā)現(xiàn)沒(méi)變化,看來(lái)這樣依樣畫(huà)葫蘆不行啊…不甘心,看看日志,再次打開(kāi)nsclient.log發(fā)現(xiàn)里面的內(nèi)容沒(méi)變.新修改的那部分根本就沒(méi)起作用?至少也應(yīng)該像之前那樣報(bào)個(gè)ERROR才對(duì)啊?修改配置文件之后要干嘛???重啟服務(wù)!!!!
在mmc里面重啟NSClient服務(wù),如下圖右擊對(duì)應(yīng)的服務(wù)選”重新啟動(dòng)”

查看日志,內(nèi)容如下
- 2007-09-06 12:32:37: error:.\PDHCollector.cpp:69: Getting counter info...
- 2007-09-06 12:32:37: error:.\PDHCollector.cpp:119: Attempting to open counter...
- 2007-09-06 12:32:38: error:.\PDHCollector.cpp:122: Counters opend...
看起來(lái)沒(méi)什么問(wèn)題(里面的error是引導(dǎo)符,開(kāi)發(fā)這個(gè)程序的人下次該換換,正確了就不該是erorr了嘛),這邊看起來(lái)沒(méi)問(wèn)題了,可還是要等頁(yè)面正常才放心.耐心的等一會(huì),得到了下面的頁(yè)面.

一切搞定.我寫(xiě)的累,大家也看的累吧.不過(guò)希望大家都能有收獲
整個(gè)nagios的配置過(guò)程也在此作結(jié).多謝捧場(chǎng).
#p#
后記:
羅唆一句,官方文檔是最好的教程.大家可以看到我的所有操作,大部分都是按照官方文檔一步步配置的.而且按照它配置出來(lái)的也就基本滿足需要了.了解了整個(gè)過(guò)程和原理,就可以自己加加減減做修改滿足自己的個(gè)性需求,出了問(wèn)題不要緊,查文檔,用google,達(dá)到活學(xué)活用也不是難事.
還是那句話,知道了原理,一切就都簡(jiǎn)單了.
最后針對(duì)nagios提煉幾個(gè)要點(diǎn)
對(duì)于插件要注意使用方法,多用”命令名 –h”看看
修改了配置文件要重啟服務(wù)生效
碰到問(wèn)題google一下,別忘記了查看日志
通過(guò)文章的詳細(xì)描述,我們把nagios在windows上的監(jiān)控都學(xué)會(huì)了,希望你們能真真掌握!
【編輯推薦】
- Nagios 配置之驗(yàn)收工作
- Nagios 配置指南
- Nagios配置之準(zhǔn)備工作
- Nagios 安裝三部曲
- Nagios網(wǎng)絡(luò)監(jiān)控工作原理
- Nagios 簡(jiǎn)介與功能