Nagios 监控 Windows 服务器

概要

在 Centos7 中 Nagios 的安装 中,介绍了Nagios 核心及插件的安装,本文描述如何通过 Nagios 来监控 Windows 主机的系统属性和本地服务,例如:

  • 内存占用
  • CPU 负载
  • 磁盘使用
  • 服务状态
  • 进程

简介

监控 Windows 主机的系统属性和本地服务,需要在这台 Windows 主机上安装一个代理程序,Nagios 的监控插件将通过这个代理来监控 Windows 主机的系统属性和本地服务。没有这个代理,Nagios 是无法监控这些的。

NSClient++ 就是这个代理程序,可以前往 http://sourceforge.net/projects/nscplus 获取安装包。Nagios 的插件 check_nt 可以与这个代理进行交互。

Nagios 监控 Windows 服务器_第1张图片

安装 Windows 代理

  1. 运行 NSCP-0.4.1.73-x64.msi 安装程序,选择合适的目录。

  2. 配置 Nagios 服务器的地址及访问密码,并选择加载的模块

    Nagios 监控 Windows 服务器_第2张图片

  3. 安装完成后,将自动生成系统服务 NSClient ++ ,在防火墙配置时需要允许该服务通过网络访问。

配置 Nagios

这里需要在 Nagios 服务器上定义这台需要监控的 Windows 主机,以及需要监控的服务。

1 准备工作

如果是第一次监控 Windows 主机,首先需要在 Nagios 的主配置文件中加载 Windows 主机的配置。

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

去掉下边这行的注释就可以了

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

当然也可以新建一个配置文件,让 Nagios 的主配置文件去加载。

2 定义主机及主机组

主机及监控服务的配置在前面讲到的 windows.cfg 配置文件中,Nagios 核心定义了一套基础的范例,来实现对一台 Windows 主机的监控项目。

define host {
    use         windows-server
    host_name   winserver
    alias       My Windows Server
    address     192.168.1.2
}
  • use:指定主机所使用的模板名称,模板定义在 template.cfg 中。主机的模板通常是定义一类型主机的公共监控属性,例如每隔多长时间触发一次监控,报警发送给哪些人等等。模板的定义在其它章节会详细说明,这里就不具体说明了。

  • host_name:主机名称

  • alias:主机的别名,可以是一个较长的说明

  • address:主机的地址

下边是主机组的定义

define hostgroup{
        hostgroup_name  windows-servers 
        alias           Windows Servers
        }

因为模板 windows-server 中定义了使用该模板的主机所属的主机组是 windows-servers,因此刚才定义的主机默认属于这个主机组。在主机的定义中也可以使用 hostgroups 属性来定义所属的主机组,这样定义的优先级更高,会覆盖模板中的定义。

3 定义监控服务

1 监控 NSClient++ 版本

define service {
    use                 generic-service
    host_name           winserver
    service_description NSClient++ Version
    check_command       check_nt!CLIENTVERSION
}
  • use:监控服务所使用的模板

  • host_name: 监控的主机

  • service_description: 监控服务的描述

  • check_command:监控命令,check_nt 是一个监控命令名称,定义在 commands.cfg 中,在 commands.cfg 中详细定义了监控脚本的执行方式,CLIENTVERSION 是其第一个参数

监控 NSClient++ 版本可以帮助我们在计划升级 NSClient++ 版本时,清楚了解运行 NSClient++ 的版本,这样就能掌握哪些主机需要进行升级。

2 监控服务器运行时间

define service {
    use                 generic-service
    host_name           winserver
    service_description Uptime
    check_command       check_nt!UPTIME
}

3 监控 CPU 负载

define service {
    use                 generic-service
    host_name           winserver
    service_description CPU Load
    check_command       check_nt!CPULOAD!-l 5,80,90
}

如果5分钟 CPU 负载超过 80%,触发 WARNING 级别的报警;5分钟 CPU 负载超过 90%,则触发 CRITICAL 级别的报警。

4 监控内存占用情况

define service {
    use                 generic-service
    host_name           winserver
    service_description Memory Usage
    check_command       check_nt!MEMUSE!-w 80 -c 90
}

当内存占用超过 80% 时,触发 WARNING 级别的报警;超过 90%,则触发 CRITICAL 级别的报警。

5 监控磁盘空间

define service {
    use                 generic-service
    host_name           winserver
    service_description C:\ Drive Space
    check_command       check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}

监控 C 盘的磁盘空间,使用超过 80% 触发 WARNING 级别的报警;超过 90%,则触发 CRITICAL 级别的报警。

6 监控 W3SVC 服务的状态

define service {
    use                 generic-service
    host_name           winserver
    service_description W3SVC
    check_command       check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
}

如果 W3SVC 服务是停止状态,则触发 CRITICAL 级别的报警。

7 监控进程 Explorer.exe

define service {
    use                 generic-service
    host_name           winserver
    service_description Explorer
    check_command       check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
}

如果运行进程中不存在 Explorer.exe 进程,则触发 CRITICAL 级别的报警。

Windows 主机和服务的监控定义就是以上部分,还需要监控其他服务项目,就可以像上边一样继续添加需要监控的服务。

4 监控命令的定义

Nagios 的监控命令定义在 commands.cfg 中,例如上边监控服务所使用的 check_nt

define command {
    command_name    check_nt
    command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
}
  • command_name:监控命令名称

  • command_line:执行的命令行,这里面需要修改的是 PASSWORD,将其修改为安装 NSClient++ 时所设置的密码。

Windows 主机和服务的监控配置完毕,重新加载配置文件

systemctl reload nagios

这时通过 Web 界面,可以查看到监控的项目。

windows主机监控项目

你可能感兴趣的:(运维)