Моніторинг для ледачих за допомогою munin на прикладі centos 5 - hudson @ work
потрібно моніторити стан основних параметрів одного або декількох серверів. Досить часто виникає завдання як мені здається.
Munin моніторить і створює графіки по ряду критичних параметрів і додатків на ваших серверах - як то Apache. MySQL. Postfix і багато інших.
Він швидко і просто налаштовується, швидко розширюється плагінчікамі (яких за замовчуванням теж не мало), які можна писати і самому на зручному для вас мові (bash. Perl. Php. Ruby ... - дивлячись що у вас є в розпорядженні). Дуже приємною особливістю munin є те, що він також швидко може бути налаштований на моніторинг більш ніж одного сервера і навіть може інтегруватися з Nagios.
Munin це звичайно ж не єдине вирішення проблеми моніторингу. Однак мені воно сподобалося простотою і швидкістю настройки, легкої розширюваністю - і я його застосовую прямо зараз)) Чого і вам бажаю.
Основні посилання на проект:
Актуально для CentOS 5. але може бути адаптоване і для інших Linux дистрибутивів при наявності кмітливості і прямих рученят.
У вас є якийсь хостнейм server1.example.com і вебсайт www.example.com на ньому з коренем document root в /var/www/www.example.com/web.
2. Додаємо репозиторій RPMforge
У CentOS 5 munin не доступний в дефолтних репозиторіях. На щастя ми можемо встановити його зі сховищ RPMforge. Для того щоб додати можливість роботи з RPMforge ми повинні виконати наступні команди:
для i386 систем:
rm -f rpmforge-release-0.3.6-1.el5.rf.i386.rpm
для x86_64 систем:
rm -f rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
3. Встановлюємо та конфігуруємо munin
для того щоб встановити munin досить виконати наступну команду:
yum install munin munin-node
Невеликий ліричний відступ: тут ми встановлюємо два пакети - munin і munin-node. Перший це власне сам munin який збирає дані по Нодаме і малює графіки. Другий - це провайдер даних з конкретного нода. Тобто munin-node відповідно до настройками плагінів збирає інформацію, і передає її munin за запитом з його боку. Для нода, який не є власне сервером статистики munin потрібно встановлювати тільки munin-node.
Потім нам потрібно створити startup посилання для munin-node і запустити його.
chkconfig -levels 235 munin-node on
/etc/init.d/munin-node start
Далі редагуємо конфігураційний файл munin /etc/munin/munin.conf. Потрібно вказати munin куди сладивать висновок (html + графіки). Оскільки нам цікаво моніторити по web - змінюємо значення параметра htmldir, і також ми хочемо використовувати ім'я server1.example.com замість localhost.localdomain в HTML файлах, таким чином ми замінюємо localhost.localdomain на server1.example.com. Файл в результаті буде виглядати так:
[...]
dbdir / var / lib / munin
htmldir /var/www/www.example.com/web/monitoring
logdir / var / log / munin
rundir / var / run / munin
# Where to look for the HTML templates
tmpldir / etc / munin / templates
[...]
# A simple host tree
[Server1.example.com]
address 127.0.0.1
use_node_name yes
[...]
Потім підготуємо директорію в docroot нашого сайту www.example.com: /var/www/www.example.com/web/monitoring і змінимо права доступу на користувача і групу munin, інакше munin не зможе записувати свої вихідні файли туди. Після рестартуем munin:
mkdir -p /var/www/www.example.com/web/monitoring
chown munin: munin /var/www/www.example.com/web/monitoring
/etc/init.d/munin-node restart
(Це лише невеликий приклад тих графіків, які створює munin)
4. Захищаємо наш моніторинг від сторонніх базової HTTP аутентифікації
Тепер непогано було б захистити паролем директорію /var/www/www.example.com/web/monitoring (якщо ви звичайно не хочете надавати публічний доступ до статистики).
Робиться це просто - створюємо .htaccess файл в /var/www/www.example.com/web/monitoring:
AuthType Basic
AuthName "Members Only"
AuthUserFile /var/www/www.example.com/.htpasswd
require valid-user
Тепер потрібно створити файл з паролями для доступу до дерикторії - /var/www/www.example.com/.htpasswd. Ми хочемо додати користувача admin:
htpasswd -c /var/www/www.example.com/.htpasswd admin
Вводимо пароль адміна - і вуаля! ))
5 Додаємо в моніторинг ще один сервер
Нехай у нас є ще один сервер server2.example.com і ми хочемо додати його в моніторинг.
Виконуємо крок 2 (RPMforge) так само як і для першого сервера. За крок 3 будуть деякі зміни:
Встановлюємо тільки munin-node:
yum install munin-node
Потім нам потрібно створити startup посилання для munin-node і запустити його.
chkconfig -levels 235 munin-node on
/etc/init.d/munin-node start
Це ще не все. Тепер нам треба сказати основного сервера munin що з'явився новий нод в моніторингу. Заходимо на server1.example.com, відкриваємо /etc/munin/munin.conf і додаємо нову секцію host:
[Server2.example.com]
local_address XX.XX.XX.XX
use_node_name yes
Далі треба на ноді server2.example.com дозволити доступ до збирачеві статистики з нашого головного сервера. Відкриваємо файл /etc/munin/munin-node.conf і шукаємо такі рядки:
Нижче треба дописати regexp з IP головного сервера моніторингу, щоб munin-node віддавав йому статистику.
де YY.YY.YY.YY IP нашого головного сервера.
Після цього потрібно перезапустити munin-node
І почекати поки головний сервер запросить статистику з цього нода. До речі подивитися і змінити при необхідності частоту запуску можна в файлі /etc/cron.d/munin. За замовчуванням там буде щось таке:
* / 5 * * * * munin test -x / usr / bin / munin-cron / Usr / bin / munin-cron
14 10 * * * munin test -x / usr / share / munin / munin-limits / Usr / share / munin / munin-limits -force -contact nagios -contact old-nagios
Основне серце Munin це перший рядок - яка власне і запускає опитування нодов і створення вихідних файлів. При бажанні цей процес можна запускати частіше або рідше.
Крім пасивного моніторингу, munin може також попереджати нас про досягнення деяких лімітів з того чи іншого ресурсу на сервері. Нотифікації налаштовуються на головному сервері моніторингу (в нашому випадку це server1.example.com).
Відкриємо /etc/munin/munin.conf і додамо туди наступні рядки:
# Групи контактів - поки один me
contacts me
# Команда на відправку нотифікації
contact.me.command | mail -s "Munin-notification for $. $ "[email protected]
# Завжди надсилати попереджувальні і критичні нотифікації
contact.me.always_send warning critical
У моєму випадку довелося замість mail нашаманіть досить сокирний скриптик-врапперов над qmail-inject:
#! / Bin / bash
echo "To: $ 1
From: [email protected]
Subject: $ 2
$ 3
-
example.com-monitoring with munin "| / Var / qmail / bin / qmail-inject
І команда відправки виглядає так:
Результат виконання буде такий:
Subject: Munin-notification for example.com. server2.example.com
[Example.com; server2.example.com] -> CPU usage -> warnings: user = 70.94 criticals:
-
example.com-monitoring with munin
Ось коротко все, що я хотів розповісти про цей чудовий інструмент для будь-якого LAMP проекту. Enjoy!