
Ich habe die Aufgabe, eine Anwendung zu schreiben, die NTP-Kommunikation unterstützt. Bisher funktioniert alles gut, aber ich muss wissen, ob die letzte NTP-Abfrage erfolgreich war oder nicht.
Wenn ich das Netzwerkkabel rausziehe, sagt mir ntpstat sogar am nächsten Morgen, dass alles in Ordnung war. Allerdings gab es die ganze Nacht keine NTP-Kommunikation...
Hast du irgendwelche Ideen?
Danke schön!
Pingen ist keine gute Lösung, da die Antwort möglicherweise vom Server deaktiviert wurde oder der Server zwar erreichbar ist, der NTP-Daemon jedoch nicht ausgeführt wird.
Antwort1
Habe es selbst gefunden.
ntpq -pn hat eine Spalte "Reichweite", die abnimmt, wenn die Umfragen nicht erfolgreich sind
Antwort2
Den meisten Anwendungen ist es egal, ob jedes NTP-Paket angekommen ist. UDP über IP kann gelegentlich verlustbehaftet sein, das kommt vor. ntpd läuft weiter und passt sich basierend auf dem letzten bekannten Offset und Drift weiter an. Tatsächlich ist den meisten Anwendungen die Zeitsynchronisierung überhaupt egal. Die wenigen, die es tun, warten möglicherweise beim Booten, bis ntpd (oder chronyd) gestartet ist.
Ein Open-Source-Überwachungsskript, das Schwellenwerte erreicht, istntpmon. Als Referenz werden 75 % aller NTP-Quellen als erfolgreich angesehen. Also 6 der letzten 8 Pakete, wobei die angegebene Reichweite eine 8-Bit-Zahl ist. Dies ergibt zusammen mit den Offset-Schwellenwerten eine Host-Metrik für die Infrastrukturüberwachung.
ntpstat bezieht sich wahrscheinlich auf dieShell-Skript ntpstat(ersetzt ein früheres Programm). Es gibt eine Quelle und einen geschätzten Fehler aus. Es wird nur in bestimmten Fällen mit einem Rückgabecode ungleich Null beendet, z. B. wenn der NTP-Daemon nicht ausgeführt wird. ntpstat gibt keine Warnung bei Erreichen aus. Ob dies beabsichtigt ist, um getrennte Anwendungsfälle zu unterstützen, oder ob diese Funktion nie implementiert wurde, weiß ich nicht.