有没有办法从 Nagios Web GUI 或通过命令行启动对服务组中所有服务的检查?
例如,我有一个服务组,该组在 30 台机器上运行检查。我想启动一个命令,强制在这 30 台机器上进行检查。我知道您可以通过单台机器上的 GUI 执行此操作,但如果可以针对整个服务组执行此操作,那就太好了。
答案1
我不知道有任何方法可以通过标准 GUI 来实现这一点。
但你可以做的一件事是安装实时状态模块。此模块使 Nagios 监听套接字,您可以对其运行查询并检索信息。启用此 API 后,您应该能够编写一个脚本来获取有关服务组的信息,然后运行一系列命令。
您的系统还必须具有外部命令已启用。实时状态是您获取信息的方式。外部命令是您发送执行操作请求的方式。
此示例脚本可能可以帮助您入门。此脚本向实时状态发送查询以查找所有处于非状态的主机OK
。然后,它会强制立即重新检查处于此状态的每个主机。
#!/bin/bash
LIVESTATUSSOCKET=/var/lib/nagios3/rw/live
NAGIOS_CMD_SOCKET='/var/lib/nagios3/rw/nagios.cmd'
export IFS=';'
echo "GET hosts
Columns: state host_name
Filter: state != 0
" | unixcat $LIVESTATUSSOCKET \
| (
while read -a LINE ; do
/usr/bin/printf "[%lu] SCHEDULE_HOST_CHECK;%s;%s\n" \
$(date +%s) \
"${LINE[1]}" \
$(date +%s) | tee -a $NAGIOS_CMD_SOCKET
done
)