Работа с воркерами

Данный раздел описывает процесс работы с воркерами в системе. Работа осуществляется в разделе Ресурсы → Воркеры веб-интерфейса системы.

Раздел доступен администраторам, пользователям, которые имеют соответствующее разрешение в составе своих ролей, а также учетным записям со статусом Суперадминистратор.

О воркерах

Воркеры — это компоненты системы, выполняющие назначенные им задачи и использующие для этого выделенные ресурсы системы (определенное количество ядер CPU и объем памяти RAM). Такими задачами являются последовательности действий, заданные в скриптах и плейбуках системы. Ресурсы системы, выделенные для воркера, указываются в параметрах воркера.

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

Таким образом, с помощью менеджера воркеров можно назначать определенным воркерам скрипты для выполнения, например, по языкам, для выполнения которых они предназначены, или по компонентам системы.

  • Если аргументы в скрипте отсутствуют, в воркер передается пустой JSON-файл.

  • Если имеются непереопределенные аргументы по умолчанию, аргументы будут подставлены в JSON-файл.

  • Если имеются переопределенные аргументы по умолчанию, именно они будут подставлены в JSON-файл.

Воркер обрабатывает скрипт или плейбук по следующей схеме:

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

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

    Реестры зависимостей для скачивания могут храниться:

    • в сети Интернет;

    • в локальных репозиториях.

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

      Если скрипту назначить другой тег воркера, скрипт, возможно, будет передан на выполнение в другой воркер. Это повлечет за собой затрату дополнительного времени на установку зависимостей на этом воркере, так как ранее они не были на нем установлены.

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

    Если такие данные сохранены в кэше, воркер предоставит их, что ускорит выполнение процесса.

  4. Если готовый результат не найден, задача передается на выполнение. Каждый воркер в отдельный момент времени выполняет только одну задачу.

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

  6. Система помещает скрипт в специальную оболочку, позволяющую через библиотеку playbooks_sdk бесшовно получать доступ к переменным, элементам экспертизы, запускам и интеграциям с другими сервисами.

  7. Скрипт выполняется. Становятся доступными результат выполнения скрипта и логи. Изменяется статус запуска.

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

  • Если контейнер воркера пересоздается, все установленные зависимости теряются.

  • Если контейнер воркера останавливается и перезапускается, все установленные зависимости сохраняются.

Интерфейс раздела

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

  • Кнопка Добавить (plus) позволяет запустить выполнение воркера.

  • Кнопка Обновить (refresh) позволяет обновить воркеры до последней версии. Если все воркеры обновлены до последней версии, кнопка неактивна.

  • Поле Поиск предназначено для быстрого поиска воркеров в отображаемом списке по названию.

  • Выпадающий список Статус позволяет отфильтровать воркеры по статусу.

В рабочей области отображается таблица имеющихся воркеров. Колонки таблицы представлены следующим образом:

  • Название — название воркера.

  • Версия — версия воркера. Если доступно обновление воркера до последней версии, рядом с версией отображается соответствующее уведомление.

  • Группа воркеров — группа, в состав которой входит воркер.

  • Старт — дата и время старта выполнения конкретной задачи воркером.

  • Выполнено задач — количество задач, обработанных воркером в течение одного календарного дня.

  • Дата создания — дата и время создания воркера.

  • Дата изменения — дата и время изменения воркера.

  • Состояние — состояние воркера.

  • Статус — статус воркера (Включен, Выключен).

  • Описание — описание воркера.

При работе с таблицей воркеров доступны следующие операции:

  • Поиск воркеров по полю Название.

  • Фильтрация воркеров по полям Статус и Состояние. Значения выбираются из выпадающего списка.

  • Сортировка воркеров по полям Название, Версия, Дата создания, Дата изменения, Состояние и Статус.

При выборе конкретного воркера на экране открывается карточка с детальной информацией о нем.

Работа с воркером

Доступные операции над воркером:

Создание воркера

Чтобы создать воркер:

  1. Перейдите в раздел Ресурсы → Воркеры.

  2. Нажмите на кнопку Добавить (plus). Отобразится форма создания воркера.

  3. Введите название воркера.

  4. Введите количество ядер процессора, выделенное на обработку скрипта. Количество ядер не может превышать 48.

  5. Введите объем памяти RAM в МБ, выделенный на обработку скрипта. Объем памяти должен быть в диапазоне от 256 МБ до 524288 МБ.

  6. Введите описание воркера.

  7. Введите группу воркеров. По умолчанию поле заполняется значением all.

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

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

    • Python;

    • TypeScript (Bun);

    • TypeScript (Deno).

  9. Переведите переключатель Настройки прокси в активное положение, чтобы задать переменные для серверов прокси. Указанные переменные будут использоваться на этом воркере.

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

    • Http proxy — задается переменная http_proxy, содержащая URL сервера прокси для протокола HTTP.

    • Https proxy — задается переменная https_proxy, содержащая URL сервера прокси для протокола HTTPS.

    • No proxy — задается переменная no_proxy, содержащая разделенный запятыми список доменов, для которых сервер прокси не должен использоваться.

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

    Для задания переменной окружения:

    1. Нажмите на кнопку plus.

    2. Заполните поля Ключ и Значение данными новой переменной окружения.

    3. Нажмите на кнопку Сохранить. Введенная переменная будет использоваться на этом воркере.

    4. Выполните шаги a—​c для добавления других переменных окружения.

  11. Нажмите на кнопку Создать. Воркер будет добавлен в систему. Система отобразит соответствующее уведомление.

