我们的例行维护要求停止服务。
问题是这些服务有 Nagios 检查,我们要么必须转到 Web 界面并禁用检查,要么获取电子邮件。
有没有办法从 Windows 和/或 Linux 客户机上的命令行禁用 Nagios 检查(或通知)并启用它?理想情况下,这将发生在我们正在执行维护的机器上,而不是 Nagios 服务器本身。
我想在维护前禁用通知/检查,并在维护后重新启用它们。
答案1
假设访客可以访问 Web 界面,则以下命令行应该可以起作用:
禁用通知
curl -d "cmd_typ=23&cmd_mod=2&host=[THE HOST]&service=[THE SERVICE]&btnSubmit=Commit" "http://[[NAGIOS SERVER]/nagios/cgi-bin/cmd.cgi"
启用通知
curl -d "cmd_typ=22&cmd_mod=2&host=[THE HOST]&service=[THE SERVICE]&btnSubmit=Commit" "http://[[NAGIOS SERVER]/nagios/cgi-bin/cmd.cgi"
根据您的设置,您可能还需要使用 curl 的 --insecure 或 --user 选项。
并且IIRC,cmd_type编号对于服务和主机组是不同的——请查看您的网络浏览器中正在使用的链接。
答案2
你可以使用以下方式启用/禁用主机通知nagios 命令命令
例如:
禁用 my-host 的所有通知
now=`date +%s`
#Check first path nagios.cmd & printf
commandfile='/var/lib/nagios3/rw/nagios.cmd'
/usr/bin/printf "[%lu] DISABLE_HOST_NOTIFICATIONS;my-host\n" $now > $commandfile
启用 my-host 的所有通知
now=`date +%s`
#Check first path nagios.cmd & printf
commandfile='/var/lib/nagios3/rw/nagios.cmd'
/usr/bin/printf "[%lu] ENABLE_HOST_NOTIFICATIONS;my-host\n" $now > $commandfile
你也可以检查这个网址Nagios 通知命令
答案3
对于此类用途,您可以编辑 nagios 服务文件,并禁用此主机上所有服务的检查,就像您在 Web 界面中所做的那样,这需要修改一些选项。
让我们举个例子,如果您需要禁用机器 nibiru 中的 DNS 服务检查,请禁用主动/被动检查,如下所示。
define service{
host_name nibiru
service_description DNS
...
active_checks_enabled 0 ; set value to 0
passive_checks_enabled 0 ; set value to 0
...
}