
У меня есть задача написать приложение, которое поддерживает связь 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 не выдает оповещения при достижении, намеренно ли это сделано для поддержки отключенных вариантов использования или эта функция так и не была реализована, я не знаю.