jxwjq 发表于 2019-1-15 11:55:08

nagios搭建(二):nagios监控windows主机

  此文章中参考了老林的博客:http://lilinqing.blog.运维网.com/1122687/483604自己在里面添加了一些内容,开始吧.....
  监控主机   系统:centos   IP:192.168.0.170
  被监控机    系统:windows server2003IP:192.168.0.125
  服务器端nagios的安装在http://fantefei.blog.运维网.com/2229719/932623
  此文章中我使用的是sendmail的报警方式
  nagios下的sendmail安装和配置在http://fantefei.blog.运维网.com/2229719/941058
   因为被监控主机是windows系统,需要安装nsclient++-0.3.6-win32.msi,这是一个客户端工具,通过监控服务器上的check_nt这一个插件来检查WINDOWS机器的服务,当监控服务器将监控请求发给NSClient后,通过NSClient客户端检查监控项目,所有的监控都是由NSClient来完成。
     1.在被监控主机windows端安装nsclient++-0.3.6-win32.msi
  注意被监控机操作系统是32位还是64位,要安装对应版本的NSClient++,我的系统是32位的
        双击安装,NEXT>NEXT>NEXT>
         http://blog.运维网.com/attachment/201207/143534586.png
     上面写的IP是nsclient客户端允许连接的IP,此地方写的是监控机的IP,下面写的是监控机连接被监控端nsclient时的密码,不设密码为空,为了更安全可以设上,但我觉得没必要设,因为你只允许监控机连接你的nsclietn++了,别的机器是拒绝连接的,除非别人知道你的监控机IP,然后伪造个相同ip来偷偷监控你的windows机器,这概率应该很小吧,设上后监控端要做相应的设置才能正常连接windows被监控机,比较麻烦。个人愚见至于加不加密码自己决定,下面的模块就按图上的勾选就可以了。
  如果加上密码在监控机中要修改nagios安装目录下的etc/objects/commands.cfg修改chect_nt命令定义部分,加个-s 后跟连接密码,注意在这里修改的前提是每个nsclient设置的密码都是相同的,如果设置的不同则不能改这里,则需要改etc/objects/windows.cfg中的服务定义部分。
define command{
      command_name    check_nt
      command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s 7758521 -v $ARG1$ $ARG2$
      }

     安装完成,看一下服务里有没有,有的话就证明安装成功了。
http://blog.运维网.com/attachment/201207/145056551.png
  在NSClinet++上面点右键属性,打开服务,如下图: 服务已经启动了

http://blog.运维网.com/attachment/201208/153040597.jpg
  点登录,在登录登录身份下面勾选允许服务与桌面交互,如下图:

http://blog.运维网.com/attachment/201208/153055321.jpg
  我们看一下12489是否开启了:
http://blog.运维网.com/attachment/201208/103531740.png
  另外要保证nsclient++是随机自动启动的。
  到这里就已经在WINDOWS主机上安装好了,如果你有防火墙的话请打开TCP的12489端口,否则nagios检查此服务的时候会报socket 超时错误。
   2.在监控机上设置nagios
     先打开nagios.cfg里的windows的监控,默认的是注释掉的
  #vim /usr/local/nagios/etc/nagios.cfg
  把里面的#cfg_file=/usr/local/nagios/etc/objects/windows.cfg前的#号去掉
http://blog.运维网.com/attachment/201207/150413469.png
     nagios用的check_nt插件来监控windows主机,此命令在commands.cfg里定义的:
http://blog.运维网.com/attachment/201207/151151901.png
  注:check_nt的命令是nagios3.0后才加入commands.cfg的,所以你要不是nagios3.0以上的请自动添加
  下面我们编辑/usr/local/nagios/etc/objects/windows.cfg
  (1)首先我们定义被监控的主机及内容:
http://blog.运维网.com/attachment/201207/152108301.png
  use使用的是objects下的templates.cfg定义的模版windows-server,下面我们看一下templates.cfg下windows-server的内容
http://blog.运维网.com/attachment/201207/152710386.png
  下面说一下里面的内容什么意思:
  name 定义的模版的名字,注意如果自定义的话winows-server后面不要有空格啊
  use 这个模版里用的其他模版的参数,generic-host也是在templates.cfg里面定义的
  check_period 定义的检查主机时间段,24x7在objects下的timeperiods.cfg里面定义的,表示一星期的每天都监视
  check_interval    nagios对主机的检查时间间隔 这里是1分钟
  retry_interval   重试检查的时间间隔,这里是1分钟
  max_check_attempts   nagios对主机的最大检查次数,也就是nagios在检查过程中发现了某主机异常时,并不是马上判断为异常状况,而是多试几次,因为可能是一时网络太拥挤或是一些其他原因是主机受到了一些影响,这里的设置为1主要是为了实验效果出现的更快,现实中要多设置几次。
  check_command   检查主机状态的命令,此命令在commands.cfg中定义
  notification_period 主机故障,发送通知的时间范围
  notification_interval   在主机出现异常后,故障一直没有解决nagios再次对使用者发出通知的时间间隔,
  notification_options定义主机什么状态下给使用者发送通知,d表示宕机 r表示恢复
  conact_groups 指定联系人组   admins在contacts.cfg里定义的联系人组,只要再在contacts.cfg里定义个联系人,然后把他加进组里就可以受到通知了,为了更明了还是看一下contacts.cfg里的内容吧:
http://blog.运维网.com/attachment/201207/155002832.png
  上面nagiosadmin就是定义的联系人,email就是写的联系邮箱。
  好了,说完use里的模版,接着说下面的
  host_name指定的是nagios网页见面显示的主机标识
http://blog.运维网.com/attachment/201207/161239933.png
  address指定的是windows主机的IP
  (2)定义检测的服务
  加入下面的检查被监控端nsclient++的版本号
  define service{
            use          generic-service
            host_name   winserver
            service_description NSClient++ Version
            check_commandcheck_nt!CLIENTVERSION
             }
         加入下面的服务定义以监控Windows机器的启动后运行时间。
         define service{
         use          generic-service
         host_name   winserver
         service_description Uptime
         check_commandcheck_nt!UPTIME
            }
         加入下面的服务定义可监控Windows机器的CPU利用率,并在5分钟CPU负荷高   于90%时给出一个紧急警报或是高于80%时给出一个告警警报。
         define service{
         use   generic-service
         host_name   winserver
         service_description CPU Load
          check_commandcheck_nt!CPULOAD!-l 5,80,90
         }
          加入下面的服务定义可监控Windows机器的内存占用率,并在5分钟内存占用率高于90%时给出一个紧急警报或是高于80%时给出一个告警警报。
         define service{
         use   generic-service
         host_name   winserver
         service_description Memory Usage
         check_commandcheck_nt!MEMUSE!-w 80 -c 90
            }
          加入下面的服务定义可监控Windows机器的C:盘的磁盘利用率,并在磁盘利用率高于90%时给出一个紧急警报或是高于10%时给出一个告警警报。
          define service{
          use          generic-service
          host_name   winserver
          service_description C:\ Drive Space
         check_commandcheck_nt!USEDDISKSPACE!-l c -w 10 -c 90
         }
  //-l 后面接的是盘符      把红色c换成d就是监控d盘
         加入下面的服务定义可监控Windows机器上的W3SVC服务(IIS的3w网站服务)状态,并在W3SVC服务停止时给出一个紧急警报。
          define service{
          use          generic-service
          host_name   winserver
          service_description W3SVC
          check_commandcheck_nt!SERVICESTATE!-d SHOWALL -l W3SVC
         }// W3SVC替换成别的服务名就是监控那个服务
      加入下面的服务定义可监控Windows机器上的Explorer.exe进程,并在进程没有运行时给出一个紧急警报。
      define service{
      use   generic-service
      host_name   winserver
      service_description Explorer
      check_commandcheck_nt!PROCSTATE!-d SHOWALL -l explorer.exe
  }
  //要是监控其他的进程就把explorer.exe换成那个进程,注意这个explorer.exe第一个e是小写的,有些文档是大写的就报警了,因为windows的进程就是小写的。
      (3)配置好了以后用/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  如果没有报错就可以启动了,通过192.168.0.170/nagios就可以看到服务器的监控信息了
http://blog.运维网.com/attachment/201207/171507139.png
  上图因为我设置的c盘的使用率高于10%就告警,这时我也收到邮件了:
http://blog.运维网.com/attachment/201207/171909616.png
  (4)如果配置好了但nagios取不到值那就用/usr/local/nagios/libexec/check_nt来看一下是否能连接上监控机
http://blog.运维网.com/attachment/201207/172346651.png
  能取到值说明没问题。
  check_nt用法如下:
check_nt -H host -v variable [-p port] [-w warning] [-c critical] [-l params] [-d SHOWALL] [-u] [-t timeout]
选项:
-H 后跟被监控机主机名或IP
-p 后跟被监控nsclient端口号,默认是12489(必需有这个选项否则显示连接拒绝)
-s 后跟连接密码
-w 后跟wanring报警值
-c 后跟critical报警值
-t 后跟连接尝试次数
-h 显示帮助
-V 显示check_nt版本
-v 后跟要查看的性能值
可用的性能值有:
CLIENTVERSION   显示nsclient++版本
CPULOAD   -l,,.
注意: 不要大于 24*60.   
例: -l 60,90,95,120,90,95显示最后60分钟和120分钟waring为90%,critical为95%的平均cpuload
UPTIME         显示开机运行时间
USEDDISKSPACE显示磁盘空间信息
例:-l c 显示当前c盘空间使用信息
   -l d -w 90 -c 95显示d盘设waring为90%,critical为95%时的空间使用信息
MEMUSE 显示内存使用情况,后可跟-w-c指定报警值,默认为5分钟内平均值
SERVICESTATE 检查一个或多个服务状态
-l ,,,...
用 -d SHOWALL 可以查看正在运行有服务
PROCSTATE 检查进程状态
-l
COUNTER 检查一些性能计数
      用法:
      -l "\\\\counter","
          参数用于打印输出一个需要浮点参数的命令 ,如果 不包含 "%%", 它会做为一个标签
例:"Paging file usage is %%.2f %%%%"
"%%.f %%%% paging file used."
INSTANCES   检查性能对象计数
用法: check_nt -H-p-v INSTANCES -l
   是一个windows性能对象计数 (eg. Process),
  如果它是两个词,它应该引号括起来,返回的结果将是一个逗号分隔的对象
check_nt用法举例:
check_nt -H 192.168.1.2 -p 12489 -v CPULOAD -l 60,90,95//显示最后60分钟waring为90%,critical为95%时的平均cpuload
check_nt -H 192.168.1.2 -p 12489 -v UPTIME//显示192.168.1.2从开机到现在运行时间
check_nt -H 192.168.1.2 -p 12489 -v USEDDISKSPACE -l c //显示192.168.1.2 C盘使用情况
check_nt -H 192.168.1.2 -p 12489 -v USEDDISKSPACE -l d -w 60 -c 95 //显示192.168.1.2 D盘设waring为90%,critical为95%时的空间使用信息
check_nt -H 192.168.1.2 -p 12489 -v MEMUSE//显示192.168.1.2内存使用情况
check_nt -H 192.168.1.2 -p 12489 -v SERVICESSTATE -d SHOWALL//显示192.168.1.2所有正在运行的服务
check_nt -H 192.168.1.2 -p 12489 -v SERVICESSTATE -d SHOWALL -l W3SVC //显示192.168.1.2上IIS网站服务运行情况
check_nt -H 192.168.1.2 -p 12489 –s 7758521 –v CLIENTVERSION//查看192.168.1.2上nsclient++版本
check_nt -H 192.168.1.2 -p 12489 –s 7758521 -v INSTANCES -l Process //列举192.168.1.2上运行的进程
添加多台windows监控主机
  如果你有多台windows服务器监控,还需做一下操作。
  (一)在/usr/local/nagios/etc/objects/下添加第二台windows主机(假设第二台为windows主机为efg)的配置文件efg.cfg,可以直接将windows.cfg直接复制并改名,还需要修改里面相应的host_name和address。
  如果有多台windows主机就需新建多少个配置文件
  (二)修改/usr/local/nagios/etc/nagios.cfg找到:
  # Definitions for monitoring a Windows machine
cfg_file=/usr/local/nagios/etc/objects/windows.cfg (这是指定的第一台windows监控主机的配置文件。)
  在这行下面添加第二台windows监控主机的配置文件路径:
  cfg_file=/usr/local/nagios/etc/objects/efg.cfg 保存退出。
  如果有多台主机需要监控,就继续添加。
  退出后重启nagios然后登陆web就可以看到windows主机添加成功。



页: [1]
查看完整版本: nagios搭建(二):nagios监控windows主机