在Nagios中自动执行计划并取消停机时间

时间:2016-05-16 06:16:43

标签: curl command cgi nagios downtime

我正在尝试安排并取消Nagios core 4.x中的停机时间。

我可以使用以下cmd为主机安排停机时间:

curl --silent --show-error  --data cmd_typ=55 --data cmd_mod=2 --data host=automichost1  --data "com_data=Updating+application" --data trigger=0 --data "start_time=05-15-2016 19:00:00" --data "end_time=05-15-2016 19:15:00" --data fixed=1 --data btnSubmit=Commit --insecure http://localhost:80/nagios/cgi-bin/cmd.cgi -u "nagiosadmin:XXXXXX"

此cmd不会返回生成的停机时间ID ,只会返回一个html文件。

但要取消计划停机时间,我需要使用以下

curl --silent --show-error  --data cmd_typ=78 --data cmd_mod=2 --data down_id=2  --data "com_data=Updating+application" --data btnSubmit=Commit --insecure http://localhost:80/nagios/cgi-bin/cmd.cgi -u "nagiosadmin:xxxxxxx"

这里我需要down_id来取消停机时间。在自动化脚本中,无法从任何nagios外部命令获取此停机时间ID。我还尝试了http://docs.icinga.org/latest/en/cgiparams.html上提到的以下外部命令 CMD_DEL_DOWNTIME_BY_HOST_NAME 171

但这不适用于Nagios并提供消息"抱歉,但您无权提交指定的命令。"。

我现在被困住了,无法前进。有谁知道如何实现这个目标?

2 个答案:

答案 0 :(得分:2)

由于很长时间我没有得到我的查询的答案,我发布了我是如何解决它的。

我在nagios客户论坛上问了同样的问题并得到了答复。 JSON查询生成器对于这类事物非常方便(其中x.x.x.x是您的Core安装):

<强> X.X.X.X /的nagios / jsonquery.html

JSON查询生成器简介:

labs.nagios.com/2014/06/19/expl ... -7-part-1 /

如果您想检查主机y.y.y.y是否已安排停机时间,您可以尝试以下查询(其中x.x.x.x是您的Core安装):

http://x.x.x.x/nagios/cgi-bin/statusjson.cgi?query=downtimelist&formatoptions=whitespace&hostname=y.y.y.y&downtimeobjecttypes=host&downtimetimefield=starttime

如果没有安排停机时间,

停机列表将为空,否则它将包含主机y.y.y.y的每个计划停机时间的停机时间ID。

此外,如果您需要图形响应,请从正在运行的脚本中删除json:

http://x.x.x.x/nagios/cgi-bin/status.cgi?query=downtimelist&formatoptions=whitespace&hostname=y.y.y.y&downtimeobjecttypes=host&downtimetimefield=starttime

答案 1 :(得分:2)

我使用此命令在Centos服务器上成功删除/取消了“停机时间ID”251到348:

for i in `seq 251 348`; do /bin/printf "[%lu] DEL_SVC_DOWNTIME;$i\n" `date +%s` > /var/spool/nagios/cmd/nagios.cmd; done