本文参考网址:

4.7. 监控Windows主机

4.7.1. 介绍

本文用来说明如何监控Windows主机的本地服务和特性,包括:

  • 内存占用率

  • CPU负载

  • Disk利用率

  • 服务状态

  • 运行进程

  • 等等

Windows主机上的公众化服务(HTTPFTPPOP3)可以查阅这篇文档。

注意

如下的内容是假定你已经按照安装好了Nagios系统之后做的,下面所使用的样例配置文件(commands.cfgtemplates.cfg)已经在安装过程中安装到位。

4.7.2. 概览

Windows机器的监控私有服务需要在机器上安装代理程序。代理将会在检测插件与Nagios服务之间起网关代理作用。如果没有在机器上安装代理的话,Nagios将无法对Windows私有服务或属性等进行监控。

在下面例子中,将在Windows机器上安装外部构件并使用check_nt插件检测和与NSClient++构件进行通讯。如果你按照指南来安装的话,check_nt插件已经安装到了Nagios服务器上。

如果愿意,可以用其他的Windows代理()替代NSClient++构件所起的作用-只是要稍稍改一下对应的命令和服务定义等。下面将只是讨论安装了NSClient++外部构件的情况。

4.7.3. 步骤

为完成对Windows机器的检测,有几个步骤要做,它们是:

  • 确认一下首要条件;

  • Windows机器上安装代理(在本例中是安装NSClient++构件)

  • Windows机器创建新的主机和服务对象定义;

  • 重启动Nagios守护进程。

4.7.4. 已经做了什么?

为使过程简单,已经完成了少量配置文件的工作:

  • 已经把check_nt命令加入到了commands.cfg文件中,就可以直接使用check_nt插件来监控Windows服务;

  • 一个Windows机器的主机对象模板(命名为windows-server)已经在templates.cfg文件里创建好了,可以更容易地加入一个新的Windows主机对象定义。

常用的配置文件可以在/usr/local/nagios/etc/objects/目录里找到。如果愿意可以对里面的对象进行修改以适应你的要求。但是,如果你没有熟悉配置Nagios之前劝你不要这么做。开始时可以只是按照下面的指令操作来快速完成监控Windows机器。

4.7.5. 首要条件

首次监控一台Winodws机器时需要对Nagios做点额外的工作,记住,仅仅是监控第一台Windows机器时需要做这些工作。

编辑Nagios的主配置文件

vi /usr/local/nagios/etc/nagios.cfg

把下面这行最前面的#号去掉:

#cfg_file=/usr/local/nagios/etc/objects/windows.cfg

保存配置文件并退出。

刚才做的是什么呢?是让Nagios起用/usr/local/nagios/etc/objects/windows.cfg这个配置文件里的对象定义。在这个配置文件里可以加些Windows的主机与服务对象定义。该配置文件里已经包含有几个样例主机、主机组及服务对象定义。对于第一台Windows机器,可以只是简单地修改里面已经有的主机与服务对象定义而不要新创建一个。

4.7.6. 安装Windows代理程序

在用Nagios监控Windows机器的私有服务之前,需要先在机器上安装代理程序。推荐使用NSClient++外部构件,它可以在找到。如下指令可以安装一个基本的NSClient++外部构件,同时也配置好Nagios来监控这台Windows机器。

1.站点下载最新稳定版的NSClient++软件包;

2.展开软件包到一个目录下,如C:\NSClient++

3.打开一个命令行窗口并切换到C:\NSClient++目录下;

4.用下面命令将NSClient++系统服务注册到系统里:

      nsclient++ /install

5.用下面命令安装NSClient++系统托盘程序('SysTray'是大小写敏感的)

      nsclient++ SysTray

6.打开服务管理器并确认NSClientpp服务可以在桌面交互(看一下服务管理器里的'Log On'选项页),如果没有允许桌面交互,点一下里面的选择项打开它。

 

7.编辑NSC.INI文件(位于C:\NSClient++目录)并做如下修改:

  • 去掉在[modules]段里的列出模块程序的注释,除了CheckWMI.dllRemoteConfiguration.dll

  • 最好是修改一下在[Settings]段里的'password'选项;

  • 去掉在[Settings]段里的'allowed_hosts'选项注释,把Nagios服务所在主机的IP加到这一行里,或是置为空,让全部主机都可以联入;

  • 确认一下在[NSClient]段里的'port'选项里已经去掉注释并设置成'12489'(默认端口)

