我的所有主机上的 Check_ntp_time 偶尔会失败。我通常会收到
CRITICAL - Socket timeout after 10 seconds
几分钟后,check_ntp_time 成功并显示正确的偏移量
NTP OK: Offset 0.0001899003983 secs
我尝试将 check_ntp_time 命令超时时间增加到 20 秒,但失败率相同。我尝试从 ntp.conf 中删除 nopeer 和 noquery,但无济于事(这很合理,因为如果是这个问题,它 100% 都会失败)。它在随机时间失败,然后立即成功,这一事实确实让我很困惑。还值得注意的是,它不会同时在所有主机上失败,通常每次在 1 到 3 个主机之间失败。知道是什么原因造成的吗?
我的check_ntp_time
命令如下:
define command{
command_name check_ntp_time
command_line $USER1$/check_ntp_time -H pool.ntp.org -t 20 -w 1 -c 3
}
编辑:
度量最小值最大值平均
检查执行时间:0.00 秒 20.00 秒 1.153 秒
检查延迟:0.00 秒 0.00 秒 0.000 秒
状态变化百分比:0.00% 31.84% 0.86%
每秒检查 2 次(每个 CPU 0.5 次)
答案1
这是因为检查尝试通过 IPv6 进行连接,超过“-t”指定的超时时间的一半后,它会返回到 IPv4。因此,您可以将超时时间减少到 10 秒,您应该会在 5 秒内收到响应:
[root@server ~]# time /usr/lib64/nagios/plugins/check_ntp_time -q -H time1.google.com -w 1 -c 2 -t 10
NTP OK: Offset 0.0004314184189 secs|offset=0.000431s;1.000000;2.000000;
real 0m5.767s
user 0m0.843s
sys 0m4.908s
或者您可以仅通过“-4”使用 IPv4,那么您将在不到 1 秒的时间内收到响应:
[root@server ~]# time /usr/lib64/nagios/plugins/check_ntp_time -q -H time1.google.com -4 -w 1 -c 2 -t 10
NTP OK: Offset 0.0006598234177 secs|offset=0.000660s;1.000000;2.000000;
real 0m0.401s
user 0m0.003s
sys 0m0.007s
答案2
通过更改我配置的 ntp 服务器来检查正确时间,这个问题已经得到解决。所有服务器可能同时查询它,并阻止了一些请求。我最终指向了一个内部 ntp 服务器,它本身正在从之前使用的源获取时间。