Автообнаружение
Центральный Пульт позволяет описать инфраструктуру любой сложности в терминах объектов и связей между ними. Эта инфраструктура затем наполняется информацией, полученной от агентов мониторинга, виджетами с текущими показателями метрик и графиками, раскрашивается в цвета состояний.
Однако создавать карту инфраструктуры вручную зачастую слишком утомительно, ведь в ней могут содержаться тысячи объектов. Для решения этой проблемы в Центральном Пульте предусмотрены механизмы автообнаружения объектов. С их помощью можно добавить большинство интересующих пользователя объектов на карту инфраструктуры в автоматическом режиме, без ручного "накликивания" в web-интерфейсе.
В Центральном Пульте есть две разновидности автообнаружения объектов.
Первая разновидность - это встроенные механизмы, которые работают без каких-либо усилий со стороны пользователя. К ним относится, например, механизм сетевого автообнаружения, который отображает на схеме все хосты, доступные в локальной сети.
Вторая разновидность - это методы в REST API, которые могут использоваться скриптами автоматизации пользователя для создания объектов в Центральном Пульте. С помощью таких скриптов можно реализовать любой алгоритм автообнаружения любых разновидностей объектов инфраструктуры.
Встроенное автообнаружение
Встроенные механизмы автообнаружения реализованы внутри Центрального Пульта и срабатывают автоматически при старте системы (за исключением случаев, когда они отключены администратором системы).
К встроенным механизмам автообнаружения относится механизм сетевого автообнаружения.
Сетевое автообнаружение
Агент сканирует локальную подсеть и отправляет на сервер информацию обо всех IP-адресах, доступных для TCP-соединения либо доступных по PING. Для обнаруженных хостов в Центральном Пульте создаются объекты класса Host
с соответствующими адресами. Внутри каждого из этих объектов автоматически создаётся подобъект класса Ping
, в котором включается мониторинг с помощью агента, выполнившего автообнаружение, и сенсора Ping.
IP-адрес обнаруженного объекта автоматически записывается в свойство IP, что можно использовать для перехода по этому адресу в браузере или доступа к объекту по SSH или Telnet через контекстное меню.
Сетевое автообнаружение включено по умолчанию и может быть выключено в конфигурационном файле агента параметром agent.discoveryEnabled=false:
agent.discoveryEnabled=false
По умолчанию обнаруженные объекты помещаются в корневой объект иерархии. Чтобы изменить родительский объект для автоматически обнаруживаемых объектов, необходимо указать идентификатор нового родительского объекта в параметре server.discovery_parent_id конфигурационного файла сервера:
...
"server" : {
...
"discovery_parent_id" : "632aae8b1a687b43378c0657",
...
},
...
Для каждого из обнаруженных хостов может быть создан только один объект. После удаления объекта, связанного с обнаруженным хостом, новый объект для данного хоста создаваться не будет. |
Авторегистрация агентов
Если установить агент на хост и в настройках агента указать agent.id=0
, то на сервере создаётся объект класса Host
.
У созданного объекта:
-
формируется имя по шаблону
имя_хоста (ip адрес хоста)
; -
добавляются свойства
Hostname
иIP
: -
создаются следующие дочерние объекты с проверками по умолчанию:
Для автоматического обновления имени и свойств созданного объекта в серверной конфигурации следует выставить флаг 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-адрес устройства. |