PHP-FPM — алерт по слой-запросу > N секунд
У вас включён `request_slowlog` в php-fpm.conf — но никто туда не смотрит. Хочется endpoint который вернёт high когда за минуту > 5 медленных запросов.
Рецепт
#!/usr/bin/env bash
# Counts slowlog entries in the last minute.
LOG="${SLOWLOG:-/var/log/php-fpm/slow.log}"
THRESHOLD="${THRESHOLD:-5}"
[ ! -r "$LOG" ] && { echo "no-log"; exit 1; }
CNT=$(awk -v from="$(date -d '1 min ago' '+%d-%b-%Y %H:%M')" '
/\[.*\]/ && $0 >= "[" from { c++ } END { print c+0 }
' "$LOG")
[ "$CNT" -ge "$THRESHOLD" ] && echo "high $CNT/min" || echo "ok $CNT/min"
То же самое в Enterno.io
Endpoint + Enterno HTTP-монитор с keyword "ok" каждую минуту = пейджер за 60 сек. Корреляция с PageSpeed-монитором публичной страницы выявит — это PHP лагает или upstream MySQL.
Похожие рецепты
long_query_time = 1, slow_query_log включён. Нужно понимать, когда количество медленных запросов в минуту резко вырастает (deploy сломал индекс, ORM начал N+1).
Memcached переполнился и начал выбрасывать ключи под нагрузкой — приложение получает cache-miss и долбит БД. Нужен порог evictions/мин.
Node-приложение тормозит из-за блокирующих CPU-операций; latency пользователей растёт. Нужен endpoint с моментальным значением event-loop-lag.