当监控运行 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
}