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