8.用下面命令启动NSClient++服务:

      nsclient++ /start

9.如果安装正确,一个新的图标会出现在系统托盘里,是个黄圈里面有个黑色的'M'

10.完成了。这台Windows机器可以加到Nagios监控配置里了...

4.7.7. 配置Nagios

为监控Windows机器下面要在Nagios配置文件里加几个

编辑方式打开windows.cfg文件。

vi /usr/local/nagios/etc/objects/windows.cfg

Windows机器加一个新的定义以便监控。如果是被监控的第一台Windows机器,可以只是修改windows.cfg文件里的对象定义。修改host_namealiasaddress域以符合那台Windows机器。

define host{

   use         windows-server    ; Inherit default values from a Windows server template (make sure you keep this line!)

   host_name         winserver

   alias       My Windows Server

   address           192.168.1.2

   }

好了。下面可以加几个服务定义(在同一个配置文件里)以使Nagios监控Windows机器上的不同属性内容。如果是第一台Windows机器,可以只是修改windows.cfg里的服务对象定义。

注意

用你刚刚加好的主机对象定义里的host_name来替换例子里的"winserver"

加入下面的服务定义以监控运行于Windows机器上的NSClient++外部构件的版本。当到时间要升级Windows机器上的外部构件时这信息会很用有,因为它可以告知这台Windows机器上的NSClient++需要升级到最新版本。

define service{

   use               generic-service

   host_name               winserver

   service_description     NSClient++ Version

   check_command           check_nt!CLIENTVERSION

   }

加入下面的服务定义以监控Windows机器的启动后运行时间。

define service{

   use               generic-service

   host_name               winserver

   service_description     Uptime

   check_command           check_nt!UPTIME

   }

加入下面的服务定义可监控Windows机器的CPU利用率,并在5分钟CPU负荷高于90%时给出一个紧急警报或是高于80%时给出一个告警警报。

define service{

   use               generic-service

   host_name               winserver

   service_description     CPU Load

   check_command           check_nt!CPULOAD!-l 5,80,90

   }

加入下面的服务定义可监控Windows机器的内存占用率,并在5分钟内存占用率高于90%时给出一个紧急警报或是高于80%时给出一个告警警报。

define service{

   use               generic-service

   host_name               winserver

   service_description     Memory Usage

   check_command           check_nt!MEMUSE!-w 80 -c 90

   }

加入下面的服务定义可监控Windows机器的C:盘的磁盘利用率,并在磁盘利用率高于90%时给出一个紧急警报或是高于80%时给出一个告警警报。

define service{

   use               generic-service

   host_name               winserver

   service_description     C:\ Drive Space

   check_command           check_nt!USEDDISKSPACE!-l c -w 80 -c 90

   }

加入下面的服务定义可监控Windows机器上的W3SVC服务状态,并在W3SVC服务停止时给出一个紧急警报。

define service{

   use               generic-service

   host_name               winserver

   service_description     W3SVC

   check_command           check_nt!SERVICESTATE!-d SHOWALL -l W3SVC

   }

加入下面的服务定义可监控Windows机器上的Explorer.exe进程,并在进程没有运行时给出一个紧急警报。

define service{

   use               generic-service

   host_name               winserver

   service_description     Explorer

   check_command           check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe

   }

都好了,已经加好了基础服务定义,可以监控Windows机器了,保存一下配置文件。

4.7.8. 口令保护

如果想指定保存在Windows机器上NSClient++配置文件里的口令,可以修改check_nt命令定义,让它带着口令。编辑方式打开commands.cfg文件。

vi /usr/local/nagios/etc/commands.cfg

修改check_nt命令的定义,带上"-s <PASSWORD>"命令参数(这里的PASSWORD 要换成你Windows机器的真正口令),象这样:

define command{

   command_name check_nt

   command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$

   }

保存文件退出。

4.7.9. 重启动Nagios

如果修改好Nagios配置文件,需要

如果验证配置文件过程中有什么错误信息,在做下一步前一定要修正好配置文件。一定要保证验证过程中不再有出错信息后再启动或重启动Nagios

 ————————————————————————————

监控linux 系统

参考博客: