Ntp

驗證內部 NTP 伺服器發送的時間是否正確?

  • October 27, 2019

我有兩個 NTP 層 3 伺服器正在執行,並且想要創建一個簡單的檢查,我可以判斷其中一個伺服器的時間是否漂移並警告它沒有與公共層 2 伺服器正確同步。

我的第一個想法是從多個第 2 層伺服器中提取時間,並將該時間與我的 ntp 伺服器發送的時間進行比較。然後在漂移超過 X delta 時發出警報。

是否有更標準的方法或更好的方法來驗證 NTP 伺服器是否發送正確的時間?

TL;博士:

  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 檢查
  1. 收集:
  1. 普羅米修斯/influxdb
  • prometheus 節點導出器:不推薦;僅檢查來自給定遠端 NTP 伺服器的偏移量
  • telegraf ntpq 輸入外掛:將 ntpq 輸出直接轉換為 telegraf 指標;如果您只想知道“我的 NTP 伺服器好嗎?”,這可能太詳細了。
  • 電報模式下的ntpmon

注意事項

  1. 以上是我在 2016 年 10 月進行警報和遙測審查時的狀態摘要。從那以後情況可能有所改善。
  2. ntpmon是我的項目,我認為它克服了當時可用的檢查的缺陷。它支持 ntpd 和 chronyd,以及上面列出的警報和遙測系統。

引用自:https://serverfault.com/questions/951179