Автообнаружение

Центральный Пульт позволяет описать инфраструктуру любой сложности в терминах объектов и связей между ними. Эта инфраструктура затем наполняется информацией, полученной от агентов мониторинга, виджетами с текущими показателями метрик и графиками, раскрашивается в цвета состояний.

Однако создавать карту инфраструктуры вручную зачастую слишком утомительно, ведь в ней могут содержаться тысячи объектов. Для решения этой проблемы в системе Центральный Пульт предусмотрены механизмы автообнаружения объектов. С их помощью можно добавить большинство интересующих пользователя объектов на карту инфраструктуры в автоматическом режиме, без ручного "накликивания" в web-интерфейсе.

В системе Центральный Пульт есть две разновидности автообнаружения объектов.

Первая разновидность - это встроенные механизмы, которые работают без каких-либо усилий со стороны пользователя. К ним относится, например, механизм сетевого автообнаружения, который отображает на схеме все хосты, доступные в локальной сети.

Вторая разновидность - это методы в REST API, которые могут использоваться скриптами автоматизации пользователя для создания объектов. С помощью таких скриптов можно реализовать любой алгоритм автообнаружения любых разновидностей объектов инфраструктуры.

Встроенное автообнаружение

Встроенные механизмы автообнаружения реализованы внутри сервера Центральный Пульт и срабатывают автоматически при старте системы (за исключением случаев, когда они отключены администратором системы).

К встроенным механизмам автообнаружения относится механизм сетевого автообнаружения.

Сетевое автообнаружение

Агент сканирует локальную подсеть и отправляет на сервер информацию обо всех IP-адресах, доступных для TCP-соединения либо доступных по PING. Для обнаруженных хостов в системе Центральный Пульт создаются объекты класса Host с соответствующими адресами. Внутри каждого из этих объектов автоматически создаётся подобъект класса Ping, в котором включается мониторинг с помощью агента, выполнившего автообнаружение, и сенсора Ping.

IP-адрес обнаруженного объекта автоматически записывается в свойство IP, что можно использовать для перехода по этому адресу в браузере или доступа к объекту по SSH или Telnet через контекстное меню.

image

Сетевое автообнаружение включено по умолчанию и может быть выключено в конфигурационном файле агента параметром agent.discoveryEnabled=false:

agent.discoveryEnabled=false

По умолчанию обнаруженные объекты помещаются в корневой объект иерархии. Чтобы изменить родительский объект для автоматически обнаруживаемых объектов, необходимо указать идентификатор нового родительского объекта в параметре server.discovery_parent_id конфигурационного файла сервера:

...
"server" : {
 ...
    "discovery_parent_id" : "632aae8b1a687b43378c0657",
    ...
},
...
Для каждого из обнаруженных хостов может быть создан только один объект. После удаления объекта, связанного с обнаруженным хостом, новый объект для данного хоста создаваться не будет.

Авторегистрация агентов

Если установить агент на хост и в настройках агента указать agent.id=0, то на сервере создаётся объект класса Host.

У созданного объекта:

  • формируется имя по шаблону имя_хоста (ip адрес хоста);

  • добавляются свойства Hostname и IP:

    image
  • создаются следующие дочерние объекты с проверками по умолчанию:

    image
Для автоматического обновления имени и свойств созданного объекта в серверной конфигурации следует выставить флаг server.hostname_update.enabled в true.

Автообнаружение через API

Все варианты автообнаружения для всего многообразия существующих инфраструктур предусмотреть невозможно. Однако Центральный Пульт имеет открытый REST API, используя который, клиент может реализовать любой, подходящий именно ему механизм автообнаружения объектов, с помощью автоматического сценария (скрипта). REST API системы Центральный Пульт работает по протоколу HTTP, поэтому сценарий можно реализовать на любом языке или платформе, где есть HTTP-клиент.

Простейший пример - bash-скрипт с отправкой REST-запросов в Центральный Пульт через curl.

Добавление объектов через REST

К примеру, есть скрипт, который умеет обнаруживать определённый вид объектов в инфраструктуре (это могут быть сетевые устройства или программные сервисы). Добавить обнаруженные объекты в Центральный Пульт можно с помощью REST-метода POST/node/api/objects.

Пример, как это может делаться в bash-скрипте:

# Код для обнаружения объекта...
# ...

# Объект обнаружен, создаём его на сервере.
curl -v http://saymon.local/node/api/objects \
  -u "admin:saymon" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"name": "Обнаруженный объект", "discovery_id": "Идентификатор_объекта"}'
Больше информации о создании объектов и примеры на других языках программирования – Создать объект

Важным параметром при обнаружении объекта является discovery_id. Это строка, однозначно идентифицирующая объект в инфраструктуре и позволяющая избежать его повторного создания в системе. Если в момент создания объекта на сервере уже существует объект с указанным discovery_id, он просто модифицируется новыми данными, а новый объект при этом не создаётся. Это позволяет запускать сценарий автообнаружения множество раз (например, по расписанию) и быть уверенным, что уже обнаруженные объекты не будут созданы повторно.

В случае с сетевыми устройствами в качестве discovery_id может выступать IP-адрес или MAC-адрес устройства.