Nagios环境下监控windows机方法介绍:
(以下方法默认是在配置好了nagios服务器端后所进行的操作)
NSClient的原理如下图
Nagios使用NSClient++监控远程Windows主机
可以看到,NSClient与nrpe最大的区别就是:
--被监控机上安装有nrpe,并且还有插件,最终的监控是由这些插件来进行的.当监控主机将监控请求发给nrpe后,nrpe调用插件来完成监控.
--NSClient则不同,被监控机上只安装NSClient,没有任何的插件.当监控主机将监控请求发给NSClient后,NSClient直接完成监控,所有的监控是由NSClient完成的.
这也说明了NSClient的一个很大的问题,不灵活,没有可扩展性.它只能完成自己本身包含的监控操作,不能由一些插件来扩展.好在NSClient已经做的不错了,基本上可以完全满足我们的监控需要.
在Windows机中进行以下操作:
安装NSClient
下载NSClient++-0.3.8-Win32.zip
解压为C:\NSClient++
打开cmd 切换到C:\NSClient++
执行nsclient++ /install进行安装
执行nsclient++ SysTray 注意大小写,这一步是安装系统托盘,时间稍微有点长
(注意,SysTray为系统托盘管理,只用于将NSClient++的运行情况反映在系统的托盘中,所以要是此步不通过的话也没有直接的影响,只是方便用于的检查而已,实际中,还可以在windows系统服务器(右键“我的电脑”->管理->服务器)中来检查NSClient++的运行情况)
在运行里面输入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字样的图标
(要是之前启动SysTray中失败的话将不会显示此图标)
查看服务
已经正常启动了.注意服务默认设的是”自动”,也就是说是开机自动启动的.
在cmd里面执行netstat –an可以看到已经开始监听tcp的12489端口了
(要是没有防火墙的话可以忽略此步)这样外部就可以访问了吗?错!防火墙也要打开tcp的12489端口,否则nagios检查此服务的时候会报socket超时错误.是critical哦!后果很十分严重啊.我就犯了这个错误,所以特别强调一下.
这样被监控机的配置就搞定了,它就等待nagios发出某个监控请求,然后它执行请求将监控的结果发回到nagios监控主机上.
接下来配置nagios服务器里面的内容 :
linux配置| 因为nagios是模块化调用,先到配置文件打开windows相关模块
vi /usr/local/nagios/etc/nagios.cfg # Definitions for monitoring the local (Linux) host cfg_file=/usr/local/nagios/etc/objects/localhost.cfg # Definitions for monitoring a Windows machine cfg_file=/usr/local/nagios/etc/objects/windows.cfg #去掉这句话的注释 |
打开模块后配置windows.cfg
vi /usr/local/nagios/etc/objects/windows.cfg define host{ use windows-server host_name winserver #被监控主机名 alias My Windows Server address 192.168.0.8 ; 被监控的windows地址 #把下面的host_name都改成winserver define service{ use generic-service host_name winserver service_description CPU Load check_command check_nt!CPULOAD!-l 5,80,90 #监控CPU使用 } define service{ use generic-service host_name winserver *(在这里添加another服务器) service_description Memory Usage check_command check_nt!MEMUSE!-w 80 -c 90 #监控内存 } |
define service{
use generic-service
host_name lan-masterdata
service_description F:\ Drive Space
check_command check_nt!USEDDISKSPACE -l f -w 80 -c 90;-l f 表示是监控F:\盘
}
define service{
use generic-service
host_name win14,win153,win152,win227,win91,win231,win51
service_description port80
check_command check_tcp!80
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
notification_interval 1
notification_period 24x7
notification_options u,c,r
}
define service{
use local-service ; Name of service template to use
host_name win14,win153,win152,win227,win91,win231,win51
service_description PING
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
notification_interval 1
notification_period 24x7
notification_options u,c,r
check_command check_ping!100.0,20%!500.0,60%
}
/usr/local/nagios/etc/nagios.cfg:
interval_length 表示时间单位,默认为60,即1分钟
/usr/local/nagios/etc/objects/services.cfg:
normal_check_interval 表示重新检测的时间间隔,默认为3个时间单位
check_interval 与normal_check_interval的作用一样,只能在3.X中使用
etry_check_interval 重试时间
max_check_attempts 这个是出现故障的连接次数,达到这个次数之后就报警
关于max_check_attempts、normal_check_interval、retry_check_interval三个参数。
首先要说明两个概念,一、软态:被监控项处于retry_check检测周期内的非正常状态;二、硬态:被监控项达到max_check_attempts最大次数后的非正常状态;除此之外的状态,我们估且称之为“常态”。
我们试着看看设置如下参数时,Nagios是怎么做状态检测及告警的:
引用
max_check_attempts 3
normal_check_interval 3
retry_check_interval 2
notification_interval 3
首先,Nagios每三分钟检测一次服务,当某次检测到服务状态为异常时,直接进入软态(1/3 soft state),此后,以每2分钟(retry_check_interval)的检测频率,再进行2次(一共进行3次检测,从而达到 max_check_attempts)检测,如果这两三检测服务都为异常,则直接进入硬态(hard state)。进入硬态后,Nagios以每3分钟(normal_check_interva)一次的频率检测服务,这与常态时是一样的;同时每3分钟 (notification_interval)进行一次告警。
最后,当nagios服务器和windowns客户端都准备好的时候,先重启nagios服务,然后打开http://localhost/nagios/刷新后就会在servies中看到被检测的win机了。
Enjoy!