Skip to content

NTP — алерт когда системные часы дрейфуют

Часы поползли (timesync завис, провайдер NTP-сервера лёг) — TOTP начнёт фейлить, JWT с iat в будущем отвергаются, логи путаются.

Рецепт

bash
#!/usr/bin/env bash
# /etc/cron.d/ntp-drift
# */5 * * * * root /opt/ntp-drift.sh

THRESH_MS=${THRESH_MS:-500}        # alert above 500ms

# chrony exposes drift in seconds via 'tracking' command (CSV mode)
OFFSET=$(chronyc -c tracking | awk -F, '{print $5}')
ABS_MS=$(awk -v v="$OFFSET" 'BEGIN{print int((v < 0 ? -v : v)*1000)}')

if [ "$ABS_MS" -gt "$THRESH_MS" ]; then
  echo "ntp-drift: ${ABS_MS}ms (threshold ${THRESH_MS}ms)"
  curl -fsS "$HEARTBEAT_URL?status=fail&drift_ms=$ABS_MS"
  exit 2
fi
echo "OK (${ABS_MS}ms drift)"

То же самое в Enterno.io

Поставьте Enterno heartbeat с интервалом 5 мин — drift-история и алерт без отдельного NTP-monitoring-стека (Prometheus + node-exporter + alertmanager).

Настроить Heartbeat monitor → ← Все рецепты

Похожие рецепты

docker info висит >30 сек — daemon в split-brain состоянии. Контейнеры работают (kernel держит namespaces), но новых релизов deploy не сделать. systemctl status показывает active.