现在的位置: 首页 > 运维管理 > 监控 > 正文
Nagios监控平台之五:监控Windows服务器
2013年02月20日 监控, 运维管理 ⁄ 共 3142字 Nagios监控平台之五:监控Windows服务器已关闭评论 ⁄ 被围观 10,023 views+

Nagios系列文章:

Nagios监控平台之一:在Centos上安装Nagios服务

Nagios监控平台之二:nrpe监控远程Linux主机

Nagios监控平台之三:MRTG监控交换机流量

Nagios监控平台之四:监控Linux服务器CPU温度

Nagios监控平台之五:监控Windows服务器

Nagios监控平台之六:安装NDOUtils保存Nagios数据到mysql数据库

Nagios监控平台之七:Nagios监控HP-UX

一、Nagios监控配置的常规说明:

1.1.  监控步骤:

被监控端安装代理(linux为nrpe,windows为NSClient)à配置被监控端监控脚本à主机定义(服务器端)à定义命令(服务器端,普通监控默认已定义好,可跳过此步)à定义服务(服务器端)à其他定义(此步可省略,包含:联系人、主机组、服务器组、服务组等)

1.2.  Nagios监控的四种状态:

Nagios的状态有四种,根据返回值区分:

返回 0 ,正常

返回 1 ,警告

返回 2 ,紧急

返回 3 ,未知

因此,不管是linux还是windows,在自定义脚本是,只要设置好exit后跟的返回值即可实现Nagios的通知提醒。

二、        Windows代理NSClient++的安装

下载最新的NSClient++ 0.40安装,填入Nagios服务器IP,密保保存为空,并勾选支持的前三项插件,如下图:

n1

三、        利用默认配置实现监控硬盘空间、CPU负载、内存等信息:

3.1         被监控端(Windows服务器)配置自带防火墙例外或者关闭自带防火墙,开放TCP 5666和TCP 12489端口。

3.2         Nagios服务器端:

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,添加服务定义:

  1. 定义监控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%。

  1. 定义监控内存的服务:

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%(该数据包含虚拟内存)

  1. 定义监控磁盘空间的服务:

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%。

  1. 定义监控windows服务运行状态:

define service{

use               generic-service

host_name         主机名

service_description  服务名

check_command  check_nt!SERVICESTATE!-d SHOWALL -l 服务名

}

说明:-l后接要检查的服务名称;contacts为定义的通知联系人。

  1. 其他更多的用法可以根据windows.cfg文件的预定义服务进行举一反三。

3.2.4.       使用命令:service nagios restart重启查看状态,正常的话如下图:

n2

四、        自定义脚本监控(NRPE):

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

n3

通过上述默认支持的监控项目和自定义脚本,基本能实现Windows所有需要的监控(对部分服务的详细监控需要很复杂的脚本才能实现)。

 

抱歉!评论已关闭.

×