【发布时间】:2019-06-18 19:45:31
【问题描述】:
我有以下服务定义:
define service{
use my-service ; Name of service template to use
host_name dra
service_description https://www.example.com
check_command check_http!-I my.ip.address --ssl -H www.example.com
notifications_enabled 1
retry_check_interval 2
normal_check_interval 5
contact_groups myadmins
}
服务检查一直失败
Name or service not known
HTTP CRITICAL - Unable to open TCP socket
但是,如果我从命令行运行 http_check,我会得到 200 OK 结果:
/usr/lib/nagios/plugins/check_http -I my.ip.address --ssl -H www.example.com -v
.....
HTTP OK: HTTP/1.1 200 OK - 9176 bytes in 0.074 second response time |time=0.073543s;;;0.000000 size=9176B;;;0
还要注意,有问题的 URL 在浏览器中可以正常工作,证书是有效的,等等。我还对许多其他网站使用完全相同的服务定义,它们都可以正常工作。我唯一能想到的是这个远程主机在 DigitalOcean 上运行,并且分配了一个“浮动 IP”。我尝试用分配给主机的浮动 IP 或“标准”IP 替换上面的my.ip.address(以及在 nagios 配置文件的主机定义中),这没有区别。
同样的命令怎么可能在nagios运行时会失败,而手动运行时会成功?
【问题讨论】:
-
编辑:我开始认为这可能是由于 cloudflare 处理 www.example.com 的 A 记录。
-
我有一个类似的
check_http命令失败的案例。这里www.example.com是指向*.apps.example.com的CNAME --- 也许*混淆了插件命令使用的DNS 解析器?
标签: nagios