Skip to content

PHP-FPM — алерт по слой-запросу > N секунд

У вас включён `request_slowlog` в php-fpm.conf — но никто туда не смотрит. Хочется endpoint который вернёт high когда за минуту > 5 медленных запросов.

Рецепт

bash
#!/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.

Настроить HTTP monitor → ← Все рецепты

Похожие рецепты

Node-приложение тормозит из-за блокирующих CPU-операций; latency пользователей растёт. Нужен endpoint с моментальным значением event-loop-lag.