Как начать раздавать точное время всему интернету
Поднял сервер в NTP Pool: chrony, стратум-1 источники и Grafana, чтобы любоваться графиками.
Каждый раз, когда ваш телефон или компьютер синхронизирует часы, он, скорее всего, спрашивает время у какого-то сервера из NTP Pool — огромного добровольного кластера по всему миру. Теперь один из этих серверов — наш.
Зачем
В один прекрасный день у меня произошло отключение электроэнергии в доме, после восстановления питания я обнаружил, что на моем роутере опять слетело системное время.
Зайдя в настройки я увидел прописанные по умолчанию адреса пула:
config timeserver 'ntp'
list server '0.ru.pool.ntp.org'
list server '1.ru.pool.ntp.org'
list server '2.ru.pool.ntp.org'
list server '3.ru.pool.ntp.org'
Я было подумал что возможно это прописанный в прошивке какой-то мертвый ntp-пул, однако передя по домену выяснилось, что это более чем живой пул.
Полистав его страницы я увидел страницу с инструкцией про то, что к пулу можно присоединиться. Так у меня и появилась идея сделать сервер с сайтом более полезным, разместив на нем ntp сервер.
Что внутри
- chrony вместо классического
ntpd- быстрее сходится и лучше переживает нестабильную сеть. - Источники времени - российские стратум-1 серверы ВНИИФТРИ и MSK-IX, плюс немецкий PTB для разнообразия.
- Отдельный IPv6-адрес под NTP, чтобы пул мог выдавать сервер и по v6.
Кусочек конфига выглядит примерно так:
# /etc/chrony/conf.d/ntppool.conf
server ntp1.vniiftri.ru iburst
server ntp2.vniiftri.ru iburst
server ntp.ix.ru iburst
server ptbtime1.ptb.de iburst
allow all
Мониторниг, куда же без него
Без мониторинга это было бы неинтересно. На сервере был поднят chrony_exporter, для локально запущенной дома графаны метрики собираются через Prometheus, после чего уже и формируются красивые графики с количеством запросов и информацией из самого пула - оценку того, насколько сервер хорош глазами мониторов NTP Pool.
Хм, здесь наверное должен быть скриншот дашборд панели, но пока это тут не реализовано. Зато, актуальные цифры экспортера будут видны на странице проекта. Думаю, это тоже своего рода мониторинг.