验证内部 NTP 服务器发送的时间是否正确?

LF4*_*LF4 5 ntp alerts healthcheck chrony

我有两个 NTP 层 3 服务器正在运行,并且想要创建一个简单的检查,我可以判断其中任何一个服务器的时间是否漂移并警告它没有与公共层 2 服务器正确同步。

我的第一个想法是从多个第 2 层服务器中提取时间,并将该时间与我的 ntp 服务器发送的时间进行比较。然后提醒漂移是否超过 X delta。

是否有更标准的方法或更好的方法来验证 NTP 服务器发送的时间是否正确?

Pau*_*ear 6

特尔;博士:

  1. 根据当前最佳实践配置您的 NTP 服务器。
  2. (无耻的自我推销警告。)使用我的ntpmon检查您的监控解决方案是否使用 collectd、Nagios 或 Telegraf。

长版:

配置

良好的 NTP 监控最重要的基础是良好的 NTP 配置。为了更好地理解这一点,请阅读NTP Best Current Practices (BCP 223/RFC 8633)。以下是其配置建议的简明摘要:

  1. 使您的 NTP 软件保持最新
  2. 使用 4 到 10 个源
  3. 确保您在这些源中拥有多种参考时钟
  4. 不允许未经身份验证的远程控制(应该是大多数发行版的默认设置)
  5. 负责任地使用池(也应该是大多数发行版的默认设置)
  6. 不要混合跳跃涂抹和非跳跃涂抹的来源
  7. 不要使用未经身份验证的广播模式
  8. 服务时间不要使用任播或负载平衡

在哪里测量

一旦你有一个好的本地配置,要记住的主要事情是你的检查应该查询本地 NTP 服务器的指标,而不是尝试手动测量远程服务器的偏移量。主要的 NTP 服务器(ntpd 和 chronyd)已经收集了您需要的所有指标,因此将时钟与远程服务器进行比较的检查忽略了许多 NTP 的内置优点。

指标选择

因此,对于您的问题,您应该最感兴趣的指标是:

  • 系统偏移量:本地时钟与一个真实时间的偏移量的计算最佳猜测
  • 根色散:计算的本地时钟与第 0 层源的最大偏移

监控

NTP 有一些监控解决方案 - 根据您已经实施的监控,有些可能比其他更适合您。我在我的博客上写了这些概述,这里是一个总结:

  1. 纳吉欧斯:
    • check_ntp_peer:体面的基本检查;没有检查足够广泛的指标;它允许的抵消量有点过于宽松
    • check_ntp_time:不推荐;只检查给定远程 NTP 服务器的偏移量
    • check_ntpd:合理的支票覆盖率;如果您更喜欢 perl 而不是 python,请使用它。
    • ntpmon的 nagios 检查
  2. 收集:
  3. 普罗米修斯/流入数据库
    • prometheus 节点导出器:不推荐;只检查给定远程 NTP 服务器的偏移量
    • Telegraf ntpq 输入插件:将 ntpq 输出直接转换为 Telegraf 指标;如果您只想知道“我的 NTP 服务器还好吗?”,这可能太详细了。
    • ntpmon在telegraf模式

注意事项

  1. 以上是我在 2016 年 10 月进行警报和遥测审查时的状态摘要。从那以后情况可能有所改善。
  2. ntpmon是我的项目,我认为它克服了当时可用的检查的缺陷。它支持 ntpd 和 chronyd,以及上面列出的警报和遥测系统。