Skip to content

S3 — алерт по росту 5xx error-rate бакета

S3 endpoint начал 5xx-ить — приложение получает random fail при upload. AWS Health показывает «healthy», CloudWatch alarm настроена на agg 5 мин — реакция поздняя.

Рецепт

bash
#!/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 вместе с другими сервисами.

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

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

Cron бэкапа тихо упал, никто не заметил, через неделю обнаружится при инциденте. Нужен алерт, если последний backup-файл старше 30 часов.

CloudFront CDN-distribution начал возвращать 5xx 4% времени — клиенты в дальних регионах видят битые страницы. CloudWatch graph есть, dashboard никто не открывает.