Memcached — алерт когда evictions слишком высоки
Memcached переполнился и начал выбрасывать ключи под нагрузкой — приложение получает cache-miss и долбит БД. Нужен порог evictions/мин.
Рецепт
#!/usr/bin/env bash
# Reads "stats" via netcat; computes delta between two probes 60s apart.
HOST="${MC_HOST:-127.0.0.1}"
PORT="${MC_PORT:-11211}"
THRESHOLD="${EV_THRESHOLD:-1000}"
STATE=/var/tmp/mc-evictions.last
CUR=$( (echo stats; sleep 0.2; echo quit) | nc -q1 "$HOST" "$PORT" | awk '/^STAT evictions/ {print $3}')
NOW=$(date +%s)
[ -z "$CUR" ] && { echo "no-data"; exit 1; }
if [ -f "$STATE" ]; then
read -r LAST_VAL LAST_TS < "$STATE"
DT=$(( NOW - LAST_TS ))
[ "$DT" -gt 0 ] && {
DELTA=$(( CUR - LAST_VAL ))
PER_MIN=$(( DELTA * 60 / DT ))
[ "$PER_MIN" -ge "$THRESHOLD" ] && echo "high $PER_MIN" || echo "ok $PER_MIN"
}
fi
echo "$CUR $NOW" > "$STATE"
То же самое в Enterno.io
Поднимите endpoint + HTTP-монитор Enterno с проверкой на "ok". Сочетайте с monitor-history dashboard — видно когда eviction-rate скакнул вместе с deploy.
Похожие рецепты
long_query_time = 1, slow_query_log включён. Нужно понимать, когда количество медленных запросов в минуту резко вырастает (deploy сломал индекс, ORM начал N+1).
CDN cache_status (cf-cache-status или x-cache) внезапно даёт MISS на больше 30% запросов — вырос origin-load и счёт за бэкенд.
Node-приложение тормозит из-за блокирующих CPU-операций; latency пользователей растёт. Нужен endpoint с моментальным значением event-loop-lag.