Posts tagged ‘nagvis’

NagVis: Установка и первоначальная настройка

В прошлой статье я расказывал о такой отличном расширении для Nagios как NagVis, сегодня я опишу как его ставить.
Предпологается что вы имеете:

  • Linux или FreeBSD (у меня был FreeBSD) поэтому будут некоторые оговорки
  • Nagios 2 или 3
  • Apache
  • MySQL
  • PHP5
  • php5-gd
  • php5-gettext
  • php5-mysql
  • php5-mbstring
  • php5-session
  • php5-xml

Оговорки

Т.к. под рукой у меня был сервер с FreeBSD некоторые пакеты я ставил прямиком из портов, а именно:

  • PHP5 и его модули
  • MySQL
  • Nagios 2
  • Apache2

Ниже я не буду рассказывать как я это все ставил, в том числе Nagios, я искренне надеюсь что вы сумеете воспользоватся Google и найти ответы на эти вопросы, а также что вы не настолько крутой хацкер что вас забанили в Google.

0. Документация

Прошлая статья цикла: NagVis: управление сложностью в Nagios
Официальная документация по NagVis: http://www.nagvis.org/documentation
Cтраница NDOUtils: http://www.nagios.org/download/addons/
Официальная документация по NDOUtils: http://support.nagios.com/knowledgebase/officialdocs

1. Установка NDO2Utils


NDO2Utils это модуль для Nagios который сохраняет текущее состояние всего что мы мониторим в базу данных (в нашем случае это будет MySQL), а оттуда ее уже могут брать сторониие приложения. В скором будующем я надеюсь закончить перевод документации по NDO2Utils, она может немного прояснить ситуацию.

Итак, не вдаваясь в подробности, скачиваем тарбол с исходниками NDO2Utils отсюда
http://www.nagios.org/download/addons/
или

wget http://prdownloads.sourceforge.net/sourceforge/nagios/ndoutils-1.4b9.tar.gz

и распаковываем.

Во FreeBSD мне почему-то пришлось поправить сорсы (нужно всетаки качать стабильные врсии программ :D ), в файле include/config.h заменяем

#define HAVE_MYSQL 1
#include <mysql/mysql.h>
#include <mysql/errmsg.h>

на

#define HAVE_MYSQL 1
#include <mysql.h>
#include <errmsg.h>

Конфигурируем, собираем, ставим.

./configure && make && make install

Теперь нужно создать базу данных для NDO2Util и инициализировать ее. Предпологается что пользователь «root» у вас без пароля (сам знаю :( ).

# Заходим в папку "db"
cd db/
# Создаем базу данных ndo
mysql -e create database ndo;
# Инициализируем ее
./installdb -u root -p '' -h localhost -d ndo

Если Все прошло без ошибок, значит вы бородаты, если нет, задавайте вопросы будем разбиратся ;) .

1.1 Настройка NDO2Utils


Для FreeBSD:

cp ndomod.cfg-sample /usr/local/etc/nagios/ndomod.cfg
cp ndo2db.cfg-sample /usr/local/etc/nagios/ndo2db.cfg
mkdir /usr/local/nagios/var/

Для * Linux (если вы ставились не из исходников, то файлы копируются в /etc/nagios/):

cp ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg
cp ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg

Открываем файл /usr/local/etc/nagios/ndo2db.cfg, находим и меняем

db_name=nagios
...
db_user=ndouser
db_pass=ndopassword

на

db_name=ndo
...
db_user=root
db_pass=

Запустить сервис NDO2DB можно выполнив следующую команду

/usr/local/nagios/bin/ndo2db -c /usr/local/etc/nagios/ndo2db.cfg

«Остановить» сервис можно выполнив

killall ndo2utils

Его по хорошему нужно добавить в автозагрузку, можно в rc.conf можно при загрузке Nagios, а можно наварганить собственный скрипт для init – дерзайте ;) .

Ну и последний пункт настройки NDO2Utils, добавление его в Nagios. Находим свой файл nafios.cfg (/usr/local/nagios/etc/, /etc/nagios/, /usr/local/etc/nagios/) и добавляем в него следующие строки:

broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/etc/nagios/ndomod.cfg
event_broker_options=-1

Оговорка

Возможно у вас как и у меня установлен Nagios 2й версии, NDO2Utils по умолчанию предпологает что у вас Nagios v3. Чтобы поставить правильную версию выполните «make install-2x», если и это не поможет (как было у меня), скопируйте нужный файл руками (предварительно выполнив «make install»):

cp src/ndomod-2x.o /usr/local/nagios/bin/ndomod.o

это связано с тем что для Nagios v2 и v3 нужены разные модули-брокеры.

1.2 Проверка работы NDO2Utils

Ну вот мы уже почти и закончили, осталось только проверить что NDO2Utils работает так как нужно.

1) Перезапустите сервис Nagios`а и откройте его лог (/var/spool/nagios/nagios.log для FreeBSD, /var/log/nagios/nagios.log для CentOS-like, /usr/local/nagios/var/nagios.log если вы ставились из чистых сорсов). Найдите там строки вроде таких:

[1257520535] ndomod: NDOMOD 1.4b9 (10-27-2009) Copyright (c) 2009 Nagios Core Development Team and Community Contributors
[1257520535] ndomod: Successfully connected to data sink.  0 queued items to flush.
[1257520535] Event broker module '/usr/local/nagios/bin/ndomod.o' initialized successfully.

Если нет, вы должны увидеть ошибку, если ее созерцание вам ничем не помогло, переходим к пункту 2

2) В файле ndo2db.cfg выставляем следующие параметры:

...
debug_verbosity=2
...
debug_level=-1
...

Эти опции выставляют уровень логирования на максимум (непонятно почему, но по другому брокер NDO никак не показываетсоей работы). Подсматриваем что у нас в опции конфига debug_file, у меня «/usr/local/nagios/var/ndo2db.debug», выполняем

tail -f /usr/local/nagios/var/ndo2db.debug

Если все было сделано правильно, вы увидите кучи бегущих SQL-запросов, если нет ищем ошибки или пишем в комментарии ;) . После того как все проверено опции логирования в ndo2db.cfg лучше вернуть на место…

2. Установка и настройка NagVis


Для начала нужно скачать последнюю версию NagVis отсюда: http://nagvis.org/downloads.
Далее разархивируем тарбол и копируем его содержимое в папку в которой лежит веб интерфейс для Nagios (во FreeBSD это «/usr/local/www/nagios/nagvis/»).

Заходим в папку NagVis`а и создает для него конфиг из уже готового:

cp etc/nagvis.ini.php-sample etc/nagvis.ini.php
vim etc/nagvis.ini.php

Далее меняем:

[backend_ndomy_1]
; type of backend - MUST be set
backendtype="ndomy"
; hostname for NDO-db
dbhost="localhost"
; portname for NDO-db
dbport=3306
; database name for NDO-db
dbname="ndo"
; username for NDO-db
dbuser="root"
; password for NDO-db
dbpass=""
; prefix for tables in NDO-db
dbprefix="nagios_"
; instance name for tables in NDO-db
dbinstancename="default"
; maximum delay of the NDO Database in seconds
maxtimewithoutupdate=180
; path to the cgi-bin of this backend
htmlcgi="/nagios/cgi-bin"
...
allowedforconfig="admin"

Опция «allowedforconfig» должна содержать имена пользователей которым разрешено редактировать карты в NagVis (они задаются в файле .htacess для Nagios`а). Разрешаем доступ для Apache к NagVis:

chmod -R www:www /usr/loca/www/nagios/nagvis

Для особых «ценителей» и «гурманов» статья о том как правильно выставить права на файлы: http://docs.nagvis.org/1.4/en_US/installer.html («STEP 5: Permissions»).

Открываем в браузере URL http:///nagios/nagvis/, получаем что-то вроде этого:
NagVis 1.4.4 - Mozilla Firefox

Заключение

В следующей статье попытаюсь рассказать о том как создавать собственные карты и что собственно с ними нужно делать. Ну а для затравки особых читателей, то что у меня есть сейчас:

NagVis-Network-map

NagVis: управление сложностью в Nagios

Стив Макконел в своей фундаментальной книге «Совершенный код» как одну из основных парадигм программирования называет «управление сложностью». Проще говоря – простые вещи должны быть простыми, сложные должны «выглядеть» как простые. Именно к этой цели в идеале должен стремится каждый уважающий себя системный администратор ;) .

Nagios, для большинства пользователей и некоторой части админов, вещь достаточно сложная и не понятная, плюс добавим абсолютно не удачный стандартный web-интерфейс и мы получим отличный продукт которым, к сожалению, сложно пользоватся. Действительно, простому смертному долгая медитация над разноцветными строчками оформленными в унылую таблицу ни о чем не скажет. А вот если рядом с изображением винчестера будет гореть красный крестик, пользователя становится интуитивно понятно, что с диском что-то не так. Админу не нужно напрягаться чтобы вспомнить «а что это?» и пользователь несказанно рад что он кое-что понимает. Для этого собственно и служит такой отличный модуль для Nagios как NagVis.

Это пример того что я называю «настоящей модульностью программы», если вам нужен NagVis вы берете и доставляете его, если вам NagVis не нужен вы о нем и не узнаете до тех пор пока он не понадобится (это я про Zabbix :) ).

Логотип NagVis

0. Документация


Cайт NagVis: http://www.nagvis.org/
Официальная документация по NagVis: http://www.nagvis.org/documentation
Cтраница NDOUtils: http://www.nagios.org/download/addons/
Официальная документация по NDOUtils: http://support.nagios.com/knowledgebase/officialdocs

UPD. Вторая статья – NagVis: Установка и первоначальная настройка

1. Что это? Кому это нужно?


Для начала ответим на первый вопрос обратившись к странице «About» сайта NagVis:
«…
Ключевые возможности:

  • Отображает отдельные хосты и сервисы
  • Инкапсюляция таких компонентов как хост или группа хостов в одной иконке (значке)
  • Отображение суммарной информации о хосте и всех его сервисах в одной иконке
  • Отображает только существующие проблемы
  • Возможность использования под-карт (суб-карт), т.е. в качестве статуса (значка) на карте показывается общий статус другой карты
  • Полная визуализация IT процессов
  • Онлайн документация по IT окружению, включающая в себя текущее состояние
  • Конфигурирование с помощтю Web-интерфейса (WUI)

Лицензия

Целая куча английских букв, но суть сводится к тому что это просто GPL.

…». (Извиняюсь за корявость языка, не смог перевести лучше)

Понадобится NagVis может для многих целей, к примеру вы хотите дать пользователям возможность самосоятельно отслеживать состояние нужных им служб или создать «живую» карту сети. Очень интересным применением для NagVis я считаю создание информационных терминалов, вроде такого:

Информационный терминал с помощью NagVis.

2. Как это работает?


NagVis в своей работе целиком и полностью опирается на модуль Nagios`а NDOUtils, этот модуль позволяет записывать все состояния сервисов/хостов и многое другое в базу данных, оттуда уже NagVis берет нужные нам данные. Затем на основании созданной заранее карты и Ajax нам выдается текущее состояние сети в красивом виде.
Под картой в NagVis подразумевается фоновая картинка, на которой установлены иконки статуса хостов/сервисов. Кто то понимает слово «карта» буквально и делает что-то вроде этого:
Карта в NagVis

А кто-то не заморачивается и фотографирует серверную стойку или комнату с оборудованием и добавляет иконки статусов, я бы назвал это «живой» картой:
Как бы карта, а как бы и нет :)

Согласитесь достаточно наглядно, и если что-то сломалось не возникает вопроса «А где это находится?». Т.е. на лицо упрощение «интерфейса» с мониторинговой системой, повышение наглядность, и так сказать самодокументированность сети. Побольше скриншотов можно найти на официальном сайте (все картинки выше взяты оттуда).

3. «Дайте два…» из к/ф «12 стульев»


Как видите NagVis во всей красе показывает преимущества модульной архитектуры Nagios. Это мощьный и функционален модуль, который позволяет помимо явной своей полезности добится некоторых «побочных» эффектов. Если вы ленивы настолько что используете дистрибутив «Fully Automated Nagios» или FAN (маленький обзор) то NagVis у вас уже скорее всего стоит и даже работает, вы можете перейти по ссылке http://<nagios_FAN_server>/nagios/nagvis/.

Если же вы не используете FAN то могу посоветовать только дождатся следующей статьи в этой серии ;) .