Chrony синхронизирует время, игнорируя maxpoll.

Вопрос или проблема

У меня есть сервер Rocky Linux 9.2. Мы мониторим его с помощью check_mk и регулярно получаем предупреждение о том, что последнее время с момента синхронизации может превышать 1 час. Обратите внимание, что, как видно из источников ниже, источнику mansfield.id.au прошло 64 минуты.

Из моего ограниченного понимания ntp, maxpoll 10, указанный ниже, равен 1024 секундам?

server 0.au.pool.ntp.org iburst minpoll 6 maxpoll 10
server 1.au.pool.ntp.org iburst minpoll 6 maxpoll 10
server 2.au.pool.ntp.org iburst minpoll 6 maxpoll 10
server 3.au.pool.ntp.org iburst minpoll 6 maxpoll 10

Отслеживание – после того как chrony наконец синхронизировался, интервал обновления изменился на 4135.0 секунд.

[]#chronyc tracking
Reference ID    : 6EE87216 (mansfield.id.au)
Stratum         : 3
Ref time (UTC)  : Wed Jan 24 00:27:13 2024
System time     : 0.000012703 seconds slow of NTP time
Last offset     : -0.000079763 seconds
RMS offset      : 0.000147473 seconds
Frequency       : 10.848 ppm fast
Residual freq   : -0.001 ppm
Skew            : 0.052 ppm
Root delay      : 0.032765601 seconds
Root dispersion : 0.005266702 seconds
Update interval : 1036.2 seconds
Leap status     : Normal

Источники

[]# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- 192.9.171.167                 2  10   377   254   +511us[ +511us] +/-   63ms
^* mansfield.id.au               2  10   377   64m  -2117us[-2197us] +/-   19ms
^- ntp2.ds.network               2  10   377  1007    +16ms[  +16ms] +/-  173ms
^- 220-158-215-20.broadband>     2  10   377   943    +73us[  +73us] +/-   81ms

Кто-нибудь знает, почему, похоже, игнорируется значение maxpoll, или есть какие-то конфигурации, которые отсутствуют/неправильные?

спасибо

jc

Это нормальный вывод chrony. Четыре источника, все доступны недавно, точность ниже 1 мс и задержка в десятки миллисекунд, и вы находитесь в 3 прыжках (уровень) от опорных часов. Типично для интернет NTP серверов.

Ваш вывод я бы не считал актуальным, и поэтому не стал бы на него реагировать. Возможно, какая-то временная проблема больше не существует после того, как сработало предупреждение, или проверка неправильно реагирует на что-то.

Конфигурация chrony’s poll/minpoll/maxpoll — логарифм по основанию 2, поэтому типичные значения 10 — это 1024 секунды. Да, для здоровых экземпляров chrony нормально уменьшать количество пакетов и в итоге отправлять только несколько в час. Возможен более длительный maxpoll, но почти никто не меняет значение по умолчанию.

Я не знаком с checkmk. К счастью, у него есть открытая исходная часть с плагином crony. Я ссылаюсь на chrony.py tagged v2.2.0. Вот ключи, которые он извлекает из вывода chronyc tracking

Reference ID
System time
Stratum
Ref time (UTC)

Проверка использует текущее время за вычетом разобранного времени Ref, чтобы создать порог для “Время с последней синхронизации” с видимо установленными по умолчанию порогами 1800 и 3600 секунд. Кажется ошибочным парсить отформатированное время, но как минимум они используют функции библиотеки Python.

Я считаю эту часть предупреждения бессмысленной и бездействующей. Невозможность синхронизации вернет ошибку с номером уровня 16, и проверка уже оповещает о stratum > 10. Проверка также предупреждает, если не удается распарсить IP-адрес из Reference ID. И даже если chrony утратит все входные данные, он продолжит дисциплинировать часы на основе известного отклонения.

Отключите часть проверки, связанную с задержкой. Или, по крайней мере, установите для нее более высокий порог, возможно, 1 или 2 дня. Меня не волнует, если последний пакет NTP был отправлен 30 минут назад, но 30 часов на сервере, который всегда включен, без измерения контрольных часов может быть интересно.

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

После обновления до версии 2.0.0p39, я наблюдаю ту же проблему. Давайте убедимся, что мы сосредоточены на фактах, предоставленных jc.

Для сервера mansfield.id.au:

  • Опрошено 10. Это 1024 секунды. Это чуть больше 17 минут.
  • Доступность 377. Это означает, что все последние 8 опросов были успешны.
  • Тем не менее, LastRx составляет 64 минуты. Как это может быть больше чем 1024 секунды?

Это не проблема Checkmk. Либо я не понимаю вывод “chronyc sources”, либо это баг.

— Джей

Ответ или решение

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

Теория

Chrony — это один из распространенных пакетов синхронизации времени на серверах Linux. Он гибче и быстрее реагирует на изменения, чем классический NTPD. Chrony особенно предпочтителен в сетях с ограниченной пропускной способностью или нестабильным соединением.

В конфигурации Chrony важны параметры minpoll и maxpoll, которые управляют частотой опроса серверов NTP. Эти параметры выражаются в виде логарифма по основанию 2. Таким образом, значение maxpoll 10 соответствует максимальному интервалу опроса в 2^10 = 1024 секунды (приблизительно 17 минут).

Параметр reach указывает на успешность последних восьми попыток связи с сервером NTP. Значение 377 в восьмеричной системе счисления указывает, что последние 8 попыток были успешными.

Пример

Рассмотрим данные из вопроса:

server <mansfield.id.au>:
- Poll = 10, что соответствует 1024 секундам.
- Reach = 377, все последние восемь запросов успешно выполнены.
- LastRx = 64m (64 минуты с последнего успешного опроса).

Согласно этим данным, последний успешный опрос был выполнен 64 минуты назад, что превышает установленный через maxpoll интервал в 1024 секунды. Это кажется противоречивым, учитывая, что последние восемь попыток были успешными, как указано параметром reach.

Применение

Несоответствие данных может указать на несколько возможных проблем:

  1. Технические задержки и конфигурации Chrony: Имеется вероятность, что Chrony выполнял задания без необходимости отправки новых пакетов NTP, доверяя внутренним алгоритмам выравнивания времени. Chrony может продавливать пакеты с интервалами больше, чем maxpoll, если считает внутреннее выравнивание достаточным для поддержки точности времени.

  2. Влияние внешних факторов: Опрос может задерживаться из-за сетевых проблем или задержек на стороне сервера NTP. Эти задержки можно временно устранять, но если они частые, стоит рассмотреть другие источники NTP.

  3. Возможное несоответствие в интерпретации данных: Интерпретация значений LastRx и poll может различаться в зависимости от специфики обработки пакетов Chrony, где системный внутренний график синхронизации вносит корректировки без частого обращения к внешним источникам.

Рекомендации

  1. Увеличение разнообразия источников: Подключение более локализованных серверов NTP или предоставление резервного источника из внутренней сети может улучшить точность и надежность синхронизации.

  2. Проверка параметров конфигурации: Обратите внимание на правильность и актуальность конфигурации файлов Chrony (/etc/chrony/chrony.conf). Убедитесь, что minpoll и maxpoll выставлены в соответствии с вашими желаниями, но не забудьте, что более частые опросы увеличивают сетевую нагрузку.

  3. Анализ логов и диагностика сети: Проведите аудит логов Chrony и сетевой активности для поиска аномалий. Если проблема остается нерешенной, это может указать на более глубокие сетевые проблемы, такие как задержки или потери пакетов.

  4. Проведение тестирования и анализа работы Checkmk: Ваша система мониторинга может некорректно обрабатывать данные, что важно понимать для правильной интерпретации.

  5. Настройка пороговых значений: Рассмотрите вариант изменения пороговых значений для предупреждений Checkmk, увеличив интервал проверки синхронизации времени для таких серверов.

Таким образом, всесторонний подход к анализу и решению проблемы синхронизации времени, включающий стриктурирование конфигурации и мониторинг сетевых условий, обеспечит стабильную и надежную работу системы.

Оцените материал
Добавить комментарий

Капча загружается...