systemd — алерт по любому failed unit на хосте
Один из нескольких systemd units (cron, redis, postfix) упал в 3 ночи и не поднялся. Узнал утром по жалобам. Хочется endpoint показывающий high когда любой unit failed.
Рецепт
#!/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.
Похожие рецепты
Нужно убедиться, что сайт возвращает 2xx каждую минуту, и получить алерт в Slack/Telegram при падении.
Самоподписанный скрипт проверяет SSL сертификат и шлёт алерт за 14 дней до expiry.
Нужно ловить момент, когда реплика начала отставать от мастера больше чем на 10 секунд.