Мониторинг на коленке: PHP -> StatsD(Bucky) -> Graphite

php-to-graphite_miniatureРаньше уже наталкивался на упоминания Graphite и StatsD, но всё в контексте каких-то нереальных приседаний с конфигами, и потому проходил мимо. Недавно же на службе звёзды сошлись таким образом, что-таки решил сесть и запилить по-быстрому сбор и отображение неких стат.данных PHP-приложения посредством StatsD и Graphite.

Отмазка

Данная статья не является точной инструкцией, а скорее подробным описанием идеи. При наличии минимальных навыков даже этого описания будет достаточно для получения желаемого результата.

Настройка сборщика данных мониторинга

По итогам коротких изысканий было выяснено, что наипростейшим способом получить желаемое будет воспользоваться Bucky — маленький сервер для сбора метрик и препровождения их в Graphite. Этот сервер понимает в том числе и на языке StatsD.

Итак, по пунктам:

  1. Устанавливаем Graphite
  2. Устанавливаем Bucky (запуск коего осуществляется supervisor)
  3. Обучаем наше PHP-приложение отправлять метрики Bucky (по интерфейсу StatsD)

php-to-graphiteРассмотрим эти шаги подробнее:

Установка Graphite

Пакет graphite-web версии 0.9.12 был установлен из репозитария Epel (CentOS 6.6). Так или иначе, но после установки всех пакетов и необходимых перезапусков демонов графическая панель Graphite стала доступна на 80-ом порту веб-сервера без помощи с моей стороны.

Установка Bucky

Пожалуй единственный конфигурационный файл в связке BuckyGraphite, который вам потребуется потрогать — это /etc/bucky/bucky.conf. Необходимо указать IP-адрес, с которого доступен данный сервер внешним клиентам:

В документации к Bucky советуют запускать его через runit, я же обычно для подобных задач использую Supervisor. Настроим и Supervisor.

Файл конфигурации для запуска Bucky мог бы выглядеть так:

Настройка PHP-приложения

Предположим, нам необходимо собрать статистику по скорости генерации страниц нашим web-приложением.

Для этого воспользуемся пакетом domnikl/statsd-php, добавив

в свой composer.json файл.

В код страницы можно добавить код типа:

Всё, информация о скорости генерации страницы будет поставляться на соответствующий порт вашего StatsD сервера, о чём вы тут же получите свидетельство в панели Graphite.

THE END

PS:

В одной из следующих статей рассматривается возможность сбора и визуализации через Graphite метрик NGINX.