NTP Debian: как узнать, был ли последний опрос успешным?

NTP Debian: как узнать, был ли последний опрос успешным?

У меня есть задача написать приложение, которое поддерживает связь NTP. Пока все работает отлично, но мне нужно узнать, был ли последний опрос ntp успешным или нет.

Когда я вытаскиваю сетевой кабель, ntpstat даже на следующее утро говорит мне, что все в порядке. Но всю ночь не было связи по NTP...

У вас есть какие-нибудь идеи?

Спасибо!

Пингование не является хорошим решением, ответ bc может быть отключен сервером или сервер доступен, но демон ntp не запущен.

решение1

Я сам это нашел.

ntpq -pn имеет столбец «reach», который уменьшается, если опросы не увенчались успехом

решение2

Большинству приложений не важно, что каждый пакет NTP прибыл. UDP через IP иногда может быть с потерями, это случается. ntpd продолжает работать и продолжает корректировать данные на основе последнего известного смещения и дрейфа. На самом деле, большинству приложений вообще не важна синхронизация времени. Те немногие, которые это делают, могут подождать при загрузке, пока не запустится ntpd (или chronyd).

Один скрипт мониторинга с открытым исходным кодом, который имеет пороговые значения, — этонтпмон. Для справки, он считает 75% всех источников ntp успешными. Таким образом, 6 из 8 последних пакетов, учитывая, что досягаемость — это 8-битное число. Это плюс пороговые значения смещения создают метрику хоста для мониторинга инфраструктуры.

ntpstat, вероятно, относится кскрипт оболочки ntpstat(замена более ранней программы). Которая выведет исходный код и предполагаемую ошибку. И завершается с ненулевым кодом возврата только в определенных случаях, например, если демон NTP не запущен. ntpstat не выдает оповещения при достижении, намеренно ли это сделано для поддержки отключенных вариантов использования или эта функция так и не была реализована, я не знаю.

Связанный контент