Создание сценария автопостроения РСМ
В данном разделе документации рассматриваются общие принципы создания и построения сценариев автоматического построения РСМ.
Перед созданием вашего первого сценария рекомендуется ознакомиться с терминологией и общими понятия о функционале Автоматизации:
Глоссарий терминов раздела Автоматизация
Основные положения функционала Автоматизации
А также смотрите видео-урок на нашем 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 можно прочитать в соответствующем разделе документации Функции для работы с РСМ, которая содержит готовые блоки функций создания КЕ, фильтрации КЕ, создания связей между КЕ и многое другое.