Цель: установить и настроить мониторинг для четырёх серверов: monitor (localhost), главный сервер (main-server) и 2 DNS сервера (DNS1, DNS2).
На всех четырёх машинах Debian 7.
Обратите внимание на hostname, чтобы не запутаться.
monitor - сервер мониторинга, на котором будет производиться большинство настроек;
main-server - сервер, который будет подключать к мониторингу;
dns1, dns2 - DNS сервера, которые будем подключать к мониторингу.
Если используется nginx, то:
monitor ~ # vim /etc/nginx/conf.d/munin.conf
server {
listen 8080;
server_name localhost;
auth_basic "Private access";
auth_basic_user_file /etc/munin/munin-htpasswd;
location /munin/ {
alias /var/cache/munin/www/;
}
location /munin/static/ {
alias /etc/munin/static/;
}
}
Я его повесил на порт 8080, без ssl.
Для nginx:
http://ваш_адрес:8080/munin/
логин и пароль те же
На всех четырёх машинах Debian 7.
До этого я устанавливал Nagios, теперь данные с серверов решил разбавить графиками.
Обратите внимание на hostname, чтобы не запутаться.
monitor - сервер мониторинга, на котором будет производиться большинство настроек;
main-server - сервер, который будет подключать к мониторингу;
dns1, dns2 - DNS сервера, которые будем подключать к мониторингу.
Обновляем пакетную базу:
monitor ~ # apt-get update && apt-get upgrade
monitor ~ # apt-get install munin munin-node
Приводим основной конфиг munin к виду:
monitor ~ # vim /etc/munin/munin.conf
# абсолютные пути к файлам
dbdir /var/lib/munin
htmldir /var/cache/munin/www
logdir /var/log/munin
rundir /var/run/munin
# отправлять письма с уведомлениями
contact.someuser.command mail -s "Munin notification" [email protected]
# отправлять письма с уведомлениями
contact.someuser.command mail -s "Munin notification" [email protected]
# подключаемые хосты
[localhost.localdomain] # localhost
address 127.0.0.1
use_node_name yes
[main-server.example.ru] # главный сервер
address 1.1.1.1
use_node_name yes
[dns1.dns1] # DNS1
address 2.2.2.2
use_node_name yes
[dns2.dns2] # DNS2
address 3.3.3.3
use_node_name yes
Настраиваем apache2 для работы с munin:
monitor ~ # vim /etc/apache2/sites-available/munin
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName example.ru
DocumentRoot /var/cache/munin/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/cache/munin/www>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/nagios.pem
SSLCertificateKeyFile /etc/apache2/ssl/nagios.key
</VirtualHost>
Сертификат для ssl у меня уже был (самоподписанный), для Nagios, поэтому я его использовал. Как создать самоподписанный сертификат написано тут.
Если используется nginx, то:
monitor ~ # vim /etc/nginx/conf.d/munin.conf
server {
listen 8080;
server_name localhost;
auth_basic "Private access";
auth_basic_user_file /etc/munin/munin-htpasswd;
location /munin/ {
alias /var/cache/munin/www/;
}
location /munin/static/ {
alias /etc/munin/static/;
}
}
Я его повесил на порт 8080, без ssl.
Сейчас доступ к munin у нас имеют все пользователи. Настроим его так, чтобы работала авторизация (например для пользователей muninadmin, myuser, user1):
monitor ~ # htpasswd -c /etc/munin/munin-htpasswd muninadmin
monitor ~ # htpasswd -n myuser >> /etc/munin/munin-htpasswd
monitor ~ # htpasswd -n user1 >> /etc/munin/munin-htpasswd
Теперь нужно указать в конфиге, что при заходе на сайт нужно требовать авторизацию (если nginx, то пропускаем этот пункт):
monitor ~ # vim /etc/munin/apache.conf
<Directory /var/cache/munin/www>
...
AuthUserFile /etc/munin/munin-htpasswd
AuthName "Munin"
AuthType Basic
require valid-user
...
</Directory>
По умолчанию munin запускается по крону каждые 5 минут. Я хочу изменить это, к примеру на 1 минуту:
monitor ~ # vim /etc/cron.d/munin
*/1 * * * * munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi
Для применения настроек добавляем виртуальный хост и перезагружаем apache2 и munin-node:
monitor ~ # a2ensite munin
monitor ~ # service apache2 restart
monitor ~ # service munin-node start
monitor ~ # service munin-node start
После этого можно проверить работоспособность munin.
Для apache2:
Для apache2:
https://ваш_адрес/munin/
логин: muninadmin или myuser или user1
пароль: пароль_который_вводили
Для nginx:
http://ваш_адрес:8080/munin/
логин и пароль те же
Сейчас у нас будут показываться данные только по локальной машине, ведь остальные мы ещё не подключили. Сейчас мы их подключим (обратите внимание на hostname):
main-server ~ # apt-get install munin-node
Добавляем в конфиг адрес нашего сервера мониторинга:
main-server ~ # vim /etc/munin/munin-node.conf
allow ^1\.1\.1\.1$
main-server ~ # service munin-node restart
Аналогично нужно поступить с остальными серверами, в моём случае это 2 DNS сервера.
Теперь можно проверить опять munin. Сейчас уже должны отображаться данные обо всех подключенных серверах.
По сути это всё.
Однако, меня не устраивает то, что отображается информация о exim, ntp и т.д. на DNS серверах, оно мне не нужно. Поэтому лишние плагины я удаляю (они являются символическими ссылка, так что без проблем можно их заново создать). На main-server мне не нужен мониторинг интерфейса eth1, а на localhost не нужен мониторинг ntp и postfix.
Удаление лишних плагинов:
DNS1
dns1 ~ # cd /etc/munin/plugins/
dns1 /etc/munin/plugins # rm exim_mailqueue exim_mailstats nfs4_client nfs_client nfsd nfsd4 ntp_kernel_err ntp_kernel_pll_freq ntp_kernel_pll_off ntp_offset ntp_states swap
DNS2
dns2 ~ # cd /etc/munin/plugins/
dns2 /etc/munin/plugins # rm exim_mailqueue exim_mailstats nfs4_client nfs_client nfsd nfsd4 ntp_kernel_err ntp_kernel_pll_freq ntp_kernel_pll_off ntp_offset ntp_states swap
main-server
main-server ~ # cd /etc/munin/plugins/
main-server /etc/munin/plugins # rm if_err_eth1 if_eth1
localhost
monitor ~ # cd /etc/munin/plugins/
monitor /etc/munin/plugins # rm postfix_mailqueue postfix_mailvolume ntp_kernel_err ntp_kernel_pll_freq ntp_kernel_pll_off ntp_offset
Дополнительные настройки.
Настройка MySQL:
main-server ~ # apt-get install libcache-perl libcache-cache-perl
main-server ~ # vim /etc/munin/plugin-conf.d/munin-node
[mysql*]
user root
env.mysqluser root
env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3306
env.mysqlpassword пароль_базы
main-server ~ # service munin-node restart
Настройка bind9 для DNS1, DNS2:
dns1 ~ # mkdir /var/log/bind9
dns1 ~ # chown bind:bind /var/log/bind9
dns1 ~ # vim /etc/bind/named.conf.options
...
logging {
channel b_log {
file "/var/log/bind9/bind.log" versions 30 size 1m;
print-time yes;
print-category yes;
print-severity yes;
severity info;
};
channel b_debug {
file "/var/log/bind9/debug.log" versions 2 size 1m;
print-time yes;
print-category yes;
print-severity yes;
severity dynamic;
};
channel b_query {
file "/var/log/bind9/query.log" versions 2 size 1m;
print-time yes;
severity info;
};
category default { b_log; b_debug; };
category config { b_log; b_debug; };
category queries { b_query; };
};
dns1 ~ # service bind9 restart
dns1 ~ # ln -s /usr/share/munin/plugins/bind9 /etc/munin/plugins/bind9
dns1 ~ # vim /etc/munin/plugin-conf.d/munin-node
[bind9]
user root
env.logfile /var/log/bind9/query.log
dns1 ~ # service munin-node restart
Проверка:
dns1 ~ # munin-run bind9
query_MX.value 6
query_A.value 1889
query_A6.value 4
query_NS.value 27
query_AAAA.value 846
query_ANY.value 5
query_other.value 0
И окончательно можно зайти проверить:
Настройка MySQL:
main-server ~ # apt-get install libcache-perl libcache-cache-perl
main-server ~ # vim /etc/munin/plugin-conf.d/munin-node
[mysql*]
user root
env.mysqluser root
env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3306
env.mysqlpassword пароль_базы
main-server ~ # service munin-node restart
Настройка bind9 для DNS1, DNS2:
dns1 ~ # mkdir /var/log/bind9
dns1 ~ # chown bind:bind /var/log/bind9
dns1 ~ # vim /etc/bind/named.conf.options
...
logging {
channel b_log {
file "/var/log/bind9/bind.log" versions 30 size 1m;
print-time yes;
print-category yes;
print-severity yes;
severity info;
};
channel b_debug {
file "/var/log/bind9/debug.log" versions 2 size 1m;
print-time yes;
print-category yes;
print-severity yes;
severity dynamic;
};
channel b_query {
file "/var/log/bind9/query.log" versions 2 size 1m;
print-time yes;
severity info;
};
category default { b_log; b_debug; };
category config { b_log; b_debug; };
category queries { b_query; };
};
dns1 ~ # service bind9 restart
dns1 ~ # ln -s /usr/share/munin/plugins/bind9 /etc/munin/plugins/bind9
dns1 ~ # vim /etc/munin/plugin-conf.d/munin-node
[bind9]
user root
env.logfile /var/log/bind9/query.log
dns1 ~ # service munin-node restart
Проверка:
dns1 ~ # munin-run bind9
query_MX.value 6
query_A.value 1889
query_A6.value 4
query_NS.value 27
query_AAAA.value 846
query_ANY.value 5
query_other.value 0
Аналогичные настройки для DNS2.
И окончательно можно зайти проверить:
https://ip-addr/munin/
Комментариев нет:
Отправить комментарий