Моніторинг для ледачих за допомогою 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!