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

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

Однако создавать карту инфраструктуры вручную зачастую слишком утомительно, ведь в ней могут содержаться тысячи объектов. Для решения этой проблемы в Центральном Пульте предусмотрены механизмы автообнаружения объектов. С их помощью можно добавить большинство интересующих пользователя объектов на карту инфраструктуры в автоматическом режиме, без ручного "накликивания" в 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": "Идентификатор_объекта"}'
Больше информации о создании объектов и примеры на других языках программирования - https://api.cpult.ru/documentation/methods/objects/create-new-object.html

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

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