Nagios功能之监控windows的本地信息

运维 系统运维
Nagios作为一款Linux/Unix平台之上的监视系统,他在监控方面还是比较突出的,今天来看看他监控windows上的本地信息。

Nagios功能之监控windows的本地信息的操作过程有点烦躁,但是很容易学,来看看!

 

Nagios 

图-Nagios

  如何监控windows系统的”本地信息”

  在nagios2.x系列里面,文档里面对于windows服务器的监控相关说明较少,刚到nagios主页上看到3.x的文档里面有一篇讲监控windows的([url]http://nagios.sourceforge.net/docs/3_0/monitoring-windows.html[/url]

  ),我就仿照过来,对它略作修改来应用到我们当前的nagios2.9上去.(毕竟3.x还是测试版,2.9是最新的稳定版,用起来放心啊)

  细心的朋友可能注意到了,在nagios的libexec下有check_nt这个插件,它就是用来检查windows机器的服务的,其功能类似于上一章讲的check_nrpe.不过还需要搭配另外一个软件NSClient,它则类似于NRPE

  NSClient的原理如下图

  

 

  可以看到,NSClient与nrpe最大的区别就是:

  --被监控机上安装有nrpe,并且还有插件,最终的监控是由这些插件来进行的.当监控主机将监控请求发给nrpe后,nrpe调用插件来完成监控.

  --NSClient则不同,被监控机上只安装NSClient,没有任何的插件.当监控主机将监控请求发给NSClient后,NSClient直接完成监控,所有的监控是由NSClient完成的.

  这也说明了NSClient的一个很大的问题,不灵活,没有可扩展性.它只能完成自己本身包含的监控操作,不能由一些插件来扩展.好在NSClient已经做的不错了,基本上可以完全满足我们的监控需要.

#p#

  安装NSClient

  从[url]http://sourceforge.net/projects/nscplus[/url]下载NSClient++-0.2.7.zip

  解压为C:\NSClient++

  打开cmd 切换到C:\NSClient++

  执行nsclient++ /install进行安装

  

 

  执行nsclient++ SysTray 注意大小写,这一步是安装系统托盘,时间稍微有点长

  

 

  在运行里面输入services.msc打开”服务”

  

 

  看到下图就说明NSClient服务已经安装上了

  

 

  双击打开,点”登录”标签,在”允许服务与桌面交互”前打勾

  

 

  编辑C:\NSClient++下的NSC.ini文件

  将 [modules]部分的所有模块前面的注释都去掉,除了CheckWMI.dll and RemoteConfiguration.dll这两个

  在[Settings]部分设置'password'选项来设置密码,作用是在nagios连接过来时要求提供密码.这一步是可选的,我这里方便起见跳过它,不要密码.

  将[Settings]部分'allowed_hosts'选项的注释去掉,并且加上运行nagios的监控主机的IP.我改为如下这样allowed_hosts=127.0.0.1/32,192.168.0.111 以逗号相隔.这个地方是支持子网的,如果写成192.168.0.0/24则表示该子网内的所有机器都可以访问.如果这个地方是空白则表示所有的主机都可以连接上来.注意是[Settings]部分的,因为[NSClient]部分也有这个选项.

  必须保证[NSClient]的'port'选项并没有被注释,并且它的值是'12489',这是NSClient的默认监听端口

  在CMD中执行nsclient++ /start启动服务,注意所在目录是C:\NSClient++

  

 

  这时在桌面右下角的系统托盘处会出现一个黄色的M字样的图标

  

 

  查看服务

  

 

  已经正常启动了.注意服务默认设的是”自动”,也就是说是开机自动启动的.

  在cmd里面执行netstat –an可以看到已经开始监听tcp的12489端口了

  

 

  这样外部就可以访问了吗?错!防火墙也要打开tcp的12489端口,否则nagios检查此服务的时候会报socket 超时错误.是critical哦!后果很十分严重啊.我就犯了这个错误,所以特别强调一下.

  这样被监控机的配置就搞定了,它就等待nagios发出某个监控请求,然后它执行请求将监控的结果发回到nagios监控主机上.

