check_http!--ssl 实际上检查 http

check_http!--ssl 实际上检查 http

当监控运行 HTTPS 但不运行 HTTP 的主机上的 SSL 服务时,Icinga 会警告返回代码为 403 Forbidden。但该警告针对的是 HTTP,而不是 HTTPS。

使用 -S 或 --ssl 手动运行 check_http 命令将返回 200 OK 代码(仅针对 HTTP 运行时将返回 403 Forbidden 响应)。

但是,自动服务检查无论使用开关--check_http!-S 或 check_http!--ssl 都会返回 403 错误。

Icinga 不会抱怨使用此服务检查监控的其他 SSL 主机,也许是因为它们也都运行 HTTP。

Icinga 使用 Nagios 插件,所以我认为这是 Nagios 或(更可能)配置问题。

如何修复此错误报告?SSL 服务正在主机上运行。

这是在 Debian wheezy 上运行的 Icinga 1.7.1-7。谢谢!

答案1

您不能仅将“-S”或“--ssl”作为 ARG 传递给检查,除非明确写明需要这样做。

去看看/etc/nagios-plugins/config/http.cfg,一切都应该清楚了。Debian 软件包附带了十几个不同的 check_http 命令,用于不同的用例。您可能想要使用check_https它或其变体。

有关背景信息,请参阅宏及其工作原理文档。

答案2

对 Keith 的回答的小补充:现在,Debian 上的 Icinga2 可以包含/usr/share/icinga2/include/command-plugins.conf而不是/etc/nagios-plugins,这不会自动复制选项$HOSTADDRESS$的宏-H

因此 check_http 最终会查询主机名 IP 的默认 vhost,这可能会悄悄地产生意外的结果。

从这个错误中吸取教训后,我的基本服务配置现在如下所示:

apply Service "check_https" {
    import "generic-service"

    check_command = "http"
    vars.http_warn_time = 10
    vars.http_critical_time = 50
    vars.http_vhost = "$address$"
    vars.http_ssl = true
    vars.http_sni = true
    vars.sla = "24x7"

    check_interval = 5m
    retry_interval = 2m

    assign where "https-website" in host.groups
}

相关内容