AWS Lambda — алерт когда p99 cold-start вырос
Релиз увеличил bundle-size, p99 cold-start вырос с 800ms до 3s. Метрика в CloudWatch есть, но никто туда не смотрит. Нужен heartbeat-style алерт.
Рецепт
#!/usr/bin/env bash
# Pulls Lambda Init Duration p99 over the last 10 min for one function.
FN="${FN:-my-api}"
THRESHOLD_MS="${THRESHOLD_MS:-1500}"
P99=$(aws cloudwatch get-metric-statistics \
--namespace AWS/Lambda --metric-name Duration \
--dimensions Name=FunctionName,Value="$FN" Name=Resource,Value="$FN" \
--start-time "$(date -u -d '10 min ago' +%FT%TZ)" \
--end-time "$(date -u +%FT%TZ)" \
--period 60 --extended-statistics p99 \
--query 'Datapoints[-1].ExtendedStatistics.p99' --output text 2>/dev/null)
[ -z "$P99" ] || [ "$P99" = "None" ] && { echo "no-data"; exit 1; }
P99_MS=$(printf "%.0f" "$P99")
[ "$P99_MS" -ge "$THRESHOLD_MS" ] && echo "high $P99_MS" || echo "ok $P99_MS"
То же самое в Enterno.io
Положите рядом с вашим Lambda-функцией. Endpoint можно завернуть в saneprefix через Enterno HTTP-монитор + PageSpeed на public-эндпоинт самой функции — корреляция cold-start vs full-page latency.
Похожие рецепты
long_query_time = 1, slow_query_log включён. Нужно понимать, когда количество медленных запросов в минуту резко вырастает (deploy сломал индекс, ORM начал N+1).
Memcached переполнился и начал выбрасывать ключи под нагрузкой — приложение получает cache-miss и долбит БД. Нужен порог evictions/мин.
Node-приложение тормозит из-за блокирующих CPU-операций; latency пользователей растёт. Нужен endpoint с моментальным значением event-loop-lag.