Nagios:使用 XMPP 检查 HTTP,通知缺少 URL

Nagios:使用 XMPP 检查 HTTP,通知缺少 URL

我们使用 Nagios 安装来监控我们的基础设施和许多网站。监控网站的方式是使用check_http作为参数传递的 URL。我们之所以使用这种方式,是因为多个网站托管在同一系统上,并且由于产品的 URL 键可能会发生变化,因此 URL 可能会发生合理变化。

因此 HTTP 检查基本上如下所示:

define service {
        host_name                               ourhostname
        service_description                     Typo 3
        check_command                           check_http!www.ourdomain.com!/
        max_check_attempts                      3
        check_interval                          1
        retry_interval                          1
        check_period                            24x7
        notification_interval                   30
        notification_period                     24x7
        contact_groups                          developers
}

问题就在这里。当出现值得通知的问题时,sendxmpp 被这样调用:

define command {
        command_name    notify-service-by-xmpp
        command_line    echo "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $ARG1$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/sendxmpp -j <server-ip> -u nagios -p <password> $CONTACTPAGER$
}

当我们尝试使用 时$ARG1$,我们需要检查 URL。通知似乎可以访问有问题的对象的标准变量(例如$HOSTADDRESS$),但我们需要 URL。

问题也可能是我检查 URL 时出错了。通常,您只有一个HOSTADDRESS条目,但在主机定义中记录 URL 似乎是错误的,然后添加多个命令进行$HOSTADDRESS1$检查$HOSTADDRESS15$

是否有人有关于如何访问传递给测试的命令行参数的解决方案,或者有更好的想法,关于如何在不打开多个不同命令或不同主机的情况下检查不同虚拟主机下同一主机的大量 URL?

答案1

我不知道是否有更好的解决方案,但这似乎是自定义变量的一个用例(参考:http://nagios.sourceforge.net/docs/3_0/customobjectvars.html

只需在您的服务定义中添加类似这样的内容:

_domain             www.ourdomain.com

然后您可以在通知命令中使用它$_DOMAIN$

相关内容