Просмотр воркера

Чтобы просмотреть воркер:

  1. Перейдите в раздел Ресурсы → Воркеры. Система отобразит сведения об имеющихся воркерах.

  2. Нажмите на строку воркера в списке. Система отобразит справа карточку этого воркера с подробной информацией о нем.

Название воркера отображается в верхней части карточки.

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

В правом верхнем углу карточки расположена кнопка действий (more vertical). При нажатии на нее открывается выпадающее меню со следующими действиями:

  • Кнопка Изменить (edit) позволяет изменить воркер.

  • Кнопка Обновить (refresh) позволяет обновить воркер. Кнопка доступна, если версия воркера отличается от последней версии и воркер включен.

  • Кнопка Удалить (trash) позволяет удалить воркер.

Карточка воркера содержит следующие вкладки:

  • Информация — основная информация о воркере.

  • Окружение — сведения о пользовательских репозиториях и переменных, заданных при создании воркера.

Вкладка Информация

На вкладке отображается характеристика процессора (CPU), объем оперативной памяти (RAM) и жесткого диска (HDD), а также их уровень загруженности.

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

  • Если воркер участвует в процессе обработки задачи, выключить его нельзя.

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

Если версия воркера отличается от последней версии, на вкладке отображается соответствующее предупреждение.

Также вкладка включает в себя следующие поля:

  • ID тенанта — идентификатор тенанта, в котором был добавлен воркер.

  • Название — название воркера.

  • Описание — описание воркера.

  • Версия — версия воркера.

  • Состояние — состояние воркера.

  • Группа воркеров — группа, в состав которой входит воркер.

  • Старт — дата и время старта выполнения конкретной задачи воркером.

  • Выполнено задач — количество задач, обработанных воркером в течение одного календарного дня.

  • Дата создания — дата и время создания воркера.

  • Создал — пользователь, создавший воркер.

  • Дата изменения — дата и время изменения воркера.

  • Изменил — пользователь, изменивший воркер.

Вкладка Окружение

На вкладке отображаются сведения о пользовательских репозиториях и переменных, заданных при создании воркера.

  • В разделе Дополнительные репозитории отображаются пользовательские репозитории, из которых импортируются пакеты на определенных языках. Эти пакеты можно использовать для создания скриптов и плейбуков на указанных языках.

  • В разделе Настройки прокси отображаются переменные, содержащие URL серверов прокси для различных протоколов и список доменов, для которых сервер прокси не должен использоваться.

  • В разделе Переменные окружения отображаются переменные окружения.

Обновление воркера

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

Обновление воркеров со страницы Воркеры

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

  1. Перейдите в раздел Ресурсы → Воркеры. Система отобразит сведения об имеющихся воркерах.

  2. Если необходимо обновить только определенные воркеры, выберите их в списке.

  3. Нажмите на кнопку Обновить (refresh) над списком воркеров. Система отобразит меню обновления со следующими командами:

    • Обновить все — позволяет обновить все воркеры неактуальных версий. Рядом с командой отображается количество воркеров в системе, не обновленных до актуальной версии.

    • Обновить выбранные — позволяет обновить воркеры, предварительно выбранные в списке на шаге 2. Если не выбран ни один воркер, кнопка недоступна.

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

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

Обновление воркера из его карточки

Чтобы обновить воркер из его карточки:

  1. Перейдите в раздел Ресурсы → Воркеры. Система отобразит сведения об имеющихся воркерах.

  2. Нажмите на строку воркера в списке. Система отобразит справа карточку этого воркера с подробной информацией о нем. Название воркера отображается в верхней части карточки.

  3. Нажмите на кнопку Действия (more vertical). Система отобразит меню команд.

  4. Выберите команду Обновить воркер. Система запустит процесс обновления.

Процесс обновления воркеров

Этап подготовки к обновлению

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

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

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

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

Колонки таблицы представлены следующим образом:

  • Название — название воркера.

  • Старая версия — текущая версия воркера.

  • Новая версия — актуальная версия, до которой можно обновить воркер.

  • Статус обновления — статус обновления воркера.

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

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

Отменить обновление воркеров можно, нажав на кнопку Отмена или крестик в правом верхнем углу окна.

Отменить обновление после этапа подготовки нельзя.

Этап обновления

После нажатия кнопки Обновить система начнет обновление воркеров, которые можно обновить немедленно. Такие воркеры переходят в статус обновления Обновление, а затем — в Обновлен.

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

  • Если воркер в таблице имеет статус обновления Завершается задание, для воркера доступны следующие кнопки:

    • Завершить задание — позволяет остановить выполнение задания с последующим обновлением воркера. Задание будет завершено с ошибкой.

    • Отменить обновление — позволяет отменить обновление воркера.

      Вы можете не выполнять над воркером в этом статусе никаких действий. Система начнет обновление воркера после завершения выполнения задания.
  • Если задание на воркере выполнено с ошибкой или воркер не может завершить выполнение задания, система устанавливает для воркера статус обновления Ошибка завершения задания. Необходимо принудительно завершить выполнение задания на воркере или отменить обновление воркера.

    Для воркера доступны следующие кнопки:

    • Принудительно завершить — позволяет принудительно завершить выполнение задания на воркере.

      При принудительном завершении система удалит все связи с воркером и пересоздаст воркер с обновлением до актуальной версии.
    • Отменить обновление — позволяет отменить обновление воркера.

Система обновит воркеры со статусами обновления, для которых это возможно.

Таблица 1. Таблица статусов обновления воркеров на различных этапах обновления
Этапы обновления Статус обновления Описание статуса Доступные действия

Подготовка к обновлению

Готов к обновлению

У воркера нет активных заданий. Он готов к обновлению

  • Отменить обновление

Найдены активные задания

У воркера найдены активные задания

  • Отменить обновление

Обновление

Завершается задание

Воркер находится в процессе завершения задания. После завершения задания он будет обновлен

  • Отменить обновление

  • Завершить выполнение

Обновление

У воркера нет активных заданий. Он находится в процессе обновления

  • Отменить обновление

Ошибка завершения задания

Воркер не смог завершить задание. Обнаружены ошибки

  • Отменить обновление

  • Завершить принудительно

Результат обновления

Ошибка обновления

Воркер обновить не удалось

  • Нет

Обновлен

Воркер успешно обновлен

  • Нет

Таблица 2. Таблица состояний воркеров
Состояние Индикатор Включен Выключен Переключение между статусами Описание состояния

Активен

Зеленый

+

 — 

Доступно

Работоспособное состояние воркера:

  • готов к выполнению задач;

  • выполняет задачи;

  • готов к профилактическим работам.

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

Недоступен

Серый

 — 

+

Доступно

  • Воркер не существует. Он недоступен для выполнения функций и профилактических работ.

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

Профилактика

Синий

+

 — 

Недоступно

  • Выполняются следующие операции над воркером:

    • Создание воркера. При включении создается новый воркер, настройки сохраняются с предыдущего воркера.

    • Обновление воркера.

    • Принудительная остановка воркера.

  • Работоспособность:

    • Воркер не готов выполнять новые задачи.

    • Воркер не может завершать выполнение поставленных задач.

Ошибка

Красный

+

 — 

Доступно

  • Воркер не создался и сервисы для воркера недоступны. Ошибка не связана с обновлением воркера.

  • Работоспособность: воркер не готов выполнять новые задачи.

Ошибка обновления

Красный

+

 — 

Доступно

  • Возникла ошибка при обновлении воркера.

  • Работоспособность:

    • Воркер необновленной версии готов выполнять новые задачи.

    • Когда воркер берет задачи в работу, он переходит в статус Активен с необновленной версией.

Изменение воркера

Чтобы изменить воркер:

  1. Перейдите в раздел Ресурсы → Воркеры. Система отобразит сведения об имеющихся воркерах.

  2. Нажмите на строку воркера в списке. Система отобразит справа карточку этого воркера с подробной информацией о нем. Название воркера отображается в верхней части карточки.

  3. Нажмите на кнопку Действия (more vertical). Система отобразит меню команд.

  4. Выберите команду Изменить (edit). Отобразится окно изменения воркера.

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

  6. Нажмите на кнопку Сохранить. Измененные данные воркера будут сохранены. Система отобразит соответствующее уведомление.

Удаление воркера

Чтобы удалить воркер:

  1. Перейдите в раздел Ресурсы → Воркеры. Система отобразит сведения об имеющихся воркерах.

  2. Нажмите на строку воркера в списке. Система отобразит справа карточку этого воркера с подробной информацией о нем. Название воркера отображается в верхней части карточки.

  3. Нажмите на кнопку Действия (more vertical). Система отобразит меню команд.

  4. Выберите команду Удалить (trash). Отобразится окно подтверждения удаления воркера.

  5. Нажмите на кнопку Удалить. Выбранный воркер исчезнет из списка воркеров. Система отобразит уведомление об удалении воркера.