1、Nagios監控配置的常規說明:html
1.1.監控步驟:linux
被監控端安裝代理(linux爲nrpe,windows爲NSClient)à配置被監控端監控腳本à主機定義(服務器端)à定義命令(服務器端,普通監控默認已定義好,可跳過此步)à定義服務(服務器端)à其餘定義(此步可省略,包含:聯繫人、主機組、服務器組、服務組等)ios
1.2.Nagios監控的四種狀態:shell
Nagios的狀態有四種,根據返回值區分:windows
返回 0 ,正常服務器
返回 1 ,警告ide
返回 2 ,緊急spa
返回 3 ,未知插件
所以,無論是linux仍是windows,在自定義腳本是,只要設置好exit後跟的返回值便可實現Nagios的通知提醒。代理
2、Windows代理NSClient++的安裝
下載最新的NSClient++ 0.40安裝,填入Nagios服務器IP,密保保存爲空,並勾選支持的前三項插件,以下圖:
3、利用默認配置實現監控硬盤空間、CPU負載、內存等信息:
1
2
3
3.1被監控端(Windows服務器)配置自帶防火牆例外或者關閉自帶防火牆,開放TCP 5666和TCP 12489端口。
3.2Nagios服務器端:
1.
2.
3.
3.1.
3.2.
3.2.1.配置/usr/local/nagios/etc/nagios.cfg,將以下一行前面的註釋取消:
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
3.2.2.定義主機,編輯/usr/local/nagios/etc/objects/windows.cfg,添加主機定義:
define host{
use windows-server ;使用主機模板
host_name 主機名 ;主機名
alias主機別名 ;主機別名
address 192.168.0.8 ;IP地址
}
3.2.3.定義服務,編輯/usr/local/nagios/etc/objects/windows.cfg,添加服務定義:
A.定義監控CPU負責的服務:
define service{
use generic-service ;服務模板
host_name 主機名 ;上面定義的主機名
check_interval 18
service_description CPU 負載;服務名稱
check_command check_nt!CPULOAD!-l 5,80,90
}
說明:檢查5分鐘平均值,報警值80%,警告值90%。
B.定義監控內存的服務:
define service{
use generic-service,srv-pnp
host_name 主機名
check_interval 18
service_description Memory 含虛擬內存
check_command check_nt!MEMUSE!-w 78 -c 82
}
說明:內存報警值78%,警告值82%(該數據包含虛擬內存)
C.定義監控磁盤空間的服務:
define service{
use generic-service,srv-pnp
host_name 主機名
check_interval 30
service_description Drive Space D盤
check_command check_nt!USEDDISKSPACE!-l d -w 80 -c 90
}
說明:-l後接盤符,報警值80%,警告值90%。
D.定義監控windows服務運行狀態:
define service{
use generic-service
host_name 主機名
service_description 服務名
check_command check_nt!SERVICESTATE!-d SHOWALL -l 服務名
}
說明:-l後接要檢查的服務名稱;contacts爲定義的通知聯繫人。
E.其餘更多的用法能夠根據windows.cfg文件的預約義服務進行觸類旁通。
3.2.4.使用命令:service nagios restart重啓查看狀態,正常的話以下圖:
4、自定義腳本監控(NRPE):
1
2
3
4
4.1客戶端腳本編寫:
腳本的編寫可使用批處理、powershell腳本或vbs等,只要能返回狀態信息和返回值(見文章開頭第一段說明)。
例如如使用批處理,可使用echo命令返回狀態信息;使用exit跟數字0、1、2、3返回狀態值。以下面的一段批處理腳本能夠實現對進程狀態進行監控:
@echo off
:: 監控進程是否運行
::%1表示使用中的第一個參數,即進程名稱
tasklist |find "%1" >NUL
IF ERRORLEVEL 1 GOTO err
IF ERRORLEVEL 0 GOTO ok
:err
echo CRITICAL!Process %1 is not exist!
exit 2
::返回值爲2,表示警告
:ok
echo OK!Process %1 is exist!
exit 0
::返回值爲0,表示正常
將上述命令做爲批處理保存在C:\Program Files\NSClient++\scripts路徑下如check_run.bat,注意,在返回的狀態信息中儘可能不要用中文。
4.2客戶端腳本命令配置:
編輯C:\Program Files\NSClient++\nsclient.ini,找到[/settings/external scripts/scripts]一行,在下面加入以下內容:
Command_alias=scripts\check_run.bat Process_Name.exe
注意:等號前面的別名爲服務器端調用的命令,等號後面接具體的腳本,腳本後面跟參數進程名稱,該參數會被腳本使用%1變量進行調用。如我要監控【視頻監控主機】的視頻錄像程序是否啓動,可替換爲check_manager=scripts\check_run.bat VideoManager.exe
4.3服務器端服務配置():
定義服務後:
define service{
use generic-service
host_name Monitor
service_description 管理平臺
check_command check_nrpe!check_manager
}
4.4重啓Nagios服務:service nagios restart
經過上述默認支持的監控項目和自定義腳本,基本能實現Windows全部須要的監控(對部分服務的詳細監控須要很複雜的腳本才能實現)。
友情連接:旺旺知識庫