Настройка Munin под nginx на Debian Linux
Для удобства использования лучше подвесить статистику на поддомен, ведь согласитесь нам не за чем иметь директорию с отчетами в документрут от сайта, или копить директории на домене сервера [если такой есть], хотя тут кому как удобно. Решил делать именно на поддомене munin.site.com, добавил запись «А» в DNS чтобы создать этот самый поддомен, а пока обновляется информация, можно приступить к настройке.
NOTE: работа с munin-node, для сбора статистики с разных серверов, рассмотрена не будет.
Установка munin (серверная часть) и munin-node (клиентская часть)
Ставим
# apt-get install munin munin-node munin-plugins-extra libwww-perl -y
libwww-perl — все равно ставить нужно будет позже, поэтому поставим сразу, чтобы незаморачиваться.
Раскомментируем строки и укажем нужные пути в munin.conf
# nano /etc/munin/munin.conf
конфиг
dbdir /var/lib/munin htmldir /usr/local/hosting/stat.adminunix.ru/www logdir /usr/local/hosting/stat.adminunix.ru/log rundir /var/run/munin tmpldir /etc/munin/templates
создадим каталоги для логов и html-отчетов
# mkdir -p /usr/local/hosting/stat.adminunix.ru/www
# mkdir -p /usr/local/hosting/stat.adminunix.ru/log
Сменим владельца, иначе munin не сможет писать статистику и логи
# chown -R munin:munin /usr/local/hosting/stat.adminunix.ru # chmod 770 /usr/local/hosting/stat.adminunix.ru/www
Предоставим доступ пользователю site.com к файлам пользователя munin. Это делать необязательно, но в моем случае nginx наотрез отказывался показывать статистику, если расположить каталог где-то в /var/www будет все чин-чином и это делать не надо
# usermod -a -G nginx munin
Запустим первую индексацию
# su - munin --shell=/bin/bash $ /usr/share/munin/munin-update $ exit
Теперь можно проверить, появились ли файлы в/usr/local/hosting/stat.adminunix.ru/www
# ls -la /usr/local/hosting/stat.adminunix.ru/www
Есть все хорошо, продолжаем.
Настройка nginx
Для начала скопируем уже готовый виртулхост, можно скопировать и defalt
# cp /etc/nginx/sites-available/stat.adminunix.ru /etc/nginx/sites-available/stat.adminunix.ru
Редактируем его под свои нужды
# nano /etc/nginx/sites-available/stat.adminunix.ru
Изменим пути и впишем простую http-авторизацию. У меня получилось что-то вроде
server { listen 80; server_name stat.adminunix.ru www.adminunix.ru; #домен по которому будет откликаться наш новый хост access_log /usr/local/hosting/stat.adminunix.ru/log/nginx.access.log; #расположение логов данного хоста error_log /usr/local/hosting/stat.adminunix.ru/log/nginx.error.log; #расположение логов данного хоста location / { root /usr/local/hosting/stat.adminunix.ru/www; #расположение корневой директории, тут у нас будут отчеты #редирект if ($http_host != "stat.adminunix.ru") { rewrite ^ http://stat.adminunix.ru$request_uri permanent; } index index.html; #файлы которые будут загружаться по умолчанию auth_basic "restricted"; #http-авторизация auth_basic_user_file /usr/local/hosting/stat.adminunix.ru/www/.htpasswd; #http-авторизация } #...
Теперь в /etc/nginx/sites-available/default
# nano /etc/nginx/sites-available/default
Добавим в секцию server {} новый локейшен
#... location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } #...
Создадим access.log и error.log в log
# touch /usr/local/hosting/stat.adminunix.ru/log/nginx.access.log # touch /usr/local/hosting/stat.adminunix.ru/log/nginx.error.log
Активируем виртуальный хост munin.site.com путем создания симлинка в директорию /etc/nginx/sites-enabled
# ln -s /etc/nginx/sites-available/stat.adminunix.ru /etc/nginx/sites-enabled/stat.adminunix.ru
Перезагружаем nginx
# /etc/init.d/nginx restart
Создаем .htpasswd где у нас будет зашифрованный пароль и пользователь «admin».
# htpasswd -c /usr/local/hosting/stat.adminunix.ru/www/.htpasswd admin
Проверяем работу зайдя через браузер по URL
http://stat.adminunix.ru/
В общем то статистика отобразилась, все хорошо. Проверим работу /nginx_status
# lynx localhost/nginx_status # wget -qO - http://127.0.0.1/nginx_status
Установка плагинов Munin для Nginx
Плагинов у этой штуки много. Я дополнительно ставил только для мониторинга nginx. Переходим в каталог доступных плагинов munin
# cd /usr/share/munin/plugins/
Скачиваем в него плагины для nginx
# wget -nd http://debianuser.org/nginx/nginx_{memory,status,traffic,request}
# wget -nd http://munin-monitoring.org/browser/munin-contrib/plugins/nginx/nginx_{memory,error,upstream,vhost_traffic,connection_request} #wget -nd http://munin-monitoring.org/export/munin-contrib/plugins/nginx/nginx_vhost_traffic
- request — мониторинг запросов
- status — мониторинг статуса сервера
- memory — мониторинг занимаемой памяти
- traffic — мониторинг трафика
Даем права
# chmod +x nginx_memory # chmod +x nginx_status # chmod +x nginx_request # chmod +x nginx_traffic # chmod +x nginx_error # chmod +x nginx_upstream # chmod +x nginx_vhost_traffic # chmod +x nginx_nginx-cache-multi_ # chmod +x nginx_connection_request # chmod +x mysql_connections # chmod +x mysql_connections_per_user # chmod +x mysql_qcache # chmod +x mysql_qcache_mem # chmod +x mysql_report # chmod +x mysql_size_ # chmod +x mysql_size_ondisk # chmod +x mysql_slave # chmod +x mysql_slave_threads # chmod +x mysql_aggregate_
Включаем плагины сделав симлинки на них в директорию /etc/munin/plugins/
# ln -s /usr/share/munin/plugins/nginx_memory /etc/munin/plugins/nginx_memory
# ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status
# ln -s /usr/share/munin/plugins/nginx_traffic /etc/munin/plugins/nginx_traffic
# ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request
# ln -s /usr/share/munin/plugins/nginx_error /etc/munin/plugins/nginx_error
# ln -s /usr/share/munin/plugins/nginx_upstream /etc/munin/plugins/nginx_upstream
# ln -s /usr/share/munin/plugins/nginx_cache_multi_ /etc/munin/plugins/nginx_cache-multi_
# ln -s /usr/share/munin/plugins/nginx_vhost_traffic /etc/munin/plugins/nginx_vhost_traffic
# ln -s /usr/share/munin/plugins/nginx_connection_request /etc/munin/plugins/nginx_connection_request
# ln -s /usr/share/munin/plugins/mysql_connections /etc/munin/plugins/mysql_connections
# ln -s /usr/share/munin/plugins/mysql_connections_per_user /etc/munin/plugins/mysql_connections_per_user
# ln -s /usr/share/munin/plugins/mysql_qcache /etc/munin/plugins/mysql_qcache
# ln -s /usr/share/munin/plugins/mysql_qcache_mem /etc/munin/plugins/mysql_qcache_mem
# ln -s /usr/share/munin/plugins/mysql_report /etc/munin/plugins/mysql_report
# ln -s /usr/share/munin/plugins/mysql_size_ /etc/munin/plugins/mysql_size_
# ln -s /usr/share/munin/plugins/mysql_size_all /etc/munin/plugins/mysql_size_all
# ln -s /usr/share/munin/plugins/mysql_size_ondisk /etc/munin/plugins/mysql_size_ondisk
# ln -s /usr/share/munin/plugins/mysql_slave /etc/munin/plugins/mysql_slave
# ln -s /usr/share/munin/plugins/mysql_slave_threads /etc/munin/plugins/mysql_slave_threads
# ln -s /usr/share/munin/plugins/mysql_aggregate_ /etc/munin/plugins/mysql_aggregate_
или
cd /etc/munin/plugins/ ln -sf /usr/share/munin/plugins/nginx_* . ln -sf /usr/share/munin/plugins/mysql_* .
Теперь нужно указать куда ходить за статистикой. Можно ручками добавить
# nano /etc/munin/plugin-conf.d/munin-node
В конце файла
[nginx*] env.url http://localhost/nginx_status
А можно так для разнообразия
# echo "" | tee -a /etc/munin/plugin-conf.d/munin-node # echo "[nginx*]" | tee -a /etc/munin/plugin-conf.d/munin-node # echo "env.url http://localhost/nginx_status" | tee -a /etc/munin/plugin-conf.d/munin-node
Все, проверяем работу плагинов
# munin-run nginx_memory # munin-run nginx_status # munin-run nginx_memory # munin-run nginx_traffic
Если ругани в виде ошибок и замечаний нет, все отлично, перезагружаем munin-node, ждем какое-то время чтобы «первая» статистика собралась
# /etc/init.d/munin-node restart
Работу плагинов можно еще посмотреть командой ниже, если что-то не так, об этом будет написано напротив названия плагина
# munin-node-configure --suggest #ln -s /var/cache/munin/www /usr/local/hosting/munin/
Можно принудительно запустить опрос нод, так же поможет для отладки
Shell
class="crayon-plain-wrap">#root@Debian~# su -munin --sheel=/bin/bash class="crayon-plain-wrap">#root@Debian~# /usr/share/munin/minin-update --nofork --debug class="crayon-plain-wrap">#exit
root@Debian ~ # su - munin --shell=/bin/bash munin@Debian:~$ /usr/share/munin/munin-update --nofork --debug exit
Если все ок то вскоре появятся файлики с графиками в /var/cache/munin/www а тем временем в браузере