#p#

  对监控主机的配置

  接下来就是要配置监控主机了.与之前的nrpe的过程类似,在监控主机上做的就3件事情

  1.安装监控windows的插件(已经默认安装了,check_nt)

  2.定义命令

  3.定义要监控的项目

  定义命令

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

  增加下面的内容

 

  1.   #  
  2.  
  3.   # 2007.9.6 add by yahoon  
  4.  
  5.   # CHECK_NT  
  6.  
  7.   # check windows hosts info  
  8.  
  9.   #  
  10.  

 

 

  1.   define command{  
  2.  
  3.   command_name check_nt  
  4.  
  5.   command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$  
  6.  
  7.   }  
  8.  

 

  如果NSClient设置了连接需要密码,则应写成如下格式

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

  具体含义参考check_nt命令的用法

  增加监控项目

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

  下面这个服务是监控NSClient的版本

 

  1.   define service{  
  2.  
  3.   host_name yahoon  
  4.  
  5.   service_description check-version  
  6.  
  7.   check_command check_nt!CLIENTVERSION  
  8.  
  9.   max_check_attempts 5  
  10.  
  11.   normal_check_interval 3  
  12.  
  13.   retry_check_interval 2  
  14.  
  15.   check_period 24x7  
  16.  
  17.   notification_interval 10  
  18.  
  19.   notification_period 24x7  
  20.  
  21.   notification_options w,u,c,r  
  22.  
  23.   contact_groups sagroup  
  24.  
  25.   }  
  26.  

 

  同样的可以增加如下服务(为了篇幅,我只给出最关键的check_command这一项)

  1)监控windows服务器运行的时间

  check_command check_nt!UPTIME

  2)监控Windows服务器的CPU负载,如果5分钟超过80%则是warning,如果5分钟超过90%则是critical

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

  3)监控Windows服务器的内存使用情况,如果超过了80%则是warning,如果超过90%则是critical.

  check_command check_nt!MEMUSE!-w 80 -c 90

  4)监控Windows服务器C:\盘的使用情况,如果超过80%已经使用则是warning,超过90%则是critical

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

  注:-l后面接的参数用来指定盘符

  5)监控Windows服务器D:\盘的使用情况,如果超过80%已经使用则是warning,超过90%则是critical

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

  6)监控Windows服务器的W3SVC服务的状态,如果服务停止了,则是critical

  check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC

  7)监控Windows服务器的Explorer.exe进程的状态,如果进程停止了,则是critical

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

#p#

  重启nagios服务来生效,等一会就可以查看页面了

  

(红色的错误是因为我刚把ftp给关了,等会启动就好了)发现有三个服务的颜色是深黄色,状态是UNKNOWN,后面的信息是NSClient - ERROR: PDH Collection thread not running

 

  这问题有点莫明其妙,因为大部分的新增服务都已经可以正常运行了,不要紧,把这句话放到goole里面一看,原来是由于操作系统语言的问题,好像NSClient默认支持的语言并不多.具体信息参考下面这两个页面

 

  1.   [url]http://trac.nakednuns.org/nscp/ticket/54[/url]  
  2.  
  3.   [url]http://www.meulie.net/portal_plugins/forum/forum_viewtopic.php?8636[/url]  
  4.  

 

  查看NSClient的日志C:\NSClient++下的nsclient.log,里面信息如下

 

  1.   2007-09-06 10:38:35: error:.\PDHCollector.cpp:69: Getting counter info...  
  2.  
  3.   2007-09-06 10:38:35: error:.\PDHCollector.cpp:97: Detected language: 0x0804 but it could not be found in: counters.defs  
  4.  
  5.   2007-09-06 10:38:35: error:.\PDHCollector.cpp:98: You need to manually configure performance counters!  
  6.  

 

  注意红色部分,说是需要我手动配置.按照它的说明打开counters.defs文件,查看一下里面的内容,很容易就知道该怎么改了.结合上面的错误信息知道0x0804是当前系统语言”简体中文”的代码,推测系统文件和变量应该与原始的英文版都一样,复制文件里面"English US"那部分内容,再做修改就行.我在counters.defs的最后加上了如下的内容:

 

  1.   [0x0804]  
  2.  
  3.   Description = "Chinese" 
  4.  
  5.   NT4_SystemTotalProcessorTime = "\System\% Total Processor Time" 
  6.  
  7.   NT4_SystemSystemUpTime = "\System\System Up Time" 
  8.  
  9.   NT4_MemoryCommitLimit = "\Memory\Commit Limit" 
  10.  
  11.   NT4_MemoryCommitByte = "\Memory\Committed Bytes" 
  12.  
  13.   W2K_SystemTotalProcessorTime = "\Processor(_total)\% Processor Time" 
  14.  
  15.   W2K_SystemSystemUpTime = "\System\System Up Time" 
  16.  
  17.   W2K_MemoryCommitLimit = "\Memory\Commit Limit" 
  18.  
  19.   W2K_MemoryCommitByte = "\Memory\Committed Bytes" 
  20.  

 

  OK,再等一会看页面,发现没变化,看来这样依样画葫芦不行啊…不甘心,看看日志,再次打开nsclient.log发现里面的内容没变.新修改的那部分根本就没起作用?至少也应该像之前那样报个ERROR才对啊?修改配置文件之后要干嘛???重启服务!!!!

  在mmc里面重启NSClient服务,如下图右击对应的服务选”重新启动”

  

 

  查看日志,内容如下

 

  1.   2007-09-06 12:32:37: error:.\PDHCollector.cpp:69: Getting counter info...  
  2.  
  3.   2007-09-06 12:32:37: error:.\PDHCollector.cpp:119: Attempting to open counter...  
  4.  
  5.   2007-09-06 12:32:38: error:.\PDHCollector.cpp:122: Counters opend...  
  6.  

 

  看起来没什么问题(里面的error是引导符,开发这个程序的人下次该换换,正确了就不该是erorr了嘛),这边看起来没问题了,可还是要等页面正常才放心.耐心的等一会,得到了下面的页面.

  

 

  一切搞定.我写的累,大家也看的累吧.不过希望大家都能有收获

  整个nagios的配置过程也在此作结.多谢捧场.

#p#

  后记:

  罗唆一句,官方文档是最好的教程.大家可以看到我的所有操作,大部分都是按照官方文档一步步配置的.而且按照它配置出来的也就基本满足需要了.了解了整个过程和原理,就可以自己加加减减做修改满足自己的个性需求,出了问题不要紧,查文档,用google,达到活学活用也不是难事.

  还是那句话,知道了原理,一切就都简单了.

  最后针对nagios提炼几个要点

  对于插件要注意使用方法,多用”命令名 –h”看看

  修改了配置文件要重启服务生效

  碰到问题google一下,别忘记了查看日志

通过文章的详细描述,我们把nagios在windows上的监控都学会了,希望你们能真真掌握!

【编辑推荐】

  1. Nagios 配置之验收工作
  2. Nagios 配置指南
  3. Nagios配置之准备工作
  4. Nagios 安装三部曲
  5. Nagios网络监控工作原理
  6. Nagios 简介与功能

 

 

责任编辑:赵鹏 来源: 网络转载
相关推荐

2011-03-21 13:10:13

NagiosWindows

2011-03-24 10:59:11

NagiosWindows监控

2011-03-24 11:03:05

Nagios监控Linux

2011-03-25 14:25:38

NagiosWindows监控

2011-07-01 10:26:15

NagiosWindows Ser

2011-04-06 14:24:27

Nagios监控Linux

2022-04-26 07:49:23

Nagios开源监控

2011-03-31 16:11:22

Redhat配置nagios

2011-03-28 16:23:23

nagios开源监控

2011-08-22 11:33:48

nagios

2011-03-22 10:48:28

Nagios监控

2011-03-28 16:37:38

2011-03-04 10:47:06

Nagios监控Sphinx

2011-03-24 10:08:39

Nagios监控oracle

2011-03-24 10:59:09

Nagios监控Mysql

2011-03-28 17:18:57

nagios监控iostat

2011-03-21 14:53:27

Nagios监控Linux

2011-04-01 15:42:13

CactiNagios

2011-03-24 08:56:23

nagios监控

2011-03-24 10:08:41

nagios启动
点赞
收藏

51CTO技术栈公众号