Php-fpm monitoring with okmeter

PHP-FPM - это система управления процессами php (или сервер приложений для PHP).

Он принимает запросы по протоколу FastCGI и передает их на обработку в один из процессов-интерпретаторов php, он так же контролирует количество таких процессов для каждого приложения (пула).

Агент OKmeter автоматически находит все запущенные на сервере процессы php-fpm, определяет все настроенные пулы процессов и по каждому из них снимает метрики, для того, чтобы вы могли понимать, как работает ваше приложение в каждый момент времени.

Большинство проблем с производительностью возникают либо из-за недостатка ресурсов, либо из-за их чрезмерного потребления. Так как okmeter собирает метрики потребления ресурсов в разрезе абсолютно всех процессов, вы можете без дополнительной интеграции следить за потреблением процессора и памяти как в разрезе серверов нашего кластера, так и в разрезах пулов в терминологии php-fpm:

Для получения метрик о внутреннем состоянии каждого пула необходимо включить status page. После этого okagent автоматически определит url, на котором работает status page и начнет снимать метрики.

Для каждого пула снимаются следующие метрики:

php_fpm.pool.accepted_connections {pool: “x”, instance: “Y”, source_hostname: “Z”}
— количество принятых соединения c момента старта пула. По этой метрики удобно отслеживать количество обрабатываемых соединений в секунду (если не используется keep-alive, то эта метрика совпадает с количеством запросов в секунду).
php_fpm.pool.processes.count {state: “active|idle”, pool: “x”, instance: “Y”, source_hostname: “Z”}
— количество процессов пула в различных состояниях. “Active” — процессы, которые в данный момент обрабатывают запрос, “Idle” — процессы, которые свободны и готовы принять запрос. Если количество активных процессов достигнет к лимита (pm.max_children), новое соединение будет ожидать пока один из процессов-обработчиков не освободится.
php_fpm.pool.listen_queue.current {pool: “x”, instance: “Y”, source_hostname: “Z”}
— количество соединений, которые в данный момент ожидают освобождения процесса-обработчика.
php_fpm.pool.listen_queue.limit {pool: “x”, instance: “Y”, source_hostname: “Z”}
— максимальный размер очереди (tcp ack backlog) для каждого пула. При достижении этого лимита новые соединения будут либо сразу отброшены без уведомления или получат TCP reset (в зависимости от системной настройки sysctl net.ipv4.tcp_abort_on_overflow)
php_fpm.pool.uptime {pool: “x”, instance: “Y”, source_hostname: “Z”}
— количество секунд, прошедшее с момента старта каждого пула. По этой метрике удобно отслеживать перезапуск php-fpm, например в моменты переконфигурации или деплоя приложения.

Так как на одном сервере может работать несколько php-fpm (в том числе в контейнерах), все метрики помимо метки source_hostname и pool имеют еще и метку instance. Значением метки instance является либо путь файла конфигурации каждого пула (если php-fpm работает вне какого-либо контейнера), либо имя контейнера и путь до файла конфигурации пула вида: container_name:/path/to/pool.conf

Замониторьте PHP скорее — okmeter ставится за минуты!

Бесплатный триал