S3 — алерт по росту 5xx error-rate бакета
S3 endpoint начал 5xx-ить — приложение получает random fail при upload. AWS Health показывает «healthy», CloudWatch alarm настроена на agg 5 мин — реакция поздняя.
Рецепт
#!/usr/bin/env bash
# /etc/cron.d/s3-5xx
# */1 * * * * root /opt/s3-5xx.sh
BUCKET=${S3_BUCKET}
REGION=${AWS_REGION:-us-east-1}
THRESH=${THRESH:-1} # 5xx events / 60 s
COUNT=$(aws cloudwatch get-metric-statistics \
--region "$REGION" \
--namespace AWS/S3 \
--metric-name 5xxErrors \
--dimensions Name=BucketName,Value="$BUCKET" Name=FilterId,Value=EntireBucket \
--statistics Sum \
--start-time "$(date -u -d '60 seconds ago' --iso-8601=seconds)" \
--end-time "$(date -u --iso-8601=seconds)" \
--period 60 \
--output text --query 'Datapoints[0].Sum')
COUNT=${COUNT:-0}
COUNT=${COUNT%.*}
if [ "$COUNT" -gt "$THRESH" ]; then
curl -fsS "$HEARTBEAT_URL" --data "s3_5xx=$COUNT,bucket=$BUCKET"
exit 2
fi
echo "OK ($COUNT 5xx / 60s)"
То же самое в Enterno.io
Замените CloudWatch alarm + SNS на Enterno heartbeat с минутным интервалом — реакция в 60 сек и единый dashboard вместе с другими сервисами.
Похожие рецепты
Cron бэкапа тихо упал, никто не заметил, через неделю обнаружится при инциденте. Нужен алерт, если последний backup-файл старше 30 часов.
Релиз увеличил bundle-size, p99 cold-start вырос с 800ms до 3s. Метрика в CloudWatch есть, но никто туда не смотрит. Нужен heartbeat-style алерт.
CloudFront CDN-distribution начал возвращать 5xx 4% времени — клиенты в дальних регионах видят битые страницы. CloudWatch graph есть, dashboard никто не открывает.