Алерт при провале cache-hit ratio CDN
CDN cache_status (cf-cache-status или x-cache) внезапно даёт MISS на больше 30% запросов — вырос origin-load и счёт за бэкенд.
Рецепт
#!/usr/bin/env bash
# Sample cache_status header N times, alert if MISS rate > THRESHOLD.
URL=${1:?URL required}
N=${N:-20}
THRESHOLD_PERCENT=${THRESHOLD_PERCENT:-30}
MISS=0
for i in $(seq 1 "$N"); do
STATUS=$(curl -sI "$URL?nocache=$RANDOM" | awk -F': ' '
/^cf-cache-status:|^x-cache:/ { print toupper($2) }
' | tr -d '\r')
case "$STATUS" in *MISS*|*EXPIRED*|*BYPASS*) MISS=$((MISS+1));; esac
done
PCT=$((MISS * 100 / N))
if [ "$PCT" -gt "$THRESHOLD_PERCENT" ]; then
curl -X POST "$SLACK_WEBHOOK" \
--data "{\"text\":\"CDN cache miss rate: $PCT% on $URL\"}"
fi
То же самое в Enterno.io
Это «свой бот» подход. HTTP-monitor Enterno уже хранит response-headers — Pioneer+ показывает cache-hit ratio на dashboard и шлёт алерт без bash-loop.
Похожие рецепты
Memcached переполнился и начал выбрасывать ключи под нагрузкой — приложение получает cache-miss и долбит БД. Нужен порог evictions/мин.
Worker деплоится автоматически из main. Однажды сломался prod 5xx-rate ушёл в 12% — но dashboard смотрят раз в день. Нужна ежеминутная проверка.
CloudFront CDN-distribution начал возвращать 5xx 4% времени — клиенты в дальних регионах видят битые страницы. CloudWatch graph есть, dashboard никто не открывает.