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

🅰️ Автоматизация

Новый функционал автоматизации, построенный на базе low-code движка визуального программирования и собственной системы запуска и выполнения сценариев позволяет пользователям создавать произвольные сценарии обработки событий при помощи визуальных блоков и установки связей между ними.

Термин "Low-Code" относится к методологии разработки программного обеспечения, которая стремится упростить процесс создания приложений, минимизируя необходимость вручную писать код.

С помощью такого подхода инженеры внедрения могут быстрее создавать сценарии, поскольку они могут сосредоточиться на логике и бизнес-процессах, а не на написании каждой детали кода. Это также позволяет "непрограммистам", таким как бизнес-аналитикам или инженерам мониторинга, участвовать в создании сценариев, упрощая процесс разработки и снижая зависимость от высококвалифицированных разработчиков.

Для построения Сценариев доступны как базовые Блоки системной библиотеки, так и локальные функции, написанные пользователем на скриптовом языке C# scripts.

Руководство по созданию первого сценария

Архитектура обработки сценария автоматизации

Изображение

Модуль запуска сценариев состоит из 2-х основных сущностей:

  • обработчик (Runner)
  • координатор обработчиков (Runners dispatcher)

Связь между обработчиком и координатором осуществляется с помощью механизмов библиотеки SignalR. Координатор работает непосредственно с API сервисом автоматона и глобальной картой маршрутизации. При загрузке координатора, он читает полную карту маршрутов и ожидает подключения от обработчиков для раздачи им заданий на обработку сценариев автоматизации. Изменения на маршрутной карте передаются управляющими командами через эксклюзивную очередь в координатор через брокер сообщений RabbitMQ. Таким образом, координатор всегда имеет полную карту маршрутов в памяти и может оперативно взаимодействовать со всеми обработчиками.

Обработчик при старте пытается соединиться с координатором. При успешном подключении обработчик добавляется в пул доступных обработчиков для назначения ролей обработки сценарие автоматизации. Координатор просматривает количественные настройки определенные для модулей и выдает задачу на обработку входных событий определенного модуля свободному обработчику. При этом координатор балансирует нагрузку на обработчики согласно настройкам в модуле. Но главное правило - все модули должны быть распределены для обработки хотя бы одному обработчику.

Экран управления сценариями

Изображение

На главной странице экрана Автоматизация представлен табличный список сценариев со следующей информацией:

  • Название сценария (содержит информацию о статусе и режиме отладки, если она включена)
  • Тип сценария
  • Владелец сценария (Рабочая группа)
  • Общесистемные тэги
  • Дата последних изменений
  • Дата последнего запуска

🔁 Порядок столбцов таблицы можно определить в удобном для себя формате.

Поиск сценариев автоматизации производится по их названию, а также и по названию рабочей группы владельца сценария.

На экране управления сценариями можно настроить параметрический фильтр для отображения только определенных сценариев.

Для фильтрации доступны следующие параметры:

  • Владелец - рабочая группа, которой принадлежит сценарий
  • Статус - активен/остановлен
  • Тип - тип сценария
  • Тэг - общесистемный тэг

Выберите необходимые условия фильтра - настройки фильтра применяются "на лету".

Тип сценария

Тип сценария соответствует маршрутному узлу, по которому проходит событие на обработку.

В текущей версии в системе доступны, следующие маршрутные узлы (типы) для сценариев:

  • CMDBAutodiscovery - маршрутный узел обработки событий, связанных с построением ресурсно сервисной модели
  • SignalsProcessor - маршрутный узел обработки событий и логов из внешних источников
  • ThresholdsProcessor - маршрутный узел привязки порогов к конфигурационным единицам РСМ
  • BuildsProcessor - маршрутный узел обработки сборок автоматического тестирования
  • Stream Raw Events Processor - скрытый маршрутный узел препроцессора (обработчика) событий в потоке данных

Обработчик автоматона

Обработчик автоматона - это один из программных модулей Monq, который отвечает за запуск и выполнение различного рода вычислительных операций по заданным пользователями сценариям.

При получении первого события в обработчике будут загружены все пользовательские структуры данных (классы) и скомпилированы в InMemory сборку (Assembly) и эти классы будут доступны для работы в сценариях. После загрузки всех классов, будут загружены и скомпилированы все глобальные пользовательские функции.

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

Механизм распределения обработчиков по маршрутным узлам

Эксклюзивность маршрутных узлов

Эксклюзивность маршрутных узлов основывается на рекомендуемом количестве обработчиков для одного маршрутного узла.

Координатор обработчиков сначала назначает все маршрутные узлы первому обработчику. Затем координатор начинает распределять эксклюзивные узлы между новыми обработчиками до тех пор, пока текущее количество обработчиков не достигнет рекомендуемого количества для каждого маршрутного узла.

Распределение поровну

После распределения эксклюзивных маршрутных узлов осуществляется равномерное распределение узлов. Высчитывается количество обрабатываемых маршрутных узлов на обработчиках, исключая эксклюзивные. Количество узлов разделяется на количество обработчиков + 1 новый подключенный обработчик. Полученное число округляется до ближайшего целого числа.

Из каждого обработчика, кроме эксклюзивного, поочередно забирается по одному узлу. Выбранные узлы назначаются на новый обработчик.

Если существует маршрутный узел, у которого рекомендуемое количество обработчиков больше 1, то он назначается на следующий подключенный обработчик дополнительно, после равномерного распределения.

Распределение при минимальном количестве обработчиков

После завершения распределения всех маршрутных узлов, в случае, если подключается дополнительный обработчик, на него назначается узел с наименьшим количеством фактических обработчиков.

Перераспределение маршрутных узлов при отключении обработчика

  • Если отключается обработчик, который обрабатывал обычные маршрутные узлы, эти узлы назначаются поочередно по одному на все обработчики, которые не обрабатывают эксклюзивный маршрутный узел.
  • Если отключается обработчик, который обрабатывал эксклюзивный маршрутный узел:
    • Если существует обработчик, который обрабатывает обычные маршрутные узлы и он не один, то эксклюзивный маршрутный узел назначается на этот обработчик. Узлы, которые находились на этом обработчике, перераспределяются на другие обработчики поровну.
    • Если существует обработчик, который обрабатывает обычные маршрутные узлы и он один:
      • Эксклюзивный маршрутный узел назначается на него, если количество фактических обработчиков эксклюзивного узла стало равным нулю.
      • Эксклюзивный маршрутный узел не назначается ни на какой обработчик, если фактическое количество обработчиков больше нуля.

При этом, распределение маршрутных узлов, у которых количество рекомендуемых обработчиков равно нулю, теперь не учитываются в распределении.

Настройка распределения обработчиков

Подробнее о настройке правил распределения обработчиков вы можете прочитать в разделе "Использование" - "Эксплуатация" - "Распределение обработчиков по маршрутным узлам".

Рекомендуем посмотреть видео-ролик о том как устроена автоматизация в Monq и как масштабировать систему

Применение настроек

При изменении настроек маршрутной карты автоматона, необходимо:

  1. Выключить все обработчики

    Пример команды kubernetes:

    kubectl scale -n integration deployment pl-automaton-v2-processor-service-runner --replicas=0

  2. Перезапустить сервис координатора pl-automaton-v2-processor-service

    Пример команды monqctl:

    monqctl instance restart microservice --microservice=pl-automaton-v2-processor-service

  3. Запустить необходимое количество обработчиков

    Пример команды kubernetes:

    kubectl scale -n integration deployment pl-automaton-v2-processor-service-runner --replicas=5

    где 5 - количество реплик сервиса обработчиков автоматона

Тэги сценария

Для дополнительной организации и классификации сценариев, пользователям с правами редактирования в модуле Автоматизация, доступно добавление/удаление тэгов к сценариям.

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

Управление доступом к сценариям

К сценариям автоматизации можно персонализировать доступ пользователей в рамках права - "Platform.Автоматизация" в настройках ролей "Рабочей группы".

Справка по настройке ролей в РГ

Доступно назначение следующих видов прав для Роли:

  • Запрещено

    При переходе к экрану управления сценариями автоматизации пользователю недоступен к просмотру данный раздел системы.

  • Редактирование

    Пользователь получает полные права на создание, редактирование и удаление сценариев.

  • Чтение

    • Разрешено

      • Просмотр сценариев и основной информации о них
      • Экспорт сценариев
      • Поиск по сценариям
      • Просмотр истории запусков сценариев
      • Просмотр исходного кода
      • Просмотр запланированных запусков
    • Запрещено

      • Активация/деактивация сценариев
      • Компиляция сценариев
      • Удаление сценариев
      • Добавление/удаление/редактирование объектов на холсте

По умолчанию для системных ролей Рабочих групп назначаются следующие права:

  • Менеджер - Редактирование
  • Пользователь - Чтение

Избранные сценарии

Если среди множества сценариев вы хотите пометить сценарии "избранными" лично для себя, чтобы упростить свою навигацию по ним:

  1. Найдите свой сценарий
  2. Отметьте "звездочкой" сценарий для добавления в избранное Изображение

Конструктор сценариев

Конструктор включает в себя возможность просматривать и редактировать сам сценарий, а также основную информацию о нем.

Изображение

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

  • Активный сценарий - система запуска и выполнения сценариев привлекает его для обработки событий
  • Неактивный сценарий - система запуска и выполнения сценариев не привлекает его для обработки событий.

Сразу после создания, сценарию устанавливается режим Неактивен. Активировать сценарий можно из конструктора сценария или с экрана управления сценариями.

Редактирование сценария происходит способом "Drag'n''Drop" - перемещая блоки и связи между ними указателем курсора. Перемещение по холсту сценария осуществляется по клику ПКМ или СКМ.

Для перемещения нескольких блоков одним движением - выделите необходимые блоки и перетащите их в нужное место сценария.

Для удаления нескольких блоков сразу - выделите необходимые блоки на холсте и нажмите клавишу Delete на клавиатуре, блоки будут удалены без дополнительного подтверждения.

Диспетчер объектов

Диспетчер объектов

Пользователю доступен Диспетчер объектов, позволяющий работать с объявленными сущностями текущего сценария. Каждая объявленная локальная функция, переменная или структура в сценарии будет отображена в данном диспетчере.

Пользователь может перейти к настройкам данных сущностей (Инспектор объектов) сразу из диспетчера, без необходимости добавления их на граф.

В диспетчере объектов доступно создание новых сущностей сценария, а именно:

  • Локальные функции.
  • Локальные переменные.
  • Локальные структуры.

Для удобства навигации по объектам сценария в верхней части Диспетчера объектов находится форма поиска по названию объекта.

При добавлении, новым сущностям назначаются названия по умолчанию:

В случае повторения названий, к ним добавляется порядковый номер.

Изображение

Инспектор объектов

Инспектор объектов

Изображение

Компиляция сценария

После внесения изменений в конструкцию сценария, конфигурацию или скрипт блока функции - необходимо скомпилировать итоговый сценарий для проверки на корректность составления.

💡 Компиляция сценария не является функцией его сохранения. Сохранение происходит после каждого изменения в сценарии.

Режим отладки

Все типы сценариев, кроме сценариев предобработки событий в потоках данных можно перевести в режим отладки.

Сценарий, находящийся в данном режиме, позволяет автоматически записывать в журнал входящие и выходящие параметры Impure-функций, благодаря чему сильно упрощается процесс отладки.

Чтобы включить режим отладки необходимо перейти к выбранному сценарию и активировать его соответствующей кнопкой:

Изображение

После включения режима отладки, вся отладочная информация содержится в панели История запусков в подкате каждого запуска сценария.

Исходный код

После компиляции сценария генерируется исходный код сценария на языке C#. Просмотреть сгенерированный код можно в нижней панели конструктора сценария - "Исходный код"

Изображение

⚠️ Редактировать сгенерированный исходный код сценария нельзя.

История запусков

На вкладке "История запусков" отображается информация о запусках сценария, инициализированных получением первичного события или по расписанию планировщика.

По умолчанию загружается список запусков сценария со статусами:

  • CompileError - ошибка компиляции
  • Completed - устанавливается соответствующей функцией SetStatusCompleted в сценарии, по его успешному завершению
  • Debug - устанавливается соответствующей функцией SetStatusDebug в сценарии, при отладке
  • Error - ошибка в работе сценария
  • Failed - устанавливается соответствующей функцией SetStatusFailed в сценарии, при отладке

Дополнительно, можно включить в фильтр следующие статусы:

  • Executed - каждый запуск сценария (записывается только в режиме отладки)
  • Launched - инициализация запуска сценария (записывается только в режиме отладки)
  • Skipped - устанавливается соответствующей функцией SetStatusSkipped в сценарии, при отладке

Информация о новых запусках сценария на вкладке загружается автоматически по технологии WebSockets.

Настроенное представление в виде определенных статусов и временного промежутка сохраняются для каждого сценария в настройках пользователя.

Планировщик запуска сценариев

В Monq пользователям доступен запуск сценариев в запланированное время или с определенной периодичностью.

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

Например. После получения события о восстановлении проблемы Сигнал можно закрывать не сразу, а через определенное время, если эта проблема не повторилась в течении 5 минут.

При этом запуск сценария может быть двух типов:

  • Разовый запуск сценария в определенное время
  • Ряд запусков сценария повторяющихся с определенной периодичностью

Просмотр активных расписаний

Чтобы просмотреть запланированные запуски текущего сценария перейдите в раздел "Планировщик запусков" нижней панели текущего сценария

Изображение

В данном разделе отображается информация о текущих запланированных запусках данного сценария:

  • Время следующего запуска
  • Статус расписания
    • Enabled - расписание активно
    • Paused - запуск сценария по планировщику приостановлен
  • Описание расписания
  • Элементы управления расписаниями
    • Редактирование расписания
    • Остановка/запуск расписания
    • Удаление расписания

Ручное создание расписания

Чтобы запланировать запуск сценария в определенное время или с определенной периодичностью:

  1. Перейдите в раздел "Планировщик запусков" нижней панели текущего сценария

  2. Нажмите кнопку "+ Запланировать запуск"

  3. Заполните форму создания расписания

    Изображение

    • Описание - текстовое, понятное пользователю описание запланированного запуска
    • Действие - событие в формате JSON, которое будет передано в сценарий при следующем запуске
    • Часовой пояс
    • Начало - дата и время первого запуска сценария
    • Повторения - возможность включить ряд запусков сценария

      Указывается в формате CRON

      Состоит из пяти полей разделённых пробелами: <Минута> <Час> <Число> <Месяц> <День недели>

    • Окончание - дата и время до которого будет происходить запуск сценария, если настроены повторения
  4. Нажмите кнопку "Запланировать запуск" - будет создано расписание запуска

Автоматическое создание расписания

Автоматическое создание расписания подразумевает инициализацию последующего запуска сценария непосредственно из сценария.

Для этого предназначены соответствующая глобальная функция CreateSchedule - справка.

Импорт/экспорт сценария

Пользователи могут делиться между собой готовыми конструкциями сценариев благодаря инструментам Экспорта и Импорта сценария.

При экспорте запускается механизм сериализации сценария в формат base64. По результату выполнения экспорта, пользователю будет предложено скопировать в буфер обмена код или скачать txt-файл с его содержимым.

image

Кроме стандартного создания сценария, пользователю доступна опция импорта, при выборе которой необходимо заполнить строку с содержимым в формате base64.

image

В процессе импорта система проверит соответствие версий задействованных модулей, и в случае успеха создаст сценарий со всеми необходимыми локальными функциями и структурами.

Если в сценарии используются глобальные пользовательские библиотеки, при переносе сценариев на другой стенд, сперва необходимо перенести пользовательские библиотеки через экспорт/импорт

Клонирование сценария

Для создания копии текущего сценария пользователям доступно клонирование сценариев Автоматизации. Клонирование сценариев доступно на экране списка доступных сценариев и в самом конструкторе сценария.

Чтобы клонировать сценарий:

  1. Откройте раздел Автоматизации.

  2. Найдите необходимый сценарий в списке.

  3. В контекстном меню необходимого сценария выберите Создать копию

  4. В открывшейся форме задайте новое имя сценария и при необходимости нового владельца.

  5. Нажмите Сохранить

image

Журнал изменений

Начиная с версии Monq 7.9.0 все изменения в сценариях фиксируются и доступны пользователям для просмотра.

На экране управления всеми доступными сценариями или в любом отдельном сценарии, для просмотра истории изменений откройте через дополнительное меню Журнал изменений

Изображение

При необходимости записи журнала можно отфильтровать по дате и времени.