CloudFront — алерт по росту 5xx error rate
CloudFront CDN-distribution начал возвращать 5xx 4% времени — клиенты в дальних регионах видят битые страницы. CloudWatch graph есть, dashboard никто не открывает.
Рецепт
#!/usr/bin/env bash
# 5xx-error-rate over the last 5 minutes.
DIST="${CF_DIST:?must be set}"
THRESHOLD_PCT="${THRESHOLD_PCT:-2}"
NOW=$(date -u -d '5 min ago' +%FT%TZ)
END=$(date -u +%FT%TZ)
PCT=$(aws cloudwatch get-metric-statistics \
--namespace AWS/CloudFront --metric-name 5xxErrorRate \
--dimensions Name=DistributionId,Value="$DIST" Name=Region,Value=Global \
--start-time "$NOW" --end-time "$END" \
--period 60 --statistics Average \
--query 'Datapoints[-1].Average' --output text 2>/dev/null)
[ -z "$PCT" ] || [ "$PCT" = "None" ] && { echo "no-data"; exit 0; }
PCT_INT=$(printf "%.0f" "$PCT")
[ "$PCT_INT" -ge "$THRESHOLD_PCT" ] && echo "high ${PCT_INT}%" || echo "ok ${PCT_INT}%"
То же самое в Enterno.io
Endpoint + Enterno HTTP-монитор с keyword "ok" каждую минуту. Дополнительно health-monitor по public-урлу за CDN — корреляция edge-error vs origin-stack даст root cause за минуты.
Похожие рецепты
CDN cache_status (cf-cache-status или x-cache) внезапно даёт MISS на больше 30% запросов — вырос origin-load и счёт за бэкенд.
Релиз увеличил bundle-size, p99 cold-start вырос с 800ms до 3s. Метрика в CloudWatch есть, но никто туда не смотрит. Нужен heartbeat-style алерт.
Нужно убедиться, что сайт возвращает 2xx каждую минуту, и получить алерт в Slack/Telegram при падении.