在 Centos7 中 Nagios 的安装 中,介绍了Nagios 核心及插件的安装,本文描述如何通过 Nagios 来监控 Windows 主机的系统属性和本地服务,例如:
监控 Windows 主机的系统属性和本地服务,需要在这台 Windows 主机上安装一个代理程序,Nagios 的监控插件将通过这个代理来监控 Windows 主机的系统属性和本地服务。没有这个代理,Nagios 是无法监控这些的。
NSClient++ 就是这个代理程序,可以前往 http://sourceforge.net/projects/nscplus 获取安装包。Nagios 的插件 check_nt
可以与这个代理进行交互。
运行 NSCP-0.4.1.73-x64.msi
安装程序,选择合适的目录。
配置 Nagios 服务器的地址及访问密码,并选择加载的模块
安装完成后,将自动生成系统服务 NSClient ++
,在防火墙配置时需要允许该服务通过网络访问。
这里需要在 Nagios 服务器上定义这台需要监控的 Windows 主机,以及需要监控的服务。
如果是第一次监控 Windows 主机,首先需要在 Nagios 的主配置文件中加载 Windows 主机的配置。
vi /usr/local/nagios/etc/nagios.cfg
去掉下边这行的注释就可以了
#cfg_file=/usr/local/nagios/etc/objects/windows.cfg
当然也可以新建一个配置文件,让 Nagios 的主配置文件去加载。
主机及监控服务的配置在前面讲到的 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
属性来定义所属的主机组,这样定义的优先级更高,会覆盖模板中的定义。
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++ 的版本,这样就能掌握哪些主机需要进行升级。
define service {
use generic-service
host_name winserver
service_description Uptime
check_command check_nt!UPTIME
}
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 级别的报警。
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 级别的报警。
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 级别的报警。
define service {
use generic-service
host_name winserver
service_description W3SVC
check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
}
如果 W3SVC 服务是停止状态,则触发 CRITICAL 级别的报警。
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 主机和服务的监控定义就是以上部分,还需要监控其他服务项目,就可以像上边一样继续添加需要监控的服务。
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 界面,可以查看到监控的项目。