"FreeBSD. Munin - мониторинг на коленке"
Thu 20 March 2014
Munin - простое и надежное средство для мониторинга и визуализации "what just happened to kill our performance?" проблем. Сервер представляет собой коллектор, получающий данные с любого устройства или скрипта, будь то SNMP или внешний скрипт. Данные поступают в базу RRD и затем с помощью специального скрипта (/usr/local/bin/munin-cron) визуализируются на красивых графиках.
![graph][graph_url]
Установка сервера
make install -C /usr/ports/sysutils/munin-master
После установки порта создаётся каталог /usr/local/www/munin/, в котором хранятся графики. Для их отображения потребуется любой веб сервер. Неплохо справляется с этими задачами сервер Nginx, с минимальной конфигурацией:
server {
listen 78.xxx.xxx.xxx:80;
server_name munin.site.ltd;
set $docroot "/usr/local/www/munin/";
index index.html;
charset utf-8;
root $docroot;
access_log /var/log/nginx/munin.site.ltd-access.log;
error_log /var/log/nginx/munin.site.ltd-error.log warn;
}
Установка клиента
make install -C /usr/ports/sysutils/munin-node
Клиент использует "плагины" для получения сведений о сервере и отправляет их в БД munin-master'а. Плагин может быть написан на любом языке, доступном на сервере, а также в каталоге /usr/local/share/munin/plugins/ находятся уже готовые к использованию скрипты для основных служб и подсистем сервера.
Замечание: Если будете использовать плагины nginx_ и mysql_, то дополнительно нужно установить два порта:
make install -C databases/p5-DBI
make install -C www/p5-libwww/
Пример использования
Для активации плагина необходимо создать символическую ссылку или скопировать скрипт в рабочую директорию ноды
ln -s /usr/local/share/munin/plugins/nginx_status /usr/local/etc/munin/plugins/
Далее вносятся дополнительные изменения в параметры передаваемые скрипту, если это необходимо. Для этого используется файл /usr/local/etc/munin/plugin-conf.d/plugins.conf. Синтаксис примерно такой:
[nginx*]
env.url http://localhost:8081/server-status
В квадратных скобках содержится имя или regexp, совпадающий с именем файла «плагина», т.е. в данном случае настройки будут применены для всех «плагинов», содержащих в начале своего имени слово «nginx».
/usr/local/etc/munin/plugins]# ls -l | grep 'nginx*'
lrwxr-xr-x 1 root wheel 44 19 мар 14:03 nginx_request -> /usr/local/share/munin/plugins/nginx_request
lrwxr-xr-x 1 root wheel 43 19 мар 14:03 nginx_status -> /usr/local/share/munin/plugins/nginx_status
Параметр env.url указывает URL-адрес для «плагина», с которого нужно считывать сведения о сервере Nginx. Более детально о параметрах, а так же о правилах использования, можно прочитать в заголовках всех доступных из порта плагинов. Пример для nginx_status:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
|
После всех необходимых операций запускаем демона
echo 'munin_node_enable="YES"' >> /etc/rc.conf
service munin-node start
Для генерации HTML-страниц с графиками запускаем вручную
sudo -u munin /usr/local/bin/munin-cron
И проверяем наличие этой команды в crontab
# sudo -u munin crontab -l
#BEGIN_MUNIN_MAIN
MAILTO=root
*/5 * * * * /usr/local/bin/munin-cron
#END_MUNIN_MAIN
[graph_url]: {{ site.static }}/ef6961.png