Munin

Thank you for reading this post, don't forget to subscribe!

Munin явля­ет­ся систе­мой для мони­то­рин­га кото­рая рас­про­стра­ня­ет­ся совер­шен­но бес­плат­но и с откры­тым исход­ным кодом кото­рая напи­са­на  на Perl и исполь­зу­ет RRDtool для созда­ния гра­фи­ков , кото­рые доступ­ны через веб-интер­фейс, кото­рая слу­жит для мони­то­рин­га всех ваших ком­пью­те­ров в сети. Munin предо­став­ля­ет мони­то­ринг с опо­ве­ще­ни­ем для сер­ве­ров, ком­му­та­то­ров, при­ло­же­ний и услуг.

Для нача­ла нуж­но уста­но­вить репо­зи­то­рий EPEL

созда­дим поль­зо­ва­те­ля под кото­рым будет рабо­тать munin
adduser munnin
После того как под­клю­чи­ли репо­зи­то­рий EPEL, уста­нов­ка выпол­ня­ет­ся в одну команду

yum --enablerepo=epel install munin munin-node rrdtool

По умол­ча­нию Munin созда­ет кон­фи­гу­ра­ци­он­ный файл кон­фи­гу­ра­ции Apache в фай­ле  /etc/httpd/conf.d/munin.conf.
При­ве­дём дан­ный кон­фи­гу­ра­ци­он­ный файл к сле­ду­ю­ще­му виду(так как у нас php рабо­та­ет как fastcgi, то):

 

cat /etc/httpd/conf.d/munin.conf
<VirtualHost *:8080>
ServerName munin.example.com
ServerAlias munin.*

ScriptAlias /munin-cgi/munin-cgi-graph /var/www/cgi-bin/munin-cgi-graph

DocumentRoot /var/www/munin/site/munin

ErrorLog /var/www/munin/logs/munin.error.log
CustomLog /var/www/munin/logs/munin.access.log common
<IfModule mod_fcgid.c>
SuexecUserGroup munin munin
<Directory /var/www/munin/site/munin>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/munin/php-cgi/php.cgi .php
Order allow,deny
Allow from all
</Directory>
</IfModule>
</VirtualHost>

 

cat /var/www/munin/php-cgi/php.cgi

#!/bin/sh
PHPRC=/var/www/munin/php-cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=500
exec /usr/bin/php-cgi

 

Что­бы доступ был запа­ро­лен, нуж­но доба­вить сле­ду­ю­щую запись в кон­фиг, после стро­ки (<Directory /var/www/munin/site/munin>):
AuthUserFile /etc/munin/munin-htpasswd
AuthName "munin_admin"
AuthType Basic
require valid-user
Созда­дим поль­зо­ва­те­ля ( я его назвал admin) и назна­чим ему пароль, для это­го выполните:

htpasswd -cm /etc/munin/munin-htpasswd admin
(пароль я ука­зал 1)

 

Кон­фиг nginx будет выгля­деть сле­ду­ю­щим образом:

cat /etc/nginx/conf.d/munin.conf

server {
listen 80;
server_name munin.*;
access_log /var/www/munin/logs/munin.nginx.access.log combined;
error_log /var/www/munin/logs/munin.nginx.error.log error;
client_max_body_size 20m;
location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|swf|js|html|htm|)$ {
root /var/www/munin/site/munin;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
}
}

созда­ём домаш­нюю директорию:
mkdir /var/www/munin/site/munin
логи:
mkdir  /var/www/munin/logs/

touch /var/www/munin/logs/munin.nginx.access.log combined
touch  /var/www/munin/logs/munin.nginx.error.log error

touch  /var/www/munin/logs/munin.error.log
touch  /var/www/munin/logs/munin.access.log

 

Пра­вим конфиг:
/etc/munin/munin.conf

рас­ком­мен­ти­ру­ем:
dbdir /var/lib/munin
htmldir /var/www/munin/site/munin
logdir /var/log/munin
rundir /var/run/munin

Пере­ме­ща­ем фай­лы в нашу директорию:
cp -r /var/www/html/munin/* /var/www/munin/site/munin/
пра­вим владельца:
chown -R munin:munin /var/www/munin/
стар­ту­ем munin
/etc/init.d/munin-node start
пере­за­пус­ка­ем апач и nginx
/etc/init.d/httpd restart
/etc/init.d/nginx restart
Теперь munin досту­пен по субдомену
http://munin.domen/

 

Добавить новый сервер для мониторинга

Что­бы доба­вить новый сер­вер для мони­то­рин­га нуж­но на всех кли­ент­ских систе­мах запу­стить и уста­но­вить пакет munin-node:

доба­вим репо­зи­то­рий epel:
yum install -y epel-release

yum install munin-node -y
Уста­но­вить то уста­но­ви­ли, но нуж­но еще доба­вить конфигурацию.

nano /etc/munin/munin-node.conf

Ука­жи­те в Munin ваш IP адрес ново­го сервера:

[…]
host_name your_new_HOST

[…]

allow ^78\.140\.189\.243$
allow ^::1$

Сохра­ни­те и закрой­те этот файл. Где, your_new_HOST это мой новый кли­ент — сер­вер. 78.140.189.243 это мой айпиш­ник на кото­ром висит Munin.

Запу­сти­те сер­вис munin-node в Munin на кли­ент­ском сервере:

service munin-node start
chkconfig munin-node on
Затем перей­ди­те к ваше­му сер­ве­ру Munin и добавь­те имя хоста вашей новой кли­ент-систе­мы и IP-адрес в конец доба­вим сле­ду­ю­щее содержание:

nano /etc/munin/munin.conf

Добавь­те сле­ду­ю­щие строки.

[your_new_HOST]
address your_IP_clients_server
use_node_name yes

Сохра­ни­те и закрой­те. Пере­за­пу­сти­те служ­бу Munin. Подо­жди­те пару минут (при­мер­но 5 минут) или пере­за­гру­зить сер­вер Munin, что­бы Munin создал необ­хо­ди­мые фай­лы / пап­ки для вашей цели мониторинга.

 

 

Плагины в Munin.

По умол­ча­нию есть толь­ко несколь­ко пунк­тов для мони­то­рин­га (пла­ги­нов) и они будут отоб­ра­же­ны в интер­фей­се Munin. Но есть мно­го дру­гих полез­ных пла­ги­нов и мы можем доба­вить их если нам нужно.
Эти дета­ли мож­но най­ти в ката­ло­ге /usr/share/munin/plugins/.

Напри­мер, мы хотим доба­вить MySQL пла­гин. Что­бы сде­лать это, нуж­но создать сим­во­ли­че­скую ссыл­ку к пла­ги­нам, как пока­за­но ниже.
ln -s /usr/share/munin/plugins/mysql_* /etc/munin/plugins/
Пере­за­пу­сти­те служ­бу munin-node на вашем сервере.

service munin-node restart
Подо­жди­те 5 минут и вы уви­ди­те что эле­мен­ты MySQL будет добавлены.