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

Похожие посты:

Комментарии

  1. admin:

    Возможно я что-то забыл :) , оставляем коментарии.

  2. Поставил в Debian из репозитория ndoutils 1.4b7-11 и ndoutils-nagios3-mysql 1.4b7-11. В логах появлялась строка:

    ndo2db: Error: mysql_query() failed for \’INSERT INTO nagios_configfilevariables SET instance_id=\’1\’, configfile_id=\’4\’, varname=\’cfg_dir\’, varvalue=\’/etc/nagios3/conf\\.d\’\’

    помогла следующая вещь:
    ALTER TABLE `nagios_configfilevariables` DROP INDEX `instance_id` , ADD INDEX `instance_id` ( `instance_id` , `configfile_id` )

    • admin:

      Если честно, в субооту, под влиянием собственной статьи пытался поставить Nagios3+NDOUtils+NagVis и понял как будет называтся следующая статья – «Почему Nagios должен ставится из исходников» тем более в Debian (Lenny). Мейнтейнер пакета просто садист, конфиги разбросаны по 4-5 папкам, хотя необходимости в этом нет :( .
      P.S.
      За коммент спасибо, думаю кому-то он пригодится :) .

    • admin:

      Хотя судя по комментам ты как и я unstable балуешься ;) .

  3. Nagvis – очень хороший инструмент. От себя могу порекомендовать использовать FAN (Fully Automated Nagios) http://fannagioscd.sourceforge.net/drupal/?q=node/7
    Это линукс-дистрибутив, в который включены и работают из коробки Nagios, Nagvis, Centreon, RRD, Nareto, что позволяет сразу же видеть схемы сервисов, графики по сервисам, отчеты, типа сколько сервис лежал и т.п. Ставится и настраивается за полчаса.

    • admin:

      Сказал бы «спасибо КЭП», но будет грубо :) . В прошлой статья я писал что NagVis в FAN работает из коробки. ;)

  4. groundhog:

    может вопрос не в тему, но все же^^
    Nagios умеет, без особого ковыряния конфига, сам изучать сеть, как например NeDi (www.nedi.ch)?

    *дисклеймер*
    не сочтите за рекламу^^ буду рад услышать совет бородатых :)

    • admin:

      За рекламу не сочту, да и не бородатый я ;) .
      Nedi я как-то смотрел, но так и не смог настроить чтобы он сам все искал :( . Если дадите URL на толковый док по установке и конфигурированию буду ОЧЕНЬ благодарен.

    • admin:

      «Из коробки» это не возможно, но судя по описанию Nedi можно попробовать сколотить мутанта Nedi+Nagios :D

  5. enelen:

    Вот статья по nedi.С цисками работает на ура.Если поковырять .def файлы то можно работать и с другим оборудованием.
    http://itroute.ru/story.php?title=Obzor-i-nastrojka-sistemy-upravleniya-setyu-Nedi

  6. enelen:

    На счет мутанта nagios и nedi.Если в конфиге nedi расскоментировать строку
    #module Other Nagios cinf oth
    Можно будет генерировать конфиги хостов для Nagios из Nedi.

  7. groundhog:

    в действительности, мощная тулза получилась – стоило лишь глаза разуть:)
    теперь начальник не изнасилует:)

  8. Konstantin:

    Ещё http://www.netxms.org/ стоит посмотреть.

  9. Alex:

    Под винду есть вышеупомянутый OpenNMS и Hyperic – http://www.hyperic.com/. А вообще вот интересная ссылка http://en.wikipedia.org/wiki/Comparison_of_network_monitoring_systems. Все что написано на Java можно поставить на винду.

  10. Привет, статья хорошая ,но что то с отображением шаблона твоего блога.
    В Опере проверь свой шаблон!

  11. Rudolasd:

    Установил ndoutils, создал базу в mysql, инициализировал её, проапгрейдил, проверил таблицы – есть, настроил конфиги аналогично пункту 1.1. Запустил ndoutils, рестартанул нагиос, но вот в логах нагиоса у меня оказалось следующее:

    [1266284798] ndomod: NDOMOD 1.4b9 (10-27-2009) Copyright (c) 2009 Nagios Core Development Team and Community Contributors
    [1266284798] ndomod: Could not open data sink! I’ll keep trying, but some output may get lost…
    [1266284798] Event broker module ‘/usr/local/nagios/bin/ndomod.o’ initialized successfully.

    Очень долго шерстил Гугль, но решения проблемы везде было одно – перепроверить файлы конфигов. Проверял неоднократно, а вот в чем грабли так и не разобрался.

    P.S. Система Open SUSE 11.1

    • Rudolfasd:

      С предыдущей проблемой разобрался, однако на ее место встала другая…

      [1266295136] Nagios 3.1.2 starting… (PID=19593)
      [1266295136] Local time is Tue Feb 16 13:38:56 YAKT 2010
      [1266295136] LOG VERSION: 2.0
      [1266295136] ndomod: NDOMOD 1.4b9 (10-27-2009) Copyright (c) 2009 Nagios Core Development Team and Community Contributors
      [1266295136] ndomod: Successfully connected to data sink. 0 queued items to flush.
      [1266295136] Event broker module ‘/usr/local/nagios/bin/ndomod.o’ initialized successfully.
      [1266295136] Finished daemonizing… (New PID=19595)
      [1266295136] ndomod: Error writing to data sink! Some output may get lost…
      [1266295136] ndomod: Please check remote ndo2db log, database connection or SSL Parameters
      [1266295152] ndomod: Successfully reconnected to data sink! 0 items lost, 216 queued items to flush.
      [1266295152] ndomod: Successfully flushed 216 queued items to data sink.
      [1266295152] ndomod: Error writing to data sink! Some output may get lost…
      [1266295152] ndomod: Please check remote ndo2db log, database connection or SSL Parameters
      [1266295168] ndomod: Successfully reconnected to data sink! 0 items lost, 80 queued items to flush.
      [1266295168] ndomod: Successfully flushed 80 queued items to data sink.
      [1266295168] ndomod: Error writing to data sink! Some output may get lost…
      [1266295168] ndomod: Please check remote ndo2db log, database connection or SSL Parameters

  12. admin:

    1. А что в это время пишется в логе /usr/local/nagios/var/ndo2db.debug ?
    2. В конфиге ndomod (/usr/local/etc/nagios/ndomod.cfg) найди строку


    output=/usr/local/nagios/var/ndo.sock

    Проверь наличие этого файла

    3. В файле настроект NDO2DB (/usr/local/etc/nagios/ndo2db.cfg) найди строку

    socket_name=/usr/local/nagios/var/ndo.sock

    Имена файлов должны совпадать

    Если не помогло опиши как фиксил прошлую проблему

  13. Rudolfasd:

    1. Самое что интересно, ndo2db.debug – пуст
    2. Про совпадение имен и адресов файлов в output и socket_name я был вкурсе, а также пробовал их менять на другие (одновременно в обоих конфигах естественно) типа /var/tmp/ndo.sock , но не помогло…

    А с прошлой ошибкой оказалось все просто: при настройке я копипастил в nagios.cfg строки из браузера как есть

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

    все заработало когда я удалил

    • Rudolfasd:

      Упс

      А с прошлой ошибкой оказалось все просто: при настройке я копипастил в nagios.cfg строки из браузера как есть

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

      все заработало когда я удалил <strong и </strong

  14. Анонимно:

    asd:/usr/local/nagios/etc # grep -v «^$» ndo2db.cfg | grep -v «#»
    lock_file=/usr/local/nagios/var/ndo2db.lock
    ndo2db_user=nagios
    ndo2db_group=nagios
    socket_type=unix
    socket_name=/var/tmp/ndo.sock
    tcp_port=5668
    use_ssl=0
    db_servertype=mysql
    db_host=localhost
    db_port=3306
    db_name=nagios
    db_prefix=nagios_
    db_user=nagios
    db_pass=nag
    max_timedevents_age=1440
    max_systemcommands_age=10080
    max_servicechecks_age=10080
    max_hostchecks_age=10080
    max_eventhandlers_age=44640
    max_externalcommands_age=44640
    debug_level=-1
    debug_verbosity=2
    debug_file=/usr/local/nagios/var/ndo2db.debug
    max_debug_file_size=1000000
    asd:/usr/local/nagios/etc # grep -v «^$» ndomod.cfg | grep -v «#»
    instance_name=default
    output_type=unixsocket
    output=/var/tmp/ndo.sock
    tcp_port=5668
    use_ssl=0
    output_buffer_items=5000
    buffer_file=/usr/local/nagios/var/ndomod.tmp
    file_rotation_interval=14400
    file_rotation_timeout=60
    reconnect_interval=15
    reconnect_warning_interval=15
    data_processing_options=-1
    config_output_options=2
    asd:/usr/local/nagios/etc #

    • Rudolfasd:

      это мои конфиги, у меня в mysql сурперюзер nagios (pass: nag), база тоже зовется nagios

    • admin:

      В файле
      /usr/local/nagios/var/ndomod.tmp

      есть что нибудь?

      • Rudolfasd:

        Файл ndo2db.debug при запуске ndo2db создается, но не заполняется. Файл /usr/var/nagios/var/ndomod.tmp при запуске даже не создается, пробовал создавать вручную, назначив всевозможные права доступа, но и в таком случае он не заполняется.

        • stalker_by:

          Судя по всему у тебя были проблемы с соединением с базой данных, проверь с помощью

          mysql -u nagios -p

          и введя пароль

          Только что решил такую же проблему с теми же симптомами.

          • Rudolfasd:

            С соединением вроде проблем нет.
            Набрал mysql -u nagios -p nagios, ввел пароль и получил «mysql>».
            Ввел show tables; и получил список всех таблиц базы, которые пусты.

          • admin:

            Подожди, в конфиге ndo2db у тебя пароль не «nagios»:

            db_user=nagios
            db_pass=nag

  15. Rudolfasd:

    Конечно не nagios, пароль – nag, то что указано у меня после «-p» – это имя базы, пароль я ввожу отдельно (после приглашения «Password:»). Если я не ошибаюсь, то пароль указывается слитно с «-p». Если не написать имя базы, то входишь в командную строку «mysql>» ,без попадания в конкретную базу. Я просто хотел посмотреть содержимое базы nagios, а какой командой в mysql выбрать конкретную базу не помню, потому и воспользовался командой таким образом.
    P.S. конечно выполнить вход в mysql посредством «mysql -u nagios -p» и посредством «mysql -u nagios -pnag»я пробовал – получается.

    • Rudolfasd:

      asd:/etc # mysql -u nagios -p
      Enter password:
      Welcome to the MySQL monitor. Commands end with ; or \g.
      Your MySQL connection id is 2085
      Server version: 5.0.67 SUSE MySQL RPM

      Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

      mysql> \q
      Bye
      asd:/etc # mysql -u nagios -pnag
      Welcome to the MySQL monitor. Commands end with ; or \g.
      Your MySQL connection id is 2086
      Server version: 5.0.67 SUSE MySQL RPM

      Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

      mysql> \q
      Bye
      asd:/etc #

  16. Rudolfasd:

    Блин, это только у меня с кодировкой проблемы? Пять последних сообщений «крокозябриками» отображаются.

  17. хоббит или туда и обратно фильм…

    фильм почтальон всегда звонит дважды…

  18. Alex:

    FreeBSD 7.3 ndodb2-3x запускается
    [14:25] /home/alex >ps -A | grep nagios
    87682 ?? Is 0:00,00 /usr/local/nagios/bin/ndo2db-3x -c /usr/local/etc/nagios/ndo2db.cfg
    87792 ?? Ss 0:00,09 /usr/local/bin/nagios -d /usr/local/etc/nagios/nagios.cfg

    но в логи вообще ничего не пишет в базу тоже не попадает ничего . Не знаю уже что делать . Версия nagios Nagios Core 3.2.1

  19. kpekep:

    А кто сталкивался с тем, что когда в нагиосе хостов становится более 500, нагиос начинает долго загружатся. Например, добавил я новый хост, привязал к нему сервис и т.д., после чего я делаю релоад или рестарт, и некоторое время около 5 минут нагиос начинает читать свои конфиги и писать найденные изменения в БД. Т.е. 5 минут у меня как бы не работает нагиос и нагвис пишет, что нагиос не запущен. Если же ndoutils остановить, то нагиос в течение нескольких секунд заводится. Никто не знает как это дело можно ускорить с ndoutils? Буду очень благодарен за ответ

    • admin:

      Я не сталкивался с такой проблемой, но могу только посоветовать останавливать ndo2db перед рестартом.

      NDO2DB гадко сделанная вещь, и из своего опыта могу предположить что это не последний костыль с которым вы столкнетесь…

  20. [1283518804] Caught SIGTERM, shutting down…
    [1283518804] Successfully shutdown… (PID=15954)
    [1283518804] ndomod: Shutdown complete.
    [1283518804] Event broker module ‘/usr/local/nagios/bin/ndomod.o’ deinitialized successfully.
    [1283518804] Nagios 3.2.1 starting… (PID=16015)
    [1283518804] Local time is Fri Sep 03 17:00:04 MSD 2010
    [1283518804] LOG VERSION: 2.0
    [1283518804] ndomod: NDOMOD 1.4b9 (10-27-2009) Copyright (c) 2009 Nagios Core Development Team and Community Contributors

    [1283518804] ndomod: Could not open data sink! I’ll keep trying, but some output may get lost… #!!!!!!!

    [1283518804] Event broker module ‘/usr/local/nagios/bin/ndomod.o’ initialized successfully.
    [1283518804] Finished daemonizing… (New PID=16017)
    [1283519716] ndomod: Still unable to connect to data sink. 0 items lost, 4956 queued items to flush.

    Не могу понять в чем запара =( Гуру, подскажите как настроить, у меня убунту+нагиос 3.2.1 + ндо 1.4Б9.

    • admin:

      А ndo2db у тебя запущен?

      [1283518804] ndomod: Could not open data sink! I’ll keep trying, but some output may get lost… #!!!!!!!

      эта строчка говорит о том что модуль в Nagios`е не может соединиться с NDO2DB
      Почитай внимательно пункты 1.1 и 1.2

Оставить комментарий