Создание сценария автопостроения РСМ
В данном разделе документации рассматриваются общие принципы создания и построения сценариев автоматического построения РСМ.
Перед созданием вашего первого сценария рекомендуется ознакомиться с терминологией и общими понятия о функционале Автоматизации:
Глоссарий терминов раздела Автоматизация
Основные положения функционала Автоматизации
А также смотрите видео-урок на нашем YouTube канале
Добавление сценария
-
Перейдите через основное меню в раздел Действия - Автоматизация - откроется экран управления сценариями.
-
Для добавления в систему нового сценария нажмите кнопку ➕ Создать сценарий в правом верхнем углу экрана.
-
Заполните основные параметры создаваемого сценария:
- Владелец сценария - Рабочая группа, которой будет принадлежать сценарий.
- Название - логически понятное название сценария.
- Тип - CMDBAutoDiscovery.
- Описание (опционально).
- Импорт сценария (опционально).
-
Нажмите кнопку Создать - сценарий будет создан и откроется конструктор сценария.
-
Каждый сценарий начинает работу с События запуска - блока
OnLogEvent
,
автоматически добавляемого при создании каждого сценария.
- Удалить или изменить блок
OnLogEvent
нельзя. - В исходящем пине (переменной)
Value
блокаOnLogEvent
содержится значение первичного события, переданного в Monq через:
- Удалить или изменить блок
Фильтрация событий
Следующим действием необходимо произвести фильтрацию поступающих событий в сценарий Автоматизации.
-
Добавьте функцию
FilterByStreamId
в сценарий (справка):Функция позволяет осуществлять фильтрацию принимаемого объекта по полю id структуры _stream.
-
Соедините пины
Out
иIn
блоковOnLogEvent
иFilterByStreamId
Данным действием, после получения события передаем управление функции
FilterByStreamId
-
Чтобы получить значение идентификатора потока, по которому пришло событие необходимо разложить содержимое пина
Value
на составляющие. Добавьте в сценарий функциюBreakStruct
и соедините её с пиномValue
Служебная информация о потоке содержится в поле
_stream
соответствующего исходящего пина функцииBreakStruct
. -
Соедините пин
_stream
функцииBreakStruct
с пиномStream
функцииFilterByStreamId
. Таким образом вы передадите информацию о потоке данных, по которому пришло событие в функцию фильтрации. -
Укажите в функции
FilterByStreamId
значение пинаStreamId
равным идентификатору потока, события которого планируется обрабатывать в сценарии.В случае соответствия идентификатора Потока данных идентификатору, который содержится в первичном событии, дальнейшее управление пойдет по управляющему пину
Ok
, иначе - по пинуFailed
.
Создание конфигурационной единицы
Рассмотрим пример создания Конфигурационной единицы (КЕ) по первичным событиям из Zabbix.
# Пример первичного события из системы мониторинга Zabbix
{
"id": "50133",
"clock": 1646785676,
"acknowledged": 0,
"name": "Disk space usage",
"value": 1,
"severity": 4,
"trigger": {
"id": "20170",
"revealedDescription": "Disk space usage",
"description": "Disk space usage",
"revealedComments": "",
"comments": "",
"expression": "{25124}>90",
"lastChangeTime": 0,
"priority": 4,
"state": 0,
"status": 0,
"url": "",
"value": 1
},
"group": {
"id": "24",
"name": "d12-apps"
},
"host": {
"id": "10452",
"hostValue": "d12 Host",
"name": "d12 Host"
},
"itemsIds": [
37676
],
"tags": [],
"zabbixVersion": 5.4
}
Название КЕ name
возьмем с объекта host
первичного события:
{
"host": {
"id": "10452",
"hostValue": "d12 Host",
"name": "d12 Host"
},
}
Доступ к полям события
Чтобы получить доступ к объекту host
и его свойствам понадобится глобальная функция BreakDynamic
.
-
Добавьте в сценарий глобальную функцию
BreakDynamic
и соедините входящий пинObject
функцииBreakDynamic
с исходящим пиномsource
предыдущей глобальной функцииBreakStruct
.В поле
source
содержится информация о первичном событии, листинг которого приведен был выше. -
Откройте Инспектор объектов функции
BreakDynamic
(двойной клик по функции) и добавьте исходящий пинhosts
с типомDynamic
-
Далее, аналогично полю
host
объектаsource
необходимо получить значение поляname
объектаhost
. Добавьте еще одну функциюBreakDynamic
и соедините входящий пинObject
функцииBreakDynamic
с ранее добавленным исходящим пиномhost
. -
И используя Инспектор объектов вновь добавленной функции
BreakDynamic
добавьте исходящий пинname
с типомString
. -
На данном этапе мы получили доступ к переменной
source.host.name
в виде исходящего пина функцииBreakDynamic
.
Создание конфигурационной единицы
Будет рассмотрен пример создания КЕ с типом по умолчанию и назначением владельца - текущей Рабочей группы (владелец сценария).
Для создания КЕ будем использовать функцию CreateConfigItemExpanded:
-
Добавьте функцию
CreateConfigItemExpanded
в сценарий: -
В добавленную функцию необходимо передать обязательные параметры:
- Название КЕ
- Владельца КЕ
- Служебную переменную
Scenario
Из диспетчера объектов добавьте в сценарий переменную
Scenario
иOwnerWorkGroupId
и соедините с соответствующим пинами функцииCreateConfigItemExpanded
.Соедините пин
name
функцииBreakDynamic
с пиномName
функцииCreateConfigItemExpanded
.Передайте управление функции
CreateConfigItemExpanded
по условию успешной фильтрации в функцииFilterByStreamId
.Дополнительные возможностиПри необходимости при создании КЕ в функцию
CreateConfigItemExpanded
можно передать дополнительную информацию о КЕ.Документация о функции CreateConfigItemExpanded.
-
Для проверки работы сценария можно воспользоваться функцией установки статуса сценария
SetStatusDebug
.Добавьте функцию
SetStatusDebug
в сценарий:Передайте управление функции
SetStatusDebug
по условиям успешного создания КЕ - пинOk
, а также в случае возникновения ошибки - пинFailed
.Передайте значение служебной переменной
Scenario
в функциюSetStatusDebug
.Заполните значение пина
Message
- напримерСоздание КЕ
.В пин
Attachments
передайте ответ функции создания КЕ - пинResponse
. -
Итоговый сценарий будет выглядеть следующим образом:
-
Нажмите кнопку Скомпилировать в верхней панели конструктора сценария для отправки сценария в сервис компиляции.
ВниманиеСообщение "Успешно" - информирует о том, что сценарий был успешно передан в сервис компиляции.
В случае возникновения ошибок в сценарии и невозможности его скомпилировать - в истории запусков сценария будет соответствующая ошибка.
-
Активируйте сценарий переключателем Активен/Неактивен в верхней панели конструктора сценария.
Теперь, при получении события из системы мониторинга Zabbix, о проблеме или событии восстановления, будет создаваться конфигурационная единица с названием соответствующим названию узла сети Zabbix.
На этом возможности функционала Автоматизации не ограничены. Данный сценарий можно расширить различными условиями, проверками и действиями. Например:
- Добавить дополнительную проверку на предмет того, что КЕ уже есть в РСМ
- Добавлять при создании КЕ связи с другими КЕ по определенным признакам (меткам)
- Добавлять определенные метки и атрибуты для взаимодействия с Сигналами
- Предоставлять права доступа другим Рабочим группам
- И многое другое
Обо всех доступных функция для работы с Ресурсно-сервисной моделью Monq можно прочитать в соответствующем разделе документации Функции для работы с РСМ, которая содержит готовые блоки функций создания КЕ, фильтрации КЕ, создания связей между КЕ и многое другое.