Munin — это популярная серверная программа, позволяющая собирать и показывать в виде графиков статистику по серверу. В данной публикации я расскажу про простейший способ её установки под Debian. Простейший настолько, насколько это возможно. Всё сказанное проверенно на Debian версий 7 и 8.

Устанавливать Munin будем на веб-сервере, где используется nginx + php-fpm + mysql. Apache давно в прошлом!

Итак, основное:

apt-get install munin
ln -s /var/cache/munin/www /var/www/default-ssl/load

Первая команда устанавливает Munin, при этом программа добавляется в автозапуск, крон и т.д. В общем, после этого она сразу работает.

Вторая команда создает символическую ссылку, чтобы статистику Munin можно было смотреть, обращаясь по адресу https://ip_сервера/load. Обратите внимание, что расположение каталога default-ssl, а также его название, вероятно, в вашем случае будет другим. При настройке nginx это каждый выбирает на своё усмотрение, как удобнее.

Уже на данном этапе можно смотреть красивую статистику. Только надо немного подождать, чтобы она накопилась. По умолчанию Munin обновляет графики раз в 5 минут. Графики строятся с использованием плагинов, каждый написан для мониторинга какой-то отдельной части системы. Часть плагинов задействована сразу, другие можно подключать при необходимости.

Например, сразу подключены плагины для построения графиков нагрузки на диск/процессор/сеть, также по умолчанию строится график load average и некоторые другие. Этого уже может быть достаточно, в какой-то степени. По умолчанию Munin не показывает никакой статистики по nginx, php-fpm и mysql, а для более детального изучения работы веб-сервера это не помешает.

nginx

Для nginx в комплекте с Munin есть пара плагинов, но они не подключены. Чтобы подключить выполняем команды:

ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status
ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request

Через некоторое время графики nginx начнут показываться, но они будут пустыми. Чтобы исправить ситуацию требуется выполнить ещё ряд действий.

В файл /etc/munin/plugin-conf.d/munin-node добавляем:

[nginx*]
env.url http://localhost/nginx_status

# Можно использовать реальный URL, в том числе https.
# env.url https://munin.d1mon.com/nginx_status

Меняем настройки nginx. Я это делал в файле /etc/nginx/sites-available/default. Необходимо добавить:

server {
  listen localhost;
  location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
  }
}

Возможно в этом файле у вас уже есть конструкция вида:

server {
 listen localhost;
...
}

Тогда просто в неё надо добавить дополнительную локацию /nginx_status в соответствии с примером выше.

Если вы вписали в файле munin-node с настройками URL с реальным доменом, то добавляйте эти параметры в соответствующее место вашего конфига Nginx. Должно быть что-то типа такого:

server {
  listen 443 ssl spdy;
  server_name munin.d1mon.com;
  ...
  location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
  }

Это пример всё для той же упомянутой выше ссылки https. Здесь, чтобы всё работало надо в параметре allow прописать реальный IP, который у вас задействован на данном домене.

Перезапустим nginx:

/etc/init.d/nginx restart

Для сбора статистики плагином nginx_request необходим пакет libwww-perl. У меня его не оказалось в системе, установка:

apt-get install libwww-perl

Перезапустим Munin:

/etc/init.d/munin-node restart

Теперь графики nginx в Munin должны строится. Если у вас графики всё равно пустые, то посмотрите эту статью, там есть команды, которыми можно попробовать диагностировать проблему.

php-fpm

Для php-fpm плагина в комплекте с Munin нет. Я предлагаю использовать этот плагин. Не знаю, может быть есть и что-то лучше. Если найдёте, то не забудьте рассказать в комментариях.

Скачиваем архив, из него файл php-fpm.php помещаем на сервер в каталог /usr/share/munin/plugins/

Делаем файл плагина исполняемым и подключаем его:

chmod +x /usr/share/munin/plugins/php-fpm.php
ln -s /usr/share/munin/plugins/php-fpm.php /etc/munin/plugins/php-fpm-status
ln -s /usr/share/munin/plugins/php-fpm.php /etc/munin/plugins/php-fpm-memory
ln -s /usr/share/munin/plugins/php-fpm.php /etc/munin/plugins/php-fpm-memoryPreview
ln -s /usr/share/munin/plugins/php-fpm.php /etc/munin/plugins/php-fpm-cpu

Для работы плагина php-fpm.php требуется, чтобы на сервере был установлен модуль php5-cli. У меня он уже был установлен, но на всякий случай, команда установки:

apt-get install php5-cli

Перезапустим Munin:

/etc/init.d/munin-node restart

Через некоторое время графики для php-fpm появятся.

mysql

На самом деле я предпочитаю использовать Percona Server, но это не принципиально, настройка полностью аналогична.

Для работы с mysql в комплекте с Munin есть целая пачка плагинов, подключаем самое нужное:

ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes
ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads

Для работы плагинов потребуются модули libdbd-mysql-perl и libcache-cache-perl, чтобы их установить выполняем:

apt-get install libdbd-mysql-perl libcache-cache-perl

Чтобы графики начали строится, перезапустим Munin:

/etc/init.d/munin-node restart

Обратите внимание, что среди плагинов Munin есть такие у которых в конце имени знак подчеркивания «_». Это означает, что при подключении таких плагинов требуется указывать дополнительный параметр. Он указывается при создании символической ссылки, например:

ln -s /usr/share/munin/plugins/mysql_ /etc/munin/plugins/mysql_параметр

Пример графиков

Статистики накопилось ещё мало, но тем не менее:

Munin: disk

Munin: nginx

Munin: php-fpm

Munin: mysql

Munin: processes

Munin: system