Перейти к основному содержимому
Версия: 8.3

Создание сценария автопостроения РСМ

В данном разделе документации рассматриваются общие принципы создания и построения сценариев автоматического построения РСМ.

Перед созданием вашего первого сценария рекомендуется ознакомиться с терминологией и общими понятия о функционале Автоматизации:

Глоссарий терминов раздела Автоматизация

Основные положения функционала Автоматизации

А также смотрите видео-урок на нашем YouTube канале

Добавление сценария

  1. Перейдите через основное меню в раздел Действия - Автоматизация - откроется экран управления сценариями.

  2. Для добавления в систему нового сценария нажмите кнопку ➕ Создать сценарий в правом верхнем углу экрана.

  3. Заполните основные параметры создаваемого сценария:

    • Владелец сценария - Рабочая группа, которой будет принадлежать сценарий.
    • Название - логически понятное название сценария.
    • Тип - CMDBAutoDiscovery.
    • Описание (опционально).
    • Импорт сценария (опционально).

    image

  4. Нажмите кнопку Создать - сценарий будет создан и откроется конструктор сценария.

  5. Каждый сценарий начинает работу с События запуска - блока OnLogEvent,
    автоматически добавляемого при создании каждого сценария.
    image

    • Удалить или изменить блок OnLogEvent нельзя.
    • В исходящем пине (переменной) Value блока OnLogEvent содержится значение первичного события, переданного в Monq через:

Фильтрация событий

Следующим действием необходимо произвести фильтрацию поступающих событий в сценарий Автоматизации.

  1. Добавьте функцию FilterByStreamId в сценарий (справка):

    Функция позволяет осуществлять фильтрацию принимаемого объекта по полю id структуры _stream.

    image

  2. Соедините пины Out и In блоков OnLogEvent и FilterByStreamId

    image

    Данным действием, после получения события передаем управление функции FilterByStreamId

  3. Чтобы получить значение идентификатора потока, по которому пришло событие необходимо разложить содержимое пина Value на составляющие. Добавьте в сценарий функцию BreakStruct и соедините её с пином Value

    image

    Служебная информация о потоке содержится в поле _stream соответствующего исходящего пина функции BreakStruct.

  4. Соедините пин _stream функции BreakStruct с пином Stream функции FilterByStreamId. Таким образом вы передадите информацию о потоке данных, по которому пришло событие в функцию фильтрации.

    image

  5. Укажите в функции 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.

  1. Добавьте в сценарий глобальную функцию BreakDynamic и соедините входящий пин Object функции BreakDynamic с исходящим пином source предыдущей глобальной функции BreakStruct.

    image

    В поле source содержится информация о первичном событии, листинг которого приведен был выше.

  2. Откройте Инспектор объектов функции BreakDynamic (двойной клик по функции) и добавьте исходящий пин hosts с типом Dynamic

    image

  3. Далее, аналогично полю host объекта source необходимо получить значение поля name объекта host. Добавьте еще одну функцию BreakDynamic и соедините входящий пин Object функции BreakDynamic с ранее добавленным исходящим пином host.

    image

  4. И используя Инспектор объектов вновь добавленной функции BreakDynamic добавьте исходящий пин name с типом String.

    image

  5. На данном этапе мы получили доступ к переменной source.host.name в виде исходящего пина функции BreakDynamic.

Создание конфигурационной единицы

Будет рассмотрен пример создания КЕ с типом по умолчанию и назначением владельца - текущей Рабочей группы (владелец сценария).

Для создания КЕ будем использовать функцию CreateConfigItemExpanded:

  1. Добавьте функцию CreateConfigItemExpanded в сценарий:

    image

  2. В добавленную функцию необходимо передать обязательные параметры:

    • Название КЕ
    • Владельца КЕ
    • Служебную переменную Scenario

    Из диспетчера объектов добавьте в сценарий переменную Scenario и OwnerWorkGroupId и соедините с соответствующим пинами функции CreateConfigItemExpanded.

    Соедините пин name функции BreakDynamic с пином Name функции CreateConfigItemExpanded.

    Передайте управление функции CreateConfigItemExpanded по условию успешной фильтрации в функции FilterByStreamId.

    Дополнительные возможности

    При необходимости при создании КЕ в функцию CreateConfigItemExpanded можно передать дополнительную информацию о КЕ.

    Документация о функции CreateConfigItemExpanded.

    image

  3. Для проверки работы сценария можно воспользоваться функцией установки статуса сценария SetStatusDebug.

    Добавьте функцию SetStatusDebug в сценарий:

    image

    Передайте управление функции SetStatusDebug по условиям успешного создания КЕ - пин Ok, а также в случае возникновения ошибки - пин Failed.

    Передайте значение служебной переменной Scenario в функцию SetStatusDebug.

    Заполните значение пина Message - например Создание КЕ.

    В пин Attachments передайте ответ функции создания КЕ - пин Response.

  4. Итоговый сценарий будет выглядеть следующим образом:

    image

  5. Нажмите кнопку Скомпилировать в верхней панели конструктора сценария для отправки сценария в сервис компиляции.

    Внимание

    Сообщение "Успешно" - информирует о том, что сценарий был успешно передан в сервис компиляции.

    image

    В случае возникновения ошибок в сценарии и невозможности его скомпилировать - в истории запусков сценария будет соответствующая ошибка.

  6. Активируйте сценарий переключателем Активен/Неактивен в верхней панели конструктора сценария.

    image

Теперь, при получении события из системы мониторинга Zabbix, о проблеме или событии восстановления, будет создаваться конфигурационная единица с названием соответствующим названию узла сети Zabbix.

На этом возможности функционала Автоматизации не ограничены. Данный сценарий можно расширить различными условиями, проверками и действиями. Например:

  • Добавить дополнительную проверку на предмет того, что КЕ уже есть в РСМ
  • Добавлять при создании КЕ связи с другими КЕ по определенным признакам (меткам)
  • Добавлять определенные метки и атрибуты для взаимодействия с Сигналами
  • Предоставлять права доступа другим Рабочим группам
  • И многое другое

Обо всех доступных функция для работы с Ресурсно-сервисной моделью Monq можно прочитать в соответствующем разделе документации Функции для работы с РСМ, которая содержит готовые блоки функций создания КЕ, фильтрации КЕ, создания связей между КЕ и многое другое.