Network Documentation Tool — система для ведения документации сети

Уважаемое хабрасообщество, позвольте представить вашему вниманию на мой взгляд очень полезный инструмент — Netdot (Network Documentation Tool). Поиск по Хабру не выдал ни одного упоминания этого интересного инструмента. Русскоязычные информационные ресурсы тоже обошли его стороной. Я надеюсь, что мой небольшой обзор станет полезным сетевым администраторам.


Почему мы выбрали Netdot

Вкратце опишу как я стал использовать этот инструмент. Передо мной и моими коллегами стояла довольно простая задача — выбрать инструмент для управления ip-адресами. Из таблицы на википедии мы отобрали несколько инструментов и попытались их сравнить. Ключевыми параметрами для отбора были: активное развитие, открытость, кроссплатформенность, наличие инструментов управления DNS-записями, графическое представление адресного пространства.
Каждая из опробованных систем обладает своими преимуществами и недостатками. Из всего опробованного мы остановились на Netdot. Он активно развивается, имеет богатый функционал, система открытая, написана на Perl (я программирую на Perl и мне проще настраивать что-либо под свои нужды), имеет довольно приятный и неперегруженный интерфейс.
Конечно, есть и некоторые недостатки, но для нас они не актуальны: пока что поддерживается только DNS сервер BIND (мы используем именно его, к тому же, никто не мешает написать свой скрипт синхронизации), графики топологии получаются довольно запутанными (я уверен, что со временем этот недочет устранят), не умеет строить L3-топологию, негибкая система управления правами.
Таким образом, в процессе поиска одного небольшого инструмента мы открыли для себя более масштабный и функциональный инструмент. Ведь это очень удобно — иметь всю информацию об инфраструктуре сети в одном месте, а также возможность управлять ею, создавать логические связи, управлять правами.
Мы также пробовали использовать систему NOC (Обзорная статья на Habrahabr). Ее функционал намного богаче, но нам она показалась менее удобной. Быть может, пройдет время и мы пересмотрим свои взгляды.

Возможности

Итак, Netdot — как видно из названия (Network Documentation Tool), данное программное обеспечение помогает вести документацию, а именно:
  • находить и опрашивать устройства с помощью SNMP;
  • строить и отображать L2 топологию используя различные источники: CDP, LLDP, STP, таблицы коммутации;
  • вести учет оборудования (Asset Management);
  • вести учет адресного пространства (IPAM);
  • управлять DNS-записями;
  • управлять DHCP;
  • вести учет кабельной инфраструктуры: комнаты, стойки, розетки, соединения внутри и между зданиями и прочее;
  • учет контактов (администраторы, операторы, подразделения, продавцы, поставщики и т.д.)
  • экспортировать настройки для внешних систем: Nagios, RANCID, Cacti, BIND, DHCPD и прочее.

Структура

Опишу немного общую структуру. Netdot состоит из следующих компонентов:
  1. База данных — в настоящий момент поддерживается MySQL и PostgreSQL. В идеале, возможно использовать любую базу, которая поддерживается Perl DBI.
  2. Библиотеки — код представляет собой иерархическую структуру объектно-ориентированных классов Perl.
  3. Пользовательский интерфейс — основан на фреймворке HTML::Mason.
  4. Скрипты командной строки — различные скрипты (импорт, экспорт, обновление конфигурации и пр.). Можно запускать их с некой периодичностью с помощью CRON.

Основные элементы в Netdot – это «устройства» (коммутаторы, маршрутизаторы, точки доступа, серверы). Следует отметить, что ПК, ноутбуки, мобильные телефоны и пр. не рассматриваются как «устройства». Они заносятся в базу из ARP-таблиц и таблиц коммутации устройств, и затем их можно отслеживать по IP или MAC адресам, а также видеть какому порту коммутатора они были в прошлом подключены.

Установка

Опишу вкратце процесс установки. В качестве операционной системы я использовал CentOS 6.4.
• Загружаем последнюю версию с сайта разработчиков:
~# wget netdot.uoregon.edu/pub/dists/netdot-1.0.4.tar.gz
• Или получаем последнюю версию из GitHub:
~# git clone git://github.com/cvicente/Netdot
• Распаковываем архив:
~# tar -zxC /usr/local/src -f netdot-1.0.4.tar.gz
• Устанавливаем зависимости:
~# cd /usr/local/src/netdot-1.0.4/
~# make rpm-install
Примечание 1. У меня активирован репозиторий RPMForge и при установке у меня появилась ошибка:
Transaction Check Error:
file /usr/share/man/man3/XML::SAX::Base.3pm.gz conflicts between attempted installs of perl-XML-SAX-0.96-7.el6.noarch and perl-XML-SAX-Base-1.04-1.el6.rf.noarch
file /usr/share/man/man3/XML::SAX::Exception.3pm.gz conflicts between attempted installs of perl-XML-SAX-0.96-7.el6.noarch and perl-XML-SAX-Base-1.04-1.el6.rf.noarch
Для ее исправления необходимо добавить в файл /etc/yum.repos.d/rpmforge.repo строчку:
exclude=perl-XML-SAX-Base

Примечание 2. Если у вас дистрибутив, основанный на Debian, то Netdisco MIBs должны устанавливаться автоматически. В моем случае их необходимо установить вручную:
~# yum install net-snmp net-snmp-utils
~# wget kent.dl.sourceforge.net/project/netdisco/netdisco-mibs/latest-snapshot/netdisco-mibs-snapshot.tar.gz
~# tar -zxC /usr/local/src -f netdisco-mibs-snapshot.tar.gz
~# mkdir /usr/local/netdisco
~# mv /usr/local/src/netdisco-mibs /usr/local/netdisco/mibs
~# cp /usr/local/netdisco/mibs/snmp.conf /etc/snmp/

• Устанавливаем недостающие Perl модули:
~# make installdeps
• Копируем файл конфигурации:
~# cp etc/Default.conf etc/Site.conf
• Редактируем настройки:
Параметры подключения к базе данных
DB_TYPE => 'mysql'
DB_DBA => 'root',
DB_DBA_PASSWORD => 'rootpass',
DB_HOST => 'localhost',
DB_DATABASE => 'netdot',
DB_NETDOT_USER => 'netdot_user',
DB_NETDOT_PASS => 'netdot_pass',
, где DB_DBA – пользователь имеющий право создавать базы, DB_DATABASE – имя создаваемой базы данных Netdot, DB_NETDOT_USER – пользователь базы данных Netdot.
Все остальные настройки можно отредактировать позже. Следует отметить, что в дальнейшем, при изменении конфигурации следует перезапустить Apache чтобы изменения вступили в силу.
• Инициируем базу данных:
~# make installdb
• Устанавливаем непосредственно Netdot
~# make install
• Настраиваем Apache:
~# cp /usr/local/netdot/etc/netdot_apache2_local.conf /etc/httpd/conf.d/
• После установки перезапускаем Apache:
~# service httpd restart

Установка закончена. Запускаем браузер и переходим по адресу http://ваше_имя_хоста.домен/netdot. Имя пользователя и пароль по умолчанию: “admin”.
Более детальное описание установки вы найдете в официальной документации — https://osl.uoregon.edu/redmine/projects/netdot/files

Интерфейс

Интерфейс утилиты довольно прост:



Устройства можно добавлять несколькими способами:
• Опросить устройства с помощью скрипта в командной строке:
~# /usr/local/netdot.bin/updatedevices.pl -H <адрес или имя хоста> -I -c <комьюнити> — извлечь информацию из одиночного хоста
~# /usr/local/netdot.bin/updatedevices.pl -B 192.168.1.0/24 -I -c <комьюнити> — просканировать подсеть и извлечь информацию
~# /usr/local/netdot.bin/updatedevices.pl -E <мя файла> — просканировать устройства, описанные в файле
Получить полный список параметров скрипта можно с помощью команды:
~# /usr/local/netdot.bin/updatedevices.pl -h
• Опросить или добавить устройство через веб-интерфейс:



В результате мы получим список устройств:



Для каждого устройства отображается довольно подробная информация:







Напоследок приведу пример отображения информации о доступном адресном пространстве.
Общий список подсетей:



Подсеть (subnet) — это то, что видно на интерфейсе маршрутизатора. Контейнер (container) может содержать подсети и другие контейнеры. Подсеть не может содержать другие подсети и контейнеры. Контейнер трансформируется в подсеть когда он появляется на одном из интерфейсов маршрутизатора.

Карта подсети:


IP-адрес может принимать одно из следующих состояний:
  • Свободный (available) — свободный адрес
  • Статический (static) — принадлежит интерфейсу устройства
  • Обнаруженный (discovered) — обнаружен в таблице ARP
  • Динамический (dynamic) — входит в диапазон, распределяемый по DHCP
  • Зарезервированный (reserved) — адреса, которые не могут быть назначены интерфейсам




Резюме

Netdot — довольно мощная и функциональная система. Конечно, в одной статье невозможно описать все ее возможности. Если статья вас заинтересовала, буду рад продолжить.
Сайт проекта:
https://osl.uoregon.edu/redmine/projects/netdot

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 16

    0
    А с NOC Project в его текущем состоянии можете сравнить?
      0
      Мое знакомство с NOC было не очень продолжительным: скачал с сайта образ виртуальной машины, запустил, попытался самостоятельно разобраться. Огорчило, что пользовательская документация практически отсутствует, а осваивать систему методом проб и ошибок желания пока нет.
        0
        Ну, насколько я могу судить, тут пока с документацией тоже не очень хорошо.
        Вообще, на мой взгляд, не хватает только управления конфигурацией — и можно будет рассматривать, как годную замену noc.
        Кстати, а вы как решили эту проблему?
          0
          Для управления конфигурациями оборудования используем RANCID. В качестве веб-интерфейса используем систему просмотра репозиториев ViewVC
            0
            Хотелось бы, конечно, держать все в одном месте (а заодно и провижинить). Вот и думаю сейчас — пилить NOC, или пилить что-то другое, например — NetDot
      0
      А что это за Serial со скоростью 2Gbps на скриншоте? Мне кажется, что-то тут не так…
        0
        Есть ещё проект nedi, я так понимаю, они очень похожи. Тоже перловый, тот же (±) набор функций. Посмотрите.
          0
          Да, что-то похожее. Но мы с ним друг друга не поняли…
            0
            Посмотрел demo-сайт этого проекта.
            Как я уже писал в статье, нам изначально нужен был функционал управления ip-адресами. В nedi его, как и управления dns-записями, нет. Еще не понравился интерфейс системы — пёстрый, непродуманный, много свободного неиспользуемого места. Понравилось, что есть встроенные функции мониторинга (мы для мониторинга устройств используем стороннее приложение — Zabbix)
            0
            На работе использую racktables. Оч удобно учитывать оборудования, сетей и тд. Проект развивается. Гибкая настройка прав доступа.
              0
              также можно попробовать www.observium.org
                0
                В netdot есть один важный модуль: cable plant — учет всего кабельного хозяйства. К сожалению, некоторые вещи у него by design отсутствуют.
                Сколько я не искал аналогов, даже коммерческих (но недорогих), ничего подобного нет. Хоть бери и дописывай netdot.

                Я постепенно перевожу netdot на русский, основное переведено (там было много проблем с выводом UTF-8), потом выложу куда-то git repo.

                Может кто-то подскажет ПО для cable management?

                Спасибо.
                  0
                  Выложите, пожалуйста, перевод
                    0
                    К сожалению, netdot перестали использовать, нашли недорогой коммерческий продукт.
                    Вот тут перевод и разные правки, чтобы работало нормально:
                    github.com/hiddenman/netdot-ru
                      0
                      Если не секрет, какой коммерческий продукт вы выбрали и по каким причинам?
                        0
                        device42.com
                        Нормальные, адекватные ребята, куча фич, нормальные технологии, www-based, по моей просьбе и советам буквально за пару месяцев дописали кучу всего, включая major фичи. Ну и недорого, как для такого софта (остальные в разы дороже), плюс trial 30 дней :) Мы, правда, до сих пор не купили, все обкатываем, не срочно.

                        Пробовал еще разные посмотреть, коммерческие, дорогие и известные и не очень. Так и не нашел демок и нормальных цен. До этого смотрел patch manager, неплох, но условия лицензирования неудобные для нас, дорого (за каждый rack денежки, а у нас их много маленьких по зданиям)

                Only users with full accounts can post comments. Log in, please.