Munin - утилита для сбора статистических данных по различным параметрам одного или нескольких серверов. Munin состоит из двух частей: клиент (munin-node) и сервер (munin-master), благодаря чему на одном компьютере можно собирать и просматривать в удобном виде статистику по многим другим. В этой статье будет рассмотрена установка и настройка Munin и его плагинов на сервере с FreeBSD и панелью управления DirectAdmin.
Клиентская часть Munin постоянно находится в памяти компьютера и собирает статистику только по запросу сервера munin-master. Все данные на сервер передаются в открытом виде и единственный способ ограничения доступа - ограничение по IP. Так что для улучшения безопасности, если клиент и сервер находятся на разных компьютерах, дополнительно лучше использовать Firewall. Клиентская часть Мунина написана на Perl.
Серверная часть опрашивает клиентов, хранит базу и создает графики. Запускается сервер по крону раз в пять минут (значение можно изменить). При запуске сервер запрашивает и получает данные со всех клиентов через порт 4949 (можно перенастроить) и сохраняет их с помощью RRDTool. RRDTool хранит данные в виде карусели — при заполнении базы до определенного размера самые старые данные перезаписываются новыми, что дает возможность хранить только актуальную информацию. Ротация данных контролирует их размер, что не позволит им со временем заполнить все свободное пространство диска.
Установка и настройка Мунин
Установку Munin лучше всего проводить из портов FreeBSD: /usr/ports/sysutils/munin-node/ и /usr/ports/sysutils/munin-master/. Перед установкой нужно обязательно обновить все установленные порты, так как в противном случае при установке Мунин может всплыть большое количество ошибок.
Также, желательно перед установкой серверной части Munin установить порт /usr/ports/databases/rrdtool/. Несмотря на то, что rrdtool автоматически установится при инсталляции Мунин, во избежание ошибок в ходе установки, лучше его установить заранее.
Установка и настройка munin-node
При установке munin-node будет подтянуты все необходимые зависимости, в которых все параметры лучше оставить по умолчанию.
# cd /usr/ports/sysutils/munin-node/ # make install clean
На единственный вопрос, который будет задан при установке и непосредственно относится к munin-node: "Would you like me to set up log rotation [y]?" - лучше ответить да (y).
После того, как инсталляция Munin завершена, нужно добавить строки в файл /etc/rc.conf, которые позволят запускать munin_node сразу при загрузке FreeBSD:
# MUNIN munin_node_enable="YES"
Далее необходимо отредактировать конфигурационный файл munin-node, в котором для начала следует только проверить директиву allow (по умолчанию 127.0.0.1): /usr/local/etc/munin/munin-node.conf.
munin-node.conf
... # Насколько подробно вести журнал: # 1 - ничего не записывать # 10 - записывать все, что можно (режим отладки) log_level 4 ... # 1 - (по умолчанию) режим демона # 0 - режим отладки, при котором munin-node будет все время в консоли background 1 ... # Пользователь и группа владельца процесса. # Если это НЕ root, то должны быть установлены права # на получение ID каждого имени пользователя, # от имени которых запускается плагин проверки user root group wheel ... # Список IP-адресов, с которых разрешены подключения серверу. # IP-адрес записывается в виде регулярного выражения (RegExp) # CIDR-style (например 192.168.0.0/24) не поддерживается # (включить поддержку можно при сипользовании cidr_allow, cidr_deny, # но для этого требуется Net::CIDR perl module) # Можно использовать более оной строки с allow # Если сервер находится там, где и клиент, # можно оставить только одну строку: allow ^127\.0\.0\.1$ ... # К какому адресу привязать munin-node # * - все host * # Порт, который будет слушать munin-node port 4949
Далее нужно запустить процесс:
# cd /usr/local/etc/rc.d/ # ./munin-node start
Если процесс уже был запущен, то после редактирования конфигурационного файла для вступления изменений в силу нужно остановить и запустить munin-node (stop, start).
Проверить работоспособность munin-node лучше всего подключившись по telnet telnet 127.0.0.1 4949. Если подключение пройдет успешно, то тогда можно запросить версию (version), плагины (list) или выйти (quit).
# telnet 127.0.0.1 4949 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. # munin node at XXX
Если подключение не удалось, посмотреть, запущен ли процесс munin node можно так:
Установка и настройка munin-master
Серверная часть Мунин munin-master устанавливается так же, из портов:
# cd /usr/ports/sysutils/munin-master/ # make install clean
При установке munin-master может вылезти не мало ошибок, так как его работа связана с установкой множества других портов, от которых он зависит. Главное, не опускать руки, искать решение в интернете - и все будет Ок. Для того, чтобы запустить серверную часть Мунина, мне пришлось удалять и заново устанавливать порты pango и rrdtool.
Во время установки серверная часть Мунин автоматически добавляет информацию о запуске по расписанию в свой файл cron (пользователь munin /var/cron/tabs/munin). То есть сразу после установки серверная часть уже работает. Проверить, нет ли ошибок при её запуске можно вручную запустив:
# cd /usr/local/bin/ # ./munin-cron This program will easily break if you run it as root as you are trying now. Please run it as user 'munin'. The correct 'su' command on many systems is 'su - munin --shell=/bin/bash' Aborting.
Как видно из сообщения, скрипт не желает запускаться под рутом, и подсказывает, к сожалению не правильно, как запустить его под пользователем munin. Чтобы запустить серверную часть из под пользователя munin можно сделать так:
# su -m munin # cd /usr/local/bin/ # ./munin-cron
В результате выполнения, если нет никаких ошибок скрипт "задумается" на несколько секунд и снова появится приглашение системы для ввода команд. Результат выполнения скрипта - вся собранная статистика записывается сюда: /usr/local/www/munin/.
Все настройки munin-master хранятся в той же директории, что и munin-node: /usr/local/etc/munin/, в файле munin.conf. Если серверная и клиентские части Мунин расположены на одном сервере - на первое время здесь можно оставить все без изменений.
munin.conf - описание некоторых настроек
... # По умолчанию, с версии 2.0 все графики создаются во время их просмотра (CGI) # Для уменьшения нагрузки на сервер, что повлечет за собой увеличение объема данных # можно установить генерацию графиков по крону # Подробнее тут: http://munin-monitoring.org/wiki/CgiHowto2 #graph_strategy cron ...
Просматривать данные мониторинга удобнее через web, для чего нужно указать web-серверу Apache: по какому адресу будет доступна статистика и где она лежит. В файл /etc/httpd/conf/extra/httpd-alias.conf (если на сервере установлена панель DirectAdmin) нужно добавить строку:
Alias /munin-stat "/usr/local/www/munin"
В этом случае статистика будет доступна через веб по адресу: [любой_хост_на_сервере]/munin-stat (http://myserver.com/munin-stat).
Последний штрих в настройке - изменить пользователя и пароль на директорию в /usr/local/www/munin/.htaccess при помощи редактирования этого файла и утилиты, поставляемой совместно с Apache: htpasswd.
Установка и настройка плагинов
Просмотреть, какие плагины уже установлены: munin-node-configure. Напротив активных плагинов будет написано yes, тех, что не работают, соответственно, no:
# munin-node-configure Plugin | Used | Extra information ------ | ---- | ----------------- amavis | no | apache_accesses | no | apache_processes | no | apache_volume | no | ... courier_mta_mailvolume | no | cpu | yes | cupsys_pages | no | dev_cpu_ | no | df | yes | ...
Чтобы посмотреть, почему не работают плагины, которые уже установлены - нужно добавить флаг --suggest (информация будет отображена в колонке Suggestions):
# munin-node-configure --suggest Plugin | Used | Suggestions ------ | ---- | ----------- amavis | no | no apache_accesses | no | no [LWP::UserAgent not found] apache_processes | no | no [LWP::UserAgent not found] apache_volume | no | no [LWP::UserAgent not found] apc_envunit_ | no | no [no units to monitor] courier_mta_mailqueue | no | no [spooldir not found]
Инструменты по отладке плагинов
- munin-run PLUGIN_NAME - ручной запуск плагинов для проверки их работоспособности.
Статистика по Apache
Правда вот устранить причину по такой "исчерпывающей" информации весьма не просто... Например сообщение "LWP::UserAgent not found" говорит о том, что не хватает Perl-библиотеки "LWP::UserAgent". Чтобы уcтранить эту проблему нужно установить порт /usr/ports/www/p5-libwww.
Теперь, после запуска munin-node-configure --suggest, видим уже другое сообщение: [Port 80: Forbidden] или [no apache server-status or ExtendedStatus missing on ports 80]. Эти сообщения говорят о том, что нет доступа к информации server-status от Apache. Чтобы открыть доступ, необходимо отредактировать файл /etc/httpd/conf/extra/httpd-info.conf (путь к файлу верен, если Apache был установлен DirectAdmin`ом) - дать доступ к /server-status только для 127.0.0.1.
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 127.0.0.1 </Location> <Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from 127.0.0.1 </Location>
После внесенных изменений требуется перезагрузить Apache. Теперь вывод munin-node-configure --suggest имеет такой вид:
# munin-node-configure --suggest Plugin | Used | Suggestions ------ | ---- | ----------- ... apache_accesses | no | yes apache_processes | no | yes apache_volume | no | yes ...
Для подключения новых плагинов осталось только добавить символические ссылки на них в /usr/local/etc/munin/plugins/ и перезагрузить munin-node. Создать команды для создания символических ссылок поможет такая команда:
# munin-node-configure --shell ln -s '/usr/local/share/munin/plugins/apache_accesses' '/usr/local/etc/munin/plugins/apache_accesses' ln -s '/usr/local/share/munin/plugins/apache_processes' '/usr/local/etc/munin/plugins/apache_processes' ln -s '/usr/local/share/munin/plugins/apache_volume' '/usr/local/etc/munin/plugins/apache_volume' ln -s '/usr/local/share/munin/plugins/munin_stats' '/usr/local/etc/munin/plugins/munin_stats'
Как видно, стал доступен еще один, ранее недоступный плагин: munin_stats.
Статистика по MySQL
Для работы плагина Munin по сбору статистики о базе данных MySQL требуется порт: p5-DBD-mysql[XX] (/usr/ports/databases/), где [XX] - версия MySQL базы. Также, необходимо добавить настройки root-пользователя в файл /usr/local/etc/munin/plugin-conf.d/plugins.conf:
... [mysql*] # Нужно для: mysql_; mysql_bytes; mysql_queries; mysql_slowqueries; user root env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3306 env.mysqluser root env.mysqlpassword PASSWORD env.mysqlopts -u root -pPASSWORD env.mysqladmin /usr/local/bin/mysqladmin env.mysqlshow /usr/local/bin/mysqlshow [mysql_innodb] env.mysql /usr/local/mysql/bin env.mysqlopts --user=root --password=PASSWORD --host=127.0.0.1 env.warning 2147483648 env.critical 1073741824 ...
Более подробно настройки написаны в самих файлах плагинов, например в начале файла /usr/local/share/munin/plugins/mysql_.
Статистика температуры, скорости вентиляторов, напряжения
Чтобы контролировать параметры температуры на материнской плате, скорости вентиляторов и напряжения питания можно установить порт mbmon: /usr/ports/sysutils/mbmon. К сожалению, он будет работать не на всех системах. Установка:
# ln -s /usr/local/share/munin/plugins/mbmon_ /usr/local/etc/munin/plugins/mbmon_FAN # ln -s /usr/local/share/munin/plugins/mbmon_ /usr/local/etc/munin/plugins/mbmon_Voltage # ln -s /usr/local/share/munin/plugins/mbmon_ /usr/local/etc/munin/plugins/mbmon_TEMP
Потом вносятся изменения в конфигурационный файл плагинов, где указывается путь к утилите mbmon: /usr/local/etc/munin/plugin-conf.d/plugins.conf:
... [mbmon*] env.mbmon /usr/local/bin/mbmon ...
После чего munin-node нужно остановить и запустить. Через некоторое время в web-интерфейсе статистики Мунин появится новый раздел: "sensors" с тремя графиками.
Мониторинг HDD
Мониторинг жестких дисков можно включить с помощью плагина smart_. Для его работы необходимо установить порт /usr/ports/sysutils/smartmontools. После установки порта стоит проверить его работу (вместо ada1 нужно указать свой HDD):
Если все ок - утилита корректно читает SMART винчестера, то можно приступать непосредственно к настройке плагина smart_.
Первым делом необходимо указать корректный путь к Phyton в первой строке файла самого плагина /usr/local/share/munin/plugins/smart_: заменить #!/usr/bin/python на #!/usr/local/bin/python2. Эту замену нужно проводить только в системе под управлением FreeBSD, иначе вылезет ошибка: "Can't exec... Permission denied at Munin". Далее, внести в конфиг плагинов Munin /usr/local/etc/munin/plugin-conf.d/plugins.conf:
... [smart_*] user root env.smartpath /usr/local/sbin/smartctl ...
И после этого прописать символические ссылки на плагин - количество ссылок должно быть равно количеству наблюдаемых винчестеров, например если установлено два винчестера ada0 и ada1 то файлы симлинка: smart_ada0, smart_ada1:
# ln -s /usr/local/share/munin/plugins/smart_ /usr/local/etc/munin/plugins/smart_ada0 # ln -s /usr/local/share/munin/plugins/smart_ /usr/local/etc/munin/plugins/smart_ada1
|