我有两个 NTP 层 3 服务器正在运行,并且想要创建一个简单的检查,我可以判断其中一个服务器的时间是否漂移并警告它没有与公共层 2 服务器正确同步。
我的第一个想法是从多个第 2 层服务器中提取时间,并将该时间与我的 ntp 服务器发送的时间进行比较。然后在漂移超过 X delta 时发出警报。
是否有更标准的方法或更好的方法来验证 NTP 服务器是否发送正确的时间?
我有两个 NTP 层 3 服务器正在运行,并且想要创建一个简单的检查,我可以判断其中一个服务器的时间是否漂移并警告它没有与公共层 2 服务器正确同步。
我的第一个想法是从多个第 2 层服务器中提取时间,并将该时间与我的 ntp 服务器发送的时间进行比较。然后在漂移超过 X delta 时发出警报。
是否有更标准的方法或更好的方法来验证 NTP 服务器是否发送正确的时间?
TL;博士:
长版:
配置
良好的 NTP 监控最重要的基础是良好的 NTP 配置。为了更好地理解这一点,请阅读NTP Best Current Practices (BCP 223/RFC 8633)。以下是其配置建议的简要总结:
在哪里测量
一旦你有一个好的本地配置,要记住的主要事情是你的检查应该查询本地 NTP 服务器的指标,而不是尝试手动测量远程服务器的偏移量。主要的 NTP 服务器(ntpd 和 chronyd)已经收集了您需要的所有指标,因此将时钟与远程服务器进行比较的检查忽略了 NTP 的许多内置优点。
指标选择
因此,对于您的问题,您应该最感兴趣的指标是:
监控
有一些 NTP 监控解决方案 - 根据您已经拥有的监控,有些可能比其他更适合您。我在我的博客上写了一个概述,这里是一个摘要:
注意事项
当然,标准方法是使用名为ntpq的捆绑 NTP 客户端。该实用程序可用于显示连接的服务器、它们的可达性、时差和抖动。这是示例:
这里可以看到配置了三台服务器,两台还可以(377可达性扩展为二进制11 111 1111,其中1表示成功应答,0表示无应答——所以377表示100%可达性),最后一台可能已经死了一些原因。Offset 代表时间偏移,以毫秒为单位,jitter 是可变性。