Fastly — алерт когда purge выполняется дольше N секунд
Fastly soft-purge обычно даёт sub-second propagation, но иногда висит 30+ сек (overload, key collision). После релиза «новые» ассеты не появляются, пользователи видят старую версию.
Рецепт
#!/usr/bin/env bash
# /etc/cron.d/fastly-purge
# */5 * * * * root /opt/fastly-purge.sh
API_KEY=${FASTLY_API_KEY}
SERVICE=${FASTLY_SERVICE_ID}
THRESH_S=${THRESH_S:-3}
# Send a no-op purge with a unique surrogate-key, time the round trip
KEY="hb-test-$(date +%s)"
START=$(date +%s%N)
curl -fsS -X POST -H "Fastly-Key: $API_KEY" \
"https://api.fastly.com/service/$SERVICE/purge/$KEY" >/dev/null
END=$(date +%s%N)
MS=$(( (END - START) / 1000000 ))
S=$(( MS / 1000 ))
if [ "$S" -gt "$THRESH_S" ]; then
curl -fsS "$HEARTBEAT_URL" --data "purge_ms=$MS,threshold_s=$THRESH_S"
exit 2
fi
echo "OK (purge=${MS}ms)"
То же самое в Enterno.io
Заверните в Enterno heartbeat — увидите тренд latency и paged-on-call раньше, чем команда деплоев заметит «асет не обновляется».
Похожие рецепты
CDN cache_status (cf-cache-status или x-cache) внезапно даёт MISS на больше 30% запросов — вырос origin-load и счёт за бэкенд.
CloudFront CDN-distribution начал возвращать 5xx 4% времени — клиенты в дальних регионах видят битые страницы. CloudWatch graph есть, dashboard никто не открывает.
Нужно убедиться, что сайт возвращает 2xx каждую минуту, и получить алерт в Slack/Telegram при падении.