在一个复杂的nagios监控系统中,需要提供一些灵活的接口来对主机或者服务控制。如:当某台主机down机,需要禁用对改主机的检测;再如某个服务暂时进行维护,需要禁用对服务的检测等等。使用nagios自带的命令接口需要登录才能控制相关的主机和服务,我做了一个简单的CGI程序来处理这些命令(这些CGI需要放到apache的cgi-bin下,放到nagios的cgi-bin目录下需要身份认证)。
以下列出一些常用的命令:
一、主机命令:
格式:http://IP/cgi-bin/cmd_host?cmd_name=命令名称&host=主机名
1、禁用该主机的主动检查:
cmd_name:DISABLE_HOST_CHECK
host:主机名
2、启用该主机的主动检查:
cmd_name:ENABLE_HOST_CHECK
host:主机名
3、禁用该主机的通知
cmd_name:DISABLE_HOST_NOTIFICATIONS
host:主机名
4、启用该主机的通知
cmd_name:ENABLE_HOST_NOTIFICATIONS
host:主机名
5、禁用该主机上的所有服务通知
cmd_name:DISABLE_HOST_SVC_NOTIFICATIONS
host:主机名
6、启用该主机上的所有服务通知
cmd_name:ENABLE_HOST_SVC_NOTIFICATIONS
host:主机名
7、禁用该主机上的所有服务检查
cmd_name:DISABLE_HOST_SVC_CHECKS
host:主机名
8、启用该主机上的所有服务检查
cmd_name:ENABLE_HOST_SVC_CHECKS
host:主机名
9、禁用该主机接受被动检查
cmd_name:DISABLE_PASSIVE_HOST_CHECKS
host:主机名
10、启用该主机接受被动检查
cmd_name:ENABLE_PASSIVE_HOST_CHECKS
host:主机名
二、服务命令
格式:http://IP/cgi-bin/cmd_svc?cmd_name=命令名称&host=主机名&service=服务名
1、禁用该服务的主动检查
cmd_name:DISABLE_SVC_CHECK
host:主机名
service:服务名
2、启用该服务的主动检查
cmd_name:ENABLE_SVC_CHECK
host:主机名
service:服务名
3、停止接受该服务的被动检测结果
cmd_name:DISABLE_PASSIVE_SVC_CHECKS
host:主机名
service:服务名
4、开始该服务的接受被动检查
cmd_name:ENABLE_PASSIVE_SVC_CHECKS
host:主机名
service:服务名
5、禁用该服务的通知
cmd_name:DISABLE_SVC_NOTIFICATIONS
host:主机名
service:服务名
6、启用该服务通知
cmd_name:ENABLE_SVC_NOTIFICATIONS
host:主机名
service:服务名
下面的文件是所用到的CGI脚本,用法是将这些源码放到apache的cgi-bin目录下进行编译:
gcc -o cmd_host cmd_host.c
gcc -o cmd_svc cmd_svc.c