Munin — статистика сервера
До недавнего времени статистику загруженности сетевого интерфейса я просматривал благодаря ntop и vnstat . К сожалению ntop не зарекомендовал себя как надежное решение. Vnstat в свою очерерь работает весьма надежно, но при этом выдает статистику в очень общем виде. Посему избавимся от ntop и попробуем munin.
Munin позволяет просматривать через web-интерфейс разнообразную статистику сервера. И самое главное рисует графики наподобие MRTG, а также весьма прост в установке. Пример выдаваемой статистики можно посмотреть
В моем распоряжении два сервера под управлением debian lenny со следующими ip:
munin-сервер — 192.168.2.1, 203.0.113.1
munin-клиент — 192.168.2.2
munin-win-клиент – 192.168.2.3
Munin-сервер
Устанавливаем сервер и клиент:
aptitude install munin munin-node |
Изменяем некоторые параметры /etc/munin/munin.conf:
# Я консолидирую всю используемую статистику # на одном доменном имени — http://st.example.com/ # Там же расместим и munin, соответственно: #htmldir /var/www/munin htmldir / var / www / st / munin #Задаем параметры хостов: [ host1.example.com ] address 127.0.0.1 use_node_name yes #Дополнительный сервер (munin-клиент) [ host2.example.com ] address 192.168.2.2 use_node_name yes #Win-клиент [ host3.example.com ] address 192.168.2.3 use_node_name yes |
Создаем каталог и задаем владельца:
mkdir / var / www / st / munin chown munin:munin munin |
Добавляем описание munin к соответствующему виртуалхосту со статистикой. На самом то деле это можно и не делать, всмысле прописывать munin в файле виртуалхоста приведенного ниже. Я это сделал для наглядности. Можно, например, задать доступ к каталогу munin лишь с определенного ip. Главное не забыть создать виртуалхост со всей статистикой:
< VirtualHost * : 80 > ServerName st.example.com ServerAlias www.st.example.com # SSL RewriteEngine On RewriteCond % { HTTPS } off RewriteRule ( . * ) https: //% { HTTP_HOST } % { REQUEST_URI } ErrorLog "/var/log/apache2/st.example.com-error.log" CustomLog "/var/log/apache2/st.example.com-access.log" common </ VirtualHost > # Для внутреннего доступа < VirtualHost 192.168.2.1: 443 > ServerAdmin admin @ example.com DocumentRoot / var / www / st ServerName st.example.com ServerAlias www.st.example.com ErrorLog "/var/log/apache2/st.example.com-ssl-error.log" CustomLog "/var/log/apache2/st.example.com-ssl-access.log" common < Directory / var / www / st > AllowOverride None Order Allow,Deny Allow from 192.168.2. #Allow from all # Аунтификация AuthType Basic # Описание при запросе логина и пароля AuthName "Statistics" AuthBasicProvider file AuthUserFile / var / www / st / .htpasswd Require valid-user </ Directory > # Сертификаты GnuTLSEnable on GnuTLSPriorities NORMAL GnuTLSCertificateFile / etc / apache2 / ssl / example.com.crt GnuTLSKeyFile / etc / apache2 / ssl / example.com.key # Eximstats < Directory / var / www / st / eximstats > DirectoryIndex eximstats.html </ Directory > # sqstat < Directory / var / www / st / sqstat > DirectoryIndex sqstat.php </ Directory > # lightsquid < Directory / var / www / st / lightsquid > AddHandler cgi-script .cgi AllowOverride All </ Directory > # vnstat PHP frontend < Directory / var / www / st / vnstat > DirectoryIndex index.php </ Directory > # ups Redirect / ups http: // example.com / cgi-bin / apcupsd / multimon.cgi # Awstst Redirect / awstats / example.net http: // example.net / cgi-bin / awstats.pl Redirect / awstats / example.com http: // example.com / cgi-bin / awstats.pl # Munin < Directory / var / www / st / munin > DirectoryIndex index.html </ Directory > </ VirtualHost > # Для внешнего доступа < VirtualHost 203.0.113.1: 443 > ServerAdmin admin @ example.com DocumentRoot / var / www / st ServerName st.example.com ServerAlias www.st.example.com ErrorLog "/var/log/apache2/st.example.com-ssl-error.log" CustomLog "/var/log/apache2/st.example.com-ssl-access.log" common < Directory / var / www / st > AllowOverride None Order Allow,Deny #Allow from 203.0.113.1 Deny from all # Аунтификация AuthType Basic # Описание при запросе логина и пароля AuthName "Statistics" AuthBasicProvider file AuthUserFile / var / www / st / .htpasswd Require valid-user </ Directory > # Сертификаты GnuTLSEnable on GnuTLSPriorities NORMAL GnuTLSCertificateFile / etc / apache2 / ssl / example.com.crt GnuTLSKeyFile / etc / apache2 / ssl / example.com.key # Eximstats < Directory / var / www / st / eximstats > DirectoryIndex eximstats.html </ Directory > # sqstat < Directory / var / www / st / sqstat > DirectoryIndex sqstat.php </ Directory > # lightsquid < Directory / var / www / st / lightsquid > AddHandler cgi-script .cgi AllowOverride All </ Directory > # vnstat PHP frontend < Directory / var / www / st / vnstat > DirectoryIndex index.php </ Directory > # ups Redirect / ups http: // example.com / cgi-bin / apcupsd / multimon.cgi # Awstst Redirect / awstats / example.net http: // example.net / cgi-bin / awstats.pl Redirect / awstats / example.com http: // example.com / cgi-bin / awstats.pl # Munin < Directory / var / www / st / munin > DirectoryIndex index.html </ Directory > </ VirtualHost > |
Запускаем munin:
/ etc / init.d / munin-node start |
Заходим на страницу статистики munin — http://st.example.com/munin/
Мониторинг дополнительного сервера (munin-клиент)
Linux
Устанавливаем:
aptitude install munin-node |
Добавляем в /etc/munin/munin-node.conf адрес нашего munin-сервера:
allow ^
192
\.168\.2\.1$
|
Стартуем:
/ etc / init.d / munin-node start |
Перезапускаем munin на munin-сервере:
/ etc / init.d / munin-node restart |
Через некоторое время можно будет наблюдать статистику дополнительного клиента.
Windows
Скачиваем клиент для windows
http: // sourceforge.net / projects / munin-nodewin32 / files / munin-node-win32 / Munin % 20Node % 20for % 20Windows % 20v1.5 / munin-node-win32-v1.5.1942.msi / download |
Проверяем доступность ноды:
telnet 192.168.2.3 4949 Trying 192.168.2.3... Connected to host3.example.com. Escape character is '^]' . # munin node at host3 list df memory processes network cpu hdd speedfan fetch memory apps.value 2074263552 swap.value 0 free.value 2722803712 |
Через некоторое время можно будет наблюдать статистику win-клиента.
Плагины
В каталоге /etc/munin/plugins можно посмотреть активные на данный момент плагины.
В каталоге /usr/share/munin/plugins находятся все доступные плагины.
Также есть соответствующая команда для просмотра доступных плагинов:
munin-node-configure |
Вот что она нам покажет:
Plugin | Used | Extra information ------ | ---- | ----------------- acpi | yes | amavis | no | apache_accesses | yes | apache_processes | yes | apache_volume | yes | ... if_ | yes | eth0 eth1 if_err_ | yes | eth0 eth1 ... sensors_ | yes | fan volt temp smart_ | yes | sdb sda |
Используя ключ —suggest можно выявить причину неработоспособности того или иного плагина:
munin-node-configure
--suggest
|
Plugin | Used | Suggestions ------ | ---- | ----------- ... if_ | yes | if_err_ | yes | ip_ | no | ... nfs_client | no | [ no / proc / net / rpc / nfs ] nfsd | no | [ no / proc / net / rpc / nfsd ] postfix_mailqueue | no | [ spooldir not found ] postfix_mailvolume | no | [ postfix not found ] |
Например, мы видим проблему с плагином postfix_mailqueue. Но в данном случае в этом нет ничего удивительного, так как я использую exim.
Чтобы проверить возможность запуска плагина можно воспользоваться ключом autoconf:
/ usr / share / munin / plugins / apache_accesses autoconf no ( no apache server-status or ExtendedStatus missing on ports 80 ) |
Тут мы видим, что с запуском плагина apache_accesses проблема связанная, по всей видимости, с невозможностью подключиться к статистике апача.
Кстати, эта проблема у меня была из-за того, что я на сервере использую GnuTLS и заходя по ip в каталог server-status апач автоматически перебрасывал меня на защищенное соединение https. Выход оказался до безобразия простым. Если заходить по имени, например, localhost то мы без проблем попадаем на статистику апача — http://localhost/server-status. Итого достаточно было в плагине apache_accesses заменить стоку “http://127.0.0.1:%d/server-status?auto” на “http://localhost:%d/server-status?auto”
Работоспособность плагина проверяется командами:
/ etc / munin / plugins / apache_accesses accesses80.value 19911 |
либо
munin-run apache_accesses
accesses80.value
19943
|
Выше мы видим нормально функционирующий плагин apache_accesses. А вот пример не работающего плагина:
/ etc / munin / plugins / mysql_slowqueries queries.value U |
Если вы хотите добавить новый плагин то достаточно сделать соответствующий симлинк:
ln -s / usr / share / munin / plugins / uptime / etc / munin / plugins / uptime |
Если вам не нужна статистика определенного плагина достаточно удалить симлинк этого плагина из /etc/munin/plugins.
Для примера разберем работу с плагином sensors_
sensors_ показывает температуру, скорость вращения вентиляторов и вольтаж.
Устанавливается элементарно:
ln -s / usr / share / munin / plugins / sensors_ / etc / munin / plugins / sensors_temp ln -s / usr / share / munin / plugins / sensors_ / etc / munin / plugins / sensors_fan ln -s / usr / share / munin / plugins / sensors_ / etc / munin / plugins / sensors_volt |
Проверим показания сенсоров:
sensors w83627thf-isa-0290 temp3: - 48.0 °C ( high = + 80.0 °C, hyst = + 75.0 °C ) sensor = thermistor |
Как видно сенсор зоны temp3 показывает явно недостоверную температуру. И созерцать это на графике нет никакого желания.
Автором плагина sensors_ предусмотрена возможность отключать ненужные параметры. К сожалению эта функция в данном плагине корректно не работет.
Выйти из положения можно следующим образом — занести в файл /etc /sensors3.conf значение «ignore temp3»(без кавычек).
По умолчанию в нашем распоряжении 99 плагинов:
ls / usr / share / munin / plugins / | wc -l 99 |
Если вам этого мало, то можно установить дополнительные плагины:
aptitude install munin-plugins-extra |
Итого, теперь в нашем распоряжении 138 плагинов:
ls / usr / share / munin / plugins / | wc -l 138 |
Ссылки
А у вас нормально плагин cpu для винклиента правильно отрабатывает?
Да, нормально. Рисовал зеленые графики нагрузки процессора. Можно было посмотреть за день, за неделю, за месяц и год. Вообщем стандартно.
А версия форточек какая была? У меня проблема с форточками 2к8r2.. Самое ужасное, что snmp тоже что-то не отрабатывает как надо. Я нашел несколько форков munin0mode-win32, но они либо не запускаются, либо работают также =)
Я имел дело с win2003r2sp2.
Я так и подумал =) Ладно, ещё помучаюсь, вроде понял примерно как решается. Спасибо.
спасибо за наводку на munin-node-configure — помогло с mongodb плагинами!