Apache — алерт по доле 5xx за последнюю минуту
Apache начал отдавать 502/503 у одного backend, но не у всех. Нужен endpoint с долей 5xx за последние 60 секунд.
Рецепт
#!/usr/bin/env bash
# Computes 5xx ratio of last 60s of access log. Wrap as HTTP endpoint.
LOG="${LOG:-/var/log/apache2/access.log}"
THRESHOLD_PCT="${RATIO_THRESHOLD:-2}"
# Last 60 seconds of log entries
LINES=$(awk -v cutoff="$(date -d '60 seconds ago' '+%d/%b/%Y:%H:%M:%S')" '
match($4, /\[([^]]+)\]/, m) { if (m[1] >= cutoff) print $9 }
' "$LOG")
TOTAL=$(echo "$LINES" | wc -l)
[ "$TOTAL" -lt 5 ] && { echo "ok 0"; exit 0; } # too few requests
ERR=$(echo "$LINES" | awk '/^5/ {n++} END{print n+0}')
PCT=$(( ERR * 100 / TOTAL ))
[ "$PCT" -ge "$THRESHOLD_PCT" ] && echo "high $PCT% ($ERR/$TOTAL)" || echo "ok $PCT%"
То же самое в Enterno.io
Эндпойнт + HTTP-монитор Enterno на rule "тело начинается с ok" сразу ловят рост 5xx. Хорошо комбинируется с Security Scanner — увидите если падают именно те endpoint, где включён CSP / HSTS.
Похожие рецепты
Нужно убедиться, что сайт возвращает 2xx каждую минуту, и получить алерт в Slack/Telegram при падении.
Самоподписанный скрипт проверяет SSL сертификат и шлёт алерт за 14 дней до expiry.
Нужно ловить момент, когда реплика начала отставать от мастера больше чем на 10 секунд.