監控伺服器Nagios之三 監控案例
前邊的兩篇僅是Nagios服務端的安裝與配置檔案的解讀,現在終於來到了第三篇,本篇將介紹下Nagios是如下實現監控的。
安裝完Nagios之後,登入Web介面訪問,在hosts一項中僅有localhost(hosts代表所監控的主機),如下圖:
在Service中預設已經監控Nagios伺服器本身的以下選項,如下圖所示
上圖中http處於WARNING狀態,提示HTTP WARNING:HTTP/1.1 403 Forbidden - 5237 bytes in 0.003 second response time
這個是因為才Apache預設釋出目錄/var/www/html下沒有index.html,建立一個即可。
一、監控Nagios伺服器本身
預設HTTP與SSH雖然被監控,但是是沒有報警通知的,我們首先開啟HTTP和SSH的通知!
#vim/usr/local/nagios/etc/objects/localhost.cfg
找到HTTP與SSH的define,把notifications_enabled 0這行註釋掉或者0改為1,然後重啟Nagios服務即可
下面我們再新增一些其它監控項
新增監控本地伺服器磁碟項,以/dev/sda2為例。
[email protected]_Server~]#df-h/dev/sda2 FilesystemSizeUsedAvailUse%Mountedon /dev/sda230G4.3G25G15%/ 現在有85%的空閒空間。 [[email protected]_Server~]#cd/usr/local/nagios/etc/objects/ [[email protected]_Serverobjects]#vimcommands.cfg 新增以下內容 definecommand{ command_namecheck_disk command_line$USER1$/check_disk-w$ARG1$-c$ARG2$$ARG3$#這裡的變數$USER1$在resource.cfg檔案中進行定義,即$USER1$=/usr/local/nagios/libexec; }#-w第一個引數-c第二個引數然後第三個引數 [[email protected]_Serverobjects]#vimlocalhost.cfg 新增以下內容 defineservice{ uselocal-service host_namelocalhost service_descriptionDisk_monitor check_commandcheck_disk!30%!20%!/dev/sda2#每個引數用”!”隔開 notifications_enabled1#是否監控該服務#對於/dev/sda2當可用率小於30%的時候就Warning(警告),小於20%的時候就Critical(嚴重) }#命令等同於/usr/local/nagios/libexec/check_disk-w30%-c20%/dev/sda2 [[email protected]_Serverobjects]#/usr/local/nagios/libexec/check_disk-w30%-c20%/dev/sda2 DISKOK-freespace:/24639MB(85%inode=92%);|/=4323MB;6102;7628;0;30512 [[email protected]_Server~]#/usr/local/nagios/bin/nagios-v/usr/local/nagios/etc/nagios.cfg 檢查配置檔案,確保沒有警告與錯誤,然後重啟Nagios和httpd
[[email protected]_Server~]#servicenagiosrestart [[email protected]_Server~]#servicehttpdrestart
二、監控Linux客戶端
1、linux客戶端配置環境
#rpm-qgccglibcglibc-commongdgd-develxinetdopenssl-devel
根據實際環境,安裝所缺少的包
2、首先建立nagios使用者,並安裝nagios-plugins和NRPE
[[email protected]_client~]#useraddnagios [[email protected]_client~]#ls nagios-plugins-1.4.14.tar.gznrpe-2.14.tar.gz [[email protected]_client~]#tar-zxfnagios-plugins-1.4.14.tar.gz [[email protected]_client~]#cdnagios-plugins-1.4.14 [[email protected]_clientnagios-plugins-1.4.14]#./configure--prefix=/usr/local/nagios&&make&&makeinstall [[email protected]_client~]#tar-zxfnrpe-2.14.tar.gz [[email protected]_client~]#cdnrpe-2.14 [[email protected]_clientnrpe-2.14]#./configure--enable-ssl--with-ssl-lib&&makeall&&makeinstall-plugin&&makeinstall-daemon&&makeinstall-daemon-config [[email protected]_clientnrpe-2.14]#chown-Rnagios:nagios/usr/local/nagios
啟動nrpe客戶端:
[[email protected]_client~]#/usr/local/nagios/bin/nrpe-c/usr/local/nagios/etc/nrpe.cfg-d [[email protected]_client~]#netstat-anlp|grepnrpe tcp000.0.0.0:56660.0.0.0:*LISTEN25392/nrpe unix2[]DGRAM5245425392/nrpe
3、Nrpe客戶端配置
[[email protected]_client~]#vim/usr/local/nagios/etc/nrpe.cfg
下邊是預設配置
其中“1”是已經配置好的命令,”2”是模板檔案,可在服務端command.cfg呼叫!
根據需要修改,加入兩行如下:
[[email protected]_client~]#vim/usr/local/nagios/etc/nrpe.cfg #新增允許監控的伺服器端IP 把allowed_hosts=127.0.0.1改為allowed_hosts=127.0.0.1,192.168.1.2 重啟NRPE客戶端 [[email protected]_clientetc]#netstat-anlp|grepnrpe tcp000.0.0.0:56660.0.0.0:*LISTEN25392/nrpe unix2[]DGRAM5245425392/nrpe [[email protected]_clientetc]#pkillnrpe [[email protected]_clientetc]#netstat-anlp|grepnrpe [[email protected]_clientetc]#/usr/local/nagios/bin/nrpe-c/usr/local/nagios/etc/nrpe.cfg-d [[email protected]_clientetc]#netstat-anlp|grepnrpe tcp000.0.0.0:56660.0.0.0:*LISTEN25472/nrpe unix2[]DGRAM5641025472/nrpe [[email protected]_clientetc]#
4、Nrpe服務端配置
[[email protected]_Serverobjects]#pwd /usr/local/nagios/etc/objects [[email protected]_Serverobjects]#vimcommands.cfg #在末端新增以下內容(呼叫NRPE) definecommand{ command_namecheck_nrpe command_line$USER1$/check_nrpe-H$HOSTADDRESS$-c$ARG1$ }
5、Nagios監控端客戶機配置
[[email protected]_Server~]#cd/usr/local/nagios/etc/ [[email protected]_Serveretc]#ls cgi.cfghtpasswd.usersnagios.cfgobjectsresource.cfg [[email protected]_Serveretc]#vimnagios.cfg #36行後新增以下內容 cfg_file=/usr/local/nagios/etc/objects/192.168.1.4.cfg [[email protected]_Serverobjects]#pwd /usr/local/nagios/etc/objects [[email protected]_Serverobjects]#touch192.168.1.4.cfg [[email protected]_Serverobjects]#chownnagios:nagios192.168.1.4.cfg [[email protected]_Serverobjects]#vim192.168.1.4.cfg #新增以下內容 definehost{ uselinux-server host_name192.168.1.4 alias192.168.1.4 address192.168.1.4 } definehostgroup{ hostgroup_name192.168.1.4 aliasLinuxServers members192.168.1.4 } defineservice{ uselocal-service host_name192.168.1.4 service_descriptionMonitor_sda1 check_commandcheck_sda1 notifications_enabled1 } defineservice{ uselocal-service host_name192.168.1.4 service_descriptionMonitor_sda2 check_commandcheck_sda2 notifications_enabled1 }
6、驗證是否新增成功
服務端測試是否可以與客戶端nrpe通訊(顯示NRPE版本即代表成功)
[[email protected]_Serverobjects]#/usr/local/nagios/libexec/check_nrpe-H192.168.1.4 NRPEv2.14
如報錯
CHECK_NRPE: Error - Could not complete SSLhandshake.
kill掉nrpe 重啟nrpe即可
[[email protected]_Server~]#/usr/local/nagios/bin/nagios-v/usr/local/nagios/etc/nagios.cfg#測試配置檔案是否存在錯誤 [[email protected]_Server~]#servicenagiosrestart Runningconfigurationcheck...done. Stoppingnagios:done. Startingnagios:done. [[email protected]_Server~]#servicehttpdrestart 停止httpd:[確定] 正在啟動httpd:[確定]
7、Other
其實在Nagios服務端如果新增NRPE客戶端的時候,可以複製localhost模板,因為裡邊已經定義過很多服務,只需要修改一些即可。
cp localhost.cfg 192.168.1.4.cfg
把預設配置檔案裡面的locahost、127.0.0.1、check_local、linux-servers更新一下
[[email protected]_Server~]#sed-i's#localhost#192.168.1.4#g;s#127.0.0.1#192.168.1.4#g;s#check_local#check#g;s#linux-servers#192.168.1.4#g'192.168.1.4.cfg
因為客戶端是基於NRPE的,所以要把所監控的服務check_command 前加check_nrpe! 這裡不再敘述!
三、監控Windows客戶端
在Nagios的libexec下有check_nt這個外掛,它就是用來檢查windows機器的服務的。其功能類似於check_nrpe。不過還需要搭配另外一個軟體NSClient++,它則類似於NRPE。
NSClient++的原理如下圖
可以看到NSClient與nrpe最大的區別就是:
被監控機上安裝有nrpe,並且還有外掛,最終的監控是由這些外掛來進行的。當監控主機將監控請求發給nrpe後,nrpe呼叫外掛來完成監控。
NSClient++則不同,被監控機上只安裝NSClient,沒有任何的外掛。當監控主機將監控請求發給NSClient++後,NSClient直接完成監控,所有的監控是由NSClient完成的。
這也說明了NSClient++的一個很大的問題:不靈活、沒有可擴充套件性。它只能完成自己本身包含的監控操作,不能由一些外掛來擴充套件。好在NSClient++已經做的不錯了,基本上可以完全滿足我們的監控需求。
1、安裝NSClient++
從http://www.nsclient.org/nscp/downloads 下載NSClient++-0.2.7.zip
解壓到C盤根目錄。
開啟cmd 切換到c:\NSClient++-0.2.7
執行nsclient++ /install 進行安裝
執行nsclient++ SysTray (注意大小寫),這一步是安裝系統托盤,時間稍微有點長。
在執行裡面輸入services.msc 開啟“服務”,看到下圖就說明NSClient服務已經安裝上了
雙擊開啟,點“登入”標籤,在“允許服務與桌面互動”前打勾
2、編輯配置檔案
編輯c:\NSClient++-0.2.7下的NSC.ini檔案。
將 [modules]部分的所有模組前面的註釋都去掉,除了CheckWMI.dll 和 RemoteConfiguration.dll 這兩個。
在[Settings]部分設定'password'選項來設定密碼,作用是在nagios連線過來時要求提供密碼。這一步是可選的,我這裡設定為'hi'。
將[Settings]部分'allowed_hosts'選項的註釋去掉,並且加上執行nagios的監控主機的IP。各IP之間以逗號相隔。這個地方是支援子網的,如果寫成192.168.1.0/24則表示該子網內的所有機器都可以訪問。如果這個地方是空白則表示所有的主機都可以連線上來。
注意是[Settings]部分的,因為[NSClient]部分也有這個選項。
必須保證[NSClient]的'port'選項並沒有被註釋,並且它的值是'12489',這是NSClient的預設監聽埠。
在cmd 中執行nsclient++ /start啟動服務,注意所在目錄是c:\NSClient++-0.2.7
服務已經啟動
在cmd 裡面執行netstat –an 可以看到已經開始監聽tcp的12489埠了。
防火牆也要開啟tcp的12489埠,否則nagios 檢查此服務的時候會報錯。
3、Nagios服務端配置
a、確保check_nt命令在/etc/nagios/objects/commands.cfg都被定義了。還有一點改變,應用預設配置不使用密碼了,所以在命令列末尾,加-s hi,以便讓check_nt命令使用預設的密碼”hi”
[[email protected]_Serverobjects]#pwd /usr/local/nagios/etc/objects [[email protected]_Serverobjects]#vimcommands.cfg
b、Windows主機定義模板——不是真的主機,只是模板!
在/etc/nagios/objects/templates.cfg,你需要模板來定義Windows主機應該怎樣配置
c、核實模板存在之後,需要通知Nagios還得監視Windows。通過取消註解cfg_file行,讓Nagios看windows.cfg檔案。
[[email protected]_Serveretc]#pwd /usr/local/nagios/etc [[email protected]_Serveretc]#vimnagios.cfg
d、定義Windows主機被監視。這一步在每個要被監視的windows主機都要做。你需要一個在windows.cfg檔案中的定義主機項
[[email protected]_Serverobjects]#pwd /usr/local/nagios/etc/objects [[email protected]_Serverobjects]#vimwindows.cfg
4、 驗證配置
提醒:一定要確保windows的防火牆是關閉的或者開發”12489”
出現了一個錯誤
NSClient - ERROR:PDH Collection thread not running.
Windows客戶端配置
開啟C:\NSClient++-0.2.7\counters.defs檔案,複製檔案裡面"English US"那部分內容,貼上到counters.defs 檔案的最後,修改Description = "Chinese"。
增加以下內容(用notepad++開啟會有更友好的試圖),重啟Nsclient服務即可
[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"
但是最後還有個Warning,是關於W3SVC的,原因是Windows客戶端沒有安裝IIS
開始---控制面板---程式---開啟或關閉Windows功能,新增IIS,重啟NSClient服務即可
如下圖:
有兩個服務是出於flapping狀態
[[email protected]_Server~]#vim/usr/local/nagios/etc/nagios.cfg
雖然文件裡說預設是0,但實際為1.改為0之後就解決了flapping state
enable_flap_detection=0
重啟Nagios服務即可。
Perfect?
分組?郵件、簡訊報警?監控HTTP關鍵字?監控Mysql主從?
下篇見……..
轉載於:https://blog.51cto.com/linuxnote/1638423