Skip to content

systemd — алерт по любому failed unit на хосте

Один из нескольких systemd units (cron, redis, postfix) упал в 3 ночи и не поднялся. Узнал утром по жалобам. Хочется endpoint показывающий high когда любой unit failed.

Рецепт

bash
#!/usr/bin/env bash
# Wraps `systemctl --failed` for an HTTP-monitor probe.
FAILED=$(systemctl --failed --no-legend --plain --quiet 2>/dev/null | wc -l)
[ "$FAILED" -gt 0 ] && {
  NAMES=$(systemctl --failed --no-legend --plain | awk '{print $1}' | head -5 | tr '\n' ' ')
  echo "high $FAILED failed: $NAMES"
  exit 1
}
echo "ok"

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

Положите endpoint на хост (через nginx или mini-server) + Enterno HTTP-монитор с keyword "ok" — pager-уровень мониторинга всех systemd units одной строкой. Дешевле любого APM.

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

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

Нужно ловить момент, когда реплика начала отставать от мастера больше чем на 10 секунд.