Автообнаружение
SmartDCIM позволяет описать инфраструктуру любой сложности в терминах объектов и связей между ними. Эта инфраструктура затем наполняется информацией, полученной от агентов мониторинга, виджетами с текущими показателями метрик и графиками, раскрашивается в цвета состояний.
Однако создавать карту инфраструктуры вручную зачастую слишком утомительно, ведь в ней могут содержаться тысячи объектов. Для решения этой проблемы в системе SmartDCIM предусмотрены механизмы автообнаружения объектов. С их помощью можно добавить большинство интересующих пользователя объектов на карту инфраструктуры в автоматическом режиме, без ручного "накликивания" в web-интерфейсе.
В системе SmartDCIM есть две разновидности автообнаружения объектов.
Первая разновидность – это встроенные механизмы, которые работают без каких-либо усилий со стороны пользователя. К ним относится, например, механизм сетевого автообнаружения, который отображает на схеме все хосты, доступные в локальной сети.
Вторая разновидность – это методы в REST API, которые могут использоваться скриптами автоматизации пользователя для создания объектов. С помощью таких скриптов можно реализовать любой алгоритм автообнаружения любых разновидностей объектов инфраструктуры.
Встроенное автообнаружение
Встроенные механизмы автообнаружения реализованы внутри сервера SmartDCIM и срабатывают автоматически при старте системы (за исключением случаев, когда они отключены администратором системы).
К встроенным механизмам автообнаружения относится механизм сетевого автообнаружения.
Сетевое автообнаружение
Агент сканирует локальную подсеть и отправляет на сервер информацию обо всех IP-адресах, доступных для TCP-соединения либо доступных по PING. Для обнаруженных хостов в системе SmartDCIM создаются объекты класса Host с соответствующими адресами. Внутри каждого из этих объектов автоматически создаётся подобъект класса Ping, в котором включается мониторинг с помощью агента, выполнившего автообнаружение, и сенсора Ping.
IP-адрес обнаруженного объекта автоматически записывается в свойство IP, что можно использовать для перехода по этому адресу в браузере или доступа к объекту по SSH или Telnet через контекстное меню.

Сетевое автообнаружение включено по умолчанию и может быть выключено в конфигурационном файле агента параметром agent.discoveryEnabled=false:
json
agent.discoveryEnabled=falseПо умолчанию обнаруженные объекты помещаются в корневой объект иерархии. Чтобы изменить родительский объект для автоматически обнаруживаемых объектов, необходимо указать идентификатор нового родительского объекта в параметре server.discovery_parent_id конфигурационного файла сервера:
json
...
"server" : {
...
"discovery_parent_id" : "632aae8b1a687b43378c0657",
...
},
...NOTE
Для каждого из обнаруженных хостов может быть создан только один объект. После удаления объекта, связанного с обнаруженным хостом, новый объект для данного хоста создаваться не будет.
Авторегистрация агентов
Если установить агент на хост и в настройках агента указать agent.id=0, то на сервере создаётся объект класса Host.
У созданного объекта:
- формируется имя по шаблону
имя_хоста (ip адрес хоста); - добавляются свойства
HostnameиIP: - создаются следующие дочерние объекты с проверками по умолчанию:
NOTE
Для автоматического обновления имени и свойств созданного объекта в серверной конфигурации следует выставить флаг server.hostname_update.enabled в true .
Автообнаружение через API
Все варианты автообнаружения для всего многообразия существующих инфраструктур предусмотреть невозможно. Однако SmartDCIM имеет открытый REST API, используя который, клиент может реализовать любой, подходящий именно ему механизм автообнаружения объектов, с помощью автоматического сценария (скрипта). REST API системы SmartDCIM работает по протоколу HTTP, поэтому сценарий можно реализовать на любом языке или платформе, где есть HTTP-клиент.
NOTE
Простейший пример – bash-скрипт с отправкой REST-запросов в SmartDCIM через curl .
Добавление объектов через REST
К примеру, есть скрипт, который умеет обнаруживать определённый вид объектов в инфраструктуре (это могут быть сетевые устройства или программные сервисы). Добавить обнаруженные объекты в SmartDCIM можно с помощью REST-метода POST/node/api/objects.
Пример, как это может делаться в bash-скрипте:
shell
# Код для обнаружения объекта...
# ...
# Объект обнаружен, создаём его на сервере.
curl -v http://saymon.local/node/api/objects \
-u "admin:saymon" \
-H "Content-Type: application/json" \
-X POST \
-d '{"name": "Обнаруженный объект", "discovery_id": "Идентификатор_объекта"}'NOTE
Больше информации о создании объектов и примеры на других языках программирования – Создать объект
Важным параметром при обнаружении объекта является discovery_id. Это строка, однозначно идентифицирующая объект в инфраструктуре и позволяющая избежать его повторного создания в системе. Если в момент создания объекта на сервере уже существует объект с указанным discovery_id, он просто модифицируется новыми данными, а новый объект при этом не создаётся. Это позволяет запускать сценарий автообнаружения множество раз (например, по расписанию) и быть уверенным, что уже обнаруженные объекты не будут созданы повторно.
NOTE
В случае с сетевыми устройствами в качестве discovery_id может выступать IP-адрес или MAC-адрес устройства.