Translate

четвер, 19 червня 2014 р.

Nagiosgraph. Add graphics to Nagios

Як на мене Nagios мало не ідеальна система моніторингу, проте вона лише фіксує зміну стану перевірок, а інформація щодо того як швидко система перейшла в цей стан - відсутня. Тому зовсім не буде зайвим додати можливість малювати графіки параметрів системи, що моніторяться. Для цього я обрав Nagiosgraph, він інтегрується в діючу інсталяцію Nagios і надалі може показувати графіки через спливаючі вікна чи окремо в меню через iframe. Моживо кращою альтернативою може слугувати PNP4Nagios, розробка якого ведеться активніше. 

Раніше я писав про установку Nagios із Nginx у якості веб серверу, проте Nagiosgraph потребує Apache і має конфігураційні файли саме для нього. Тому без нього майже ніяк:

# apt-get install libgd2-xpm-dev apache2 php5 apache2-utils
# a2enmod cgi

У якості стартової інструкції можна використати цю статтю (звісно без установки Nginx), проте слід довстановити також конфігураційні файли для Apache під час компіляції завантажених сирців Nagios:

# cd /dir/with/nagios/sources
# make install-webconf

Остання команда покаже помилку, у разі якщо її буде запущено у чомусь на зразок Debian, тому робимо все вручну:

# /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/conf-available/nagios.conf
# ln -s /etc/apache2/conf-available/nagios.conf /etc/apache2/conf-enabled/nagios.conf

Редагуємо за бажанням віртуальний хост /etc/apache2/conf-enabled/nagios.conf і, перейшовши за адресою http://my_nagios/nagios , ми побачимо результати свої старань. До цього моменту складнощі не повинні виникнути.

Як варіант можна установити все готове із репозиторіїв, проте не останньої версії.

Переходимо до установки Nagiosgraph, для чого установимо пакети:

# apt-get install libcgi-pm-perl librrds-perl libgd-gd2-perl

Можна скористатись як deb-пакетом, так і скриптом автоустановки. Приведу приклад користування останнім. Скачуємо Nagiosgraph, розпаковуємо, та переходимо в розпаковану директорію:

# wget http://sourceforge.net/projects/nagiosgraph/files/nagiosgraph/1.5.1/nagiosgraph-1.5.1.tar.gz/download -O nagiosgraph-1.5.1.tar.gz
# tar xvfz nagiosgraph-1.5.1.tar.gz
# cd nagiosgraph-1.5.1

Перевіряємо чи є всі необхідні залежності:

# ./install.pl --check-prereq

І коли все добре - переходимо до установки:

# ./install.pl --layout debian

На всі подальші питання необхідно буде уважно відповісти. Шляхи до моїх конфігураційних файлів можуть дещо відрізнятись, проте суть особливо не змінюється.

Після установки варто перевантажити сервіси:

# service apache2 restart
# service nagios restart

Трішки відредагуємо конфігураційні файли Nagiosgraph:

# vim /usr/share/nagios3/htdocs/ssi/common-header.ssi
<script type="text/javascript" src="/nagiosgraph/nagiosgraph.js"></script>

Для того, щоб надалі зручно підключати графіки до перевірок варто описати сервіс:

# vim /etc/nagios3/conf.d/services/services_other.cfg
...
define service {
        name graphed-service
        action_url                      /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$' onMouseOver='showGraphPopup(this)' onMouseOut='hideGraphPopup()' rel='/nagiosgraph/cgi-bin/showgraph.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&period=week&geom=650x230
        register 0
}
...

geom=650x230 - розмір майбутнього pop-up-а.
period=week - в спливаючому вікні буде відображено графік за тиждень.

Де саме буде описано цей сервіс не особливо важливо, головне щоб він підгружався моніторинговою системою.

Надалі підключаємо кнопку відображення графіку для необхідних перевірок (параметр graphed-service, що ми описали абзацем вище):

# vim /etc/nagios3/conf.d/hosts/nagios.my.com.cfg
...
define service{
        use                             generic-service,graphed-service
        host_name                       nagios.my.com
        service_description             Memory Status
        check_command                   check_mem!80!90
        }
...

І ось як це виглядатиме:

Також можна натиснути на значок графіку і переглянути графіки за день / тиждень / місяць / рік:


В меню вище можна обрати необхідні розміри графіків та дані, котрі необхідно відобразити.

Всі графіки у моємо випадку зберігаються у директорії /var/spool/nagiosgraph/rrd/. Тому при видаленні перевірок, варто також видаляти і файли графіків.

Перевірка оперативної пам'яті генерує, наприклад, такий вивід:

# ./check_mem -w 80 -c 90
Memory: OK Total: 12039 MB - Used: 4301 MB - 35% used|TOTAL=12623962112;;;; USED=4508446720;;;; CACHE=4903997440;;;; BUFFER=408313856;;;;

Тому щоб на графіку підписи були виконані акуратніше необхідно їх описати в labels.conf:

# vim /etc/nagiosgraph/labels.conf
...
#Memory Status
TOTAL,data=Total
BUFFER,data=Buffer
CACHE,data=Cache
USED,data=Used
...

Є можливість також відфільтрувати графіки, що будуть показані на графіку. Це можна зробити в datasetdb.conf:

# vim /etc/nagiosgraph/datasetdb.conf
...
service=Memory Status&db=TOTAL,data&db=BUFFER,data&db=USED,data
...

І графік використання кешів (CACHE,data) буде упущено.

Для зручності також можна інтегрувати Nagiosgraph в ліве бокове меню моніторингової системи, для чого необхідно дещо змінити конфігураційний файл side.php:

# vim /usr/share/nagios3/htdocs/side.php
...
<div class="navsection">
<div class="navsectiontitle">Nagiosgraph</div>
<div class="navsectionlinks">
<ul class="navsectionlinks">
<li><a href="/nagiosgraph/cgi-bin/show.cgi" target="main">Graphs</a></li>
<li><a href="/nagiosgraph/cgi-bin/showhost.cgi" target="main">Graphs by Host</a></li>
<li><a href="/nagiosgraph/cgi-bin/showservice.cgi" target="main">Graphs by Service</a></li>
</ul>
</div>
</div>
...

Ось про що я веду мову:


Одразу ж в index.php можна поправити сторінку, котра буде відкриватись при відкритті моніторингової системи:

# vim /usr/share/nagios3/htdocs/index.php
...
$corewindow="/cgi-bin/nagios3/tac.cgi";
...

І як результат стартовою сторінкою тепер буде "Tactical Monitoring Overview".

Посилання:

2 коментарі:

  1. Для графиков считаю лучше cacti подходит - более гибкая система.

    ВідповістиВидалити
    Відповіді
    1. Та не сказав би. Все одному в як на мене зручніше.

      Видалити