Перейти к содержанию

Управление процедурами

Ключевые понятия описаны в статье Checker.

В статье описано управление процедурами в рамках ВЦОД:


Просмотреть определение процедуры

Чтобы просмотреть определение процедуры, введите

checker procedure show    --name <NAME>
                          [--json <no|yes>] 

где

  • name — имя обновляемой процедуры;
  • json — формат возвращения ответа. Возможные значения:

    • "no" — ответ возвращается в человекочитаемом формате. Значение по умолчанию,
    • "yes" — ответ возвращается в формате JSON.

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


Планирование выполнения процедуры

Планирование процедур по расписанию доступно как для кластера во ВЦОД управления, так и для ВЦОД. Администратор ВЦОД может планировать только те процедуры, которые делегированы в его ВЦОД. Процедуры уровня кластера, например, фенсинг узлов, планируются администратором кластера и в данном руководстве не рассматриваются.

  1. Чтобы процедура выполнялась автоматически по расписанию, введите команду

    checker procedure schedule add --name <NAME>
                                  [--vars '{"var": "value"}']
                                  --cron <cron>
    

    где

    • name — имя процедуры;
    • vars — переменная процедуры. Имеет значение --vars '{"var": "value"}'. Обязательно, если переменная public не имеет значения по умолчанию.
    • cron — периодичность выполнения процедуры. Период задается в формате "*****" где

      • первая * — минута. От 0 до 59,
      • вторая * — час. От 0 до 23,
      • третья * — день месяца. От 1 до 31,
      • четвертая * — месяц. От 1 до 12,
      • пятая * — день недели. От 0 до 7. Воскресенье=0 или 7.

    Пример

    "* * * * 7" — выполняется каждое воскресенье,
    "* 2 * * 7" — каждые два часа по воскресеньям,
    "*/1 * * * *" — каждую минуту.
    Полное описание синтаксиса и примеров cron см. GitLab Docs/Cron

  2. Изменить расписание для выполнения процедуры

    checker procedure schedule update --name <NAME>
                                     [--vars '{"var": "value"}']
                                     --cron <cron>
    

  3. Просмотр запланированных процедур

    checker procedure schedule list
    

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

    checker procedure schedule list
    

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

    Удалить процедуру из плана исполнения
    checker procedure schedule del --uuid <UUID>
    

    где uuid — идентификатор процедуры.

    Примечание

    Удаление из расписания не останавливает уже запущенный экземпляр процедуры, но новые запуски по расписанию прекратятся


Ручной запуск процедур

Если нужно протестировать процедуру или выполнять ее вручную, введите команду

checker procedure execute --name <NAME> 
                          [--vars '{"var": "value"}']
                          [--json <no|yes>]

где

  • name — имя процедуры;
  • vars — переменная процедуры. Имеет значение --vars '{"var": "value"}'. Обязательно, если переменная public не имеет значения по умолчанию;
  • json — формат возвращения ответа. Возможные значения:

    • "no" — ответ возвращается в человекочитаемом формате. Значение по умолчанию,
    • "yes" — ответ возвращается в формате JSON.

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

Чтобы остановить процедуру вручную, введите

checker procedure interrupt --uuid <UUID>

где uuid — идентификатор запущенной процедуры.

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


Статусы запущенных процедур

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

  1. Чтобы просмотреть список статусов всех процедур, введите команду

    checker procedure status list
    

  2. Чтобы просмотреть статус определенной процедуры, введите

    checker procedure status show --uuid <UUID>
                                  [--json <no|yes>]
    

где

  • uuid — идентификатор статуса процедуры, полученный в результате команды checker procedure status list;
  • json — формат возвращения ответа. Возможные значения:

    • "no" — ответ возвращается в человекочитаемом формате. Значение по умолчанию,
    • "yes" — ответ возвращается в формате JSON.

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

  • PENDING— процедура создана, но еще не начала выполняться;
  • IN_PROGRESS — процедура исполняется;
  • WAITING— процедура ждет завершения другой задачи;
  • SUCCESS — успешное завершение;
  • TIMEOUT— завершена по таймауту;
  • ERROR — завершена с ошибкой.
Пример получения списка статусов и детальной информации
checker procedure status list
[
  {
    "task_uuid": "0c6910ba-7f28-4ccb-9d6a-2a7d575cfadd",
    <...>
  }
]

checker procedure status show --uuid 0c6910ba-7f28-4ccb-9d6a-2a7d575cfadd
{
  "task_status": "IN_PROGRESS",
  <...>
}

Практические советы

Тестирование новой процедуры

  1. Запустите процедуру вручную для проверки выполнения

    checker procedure execute --name "procedure_name" --vars '{}' --json "no|yes"
    

  2. Получите UUID задачи из ответа.

  3. Отслеживайте выполнение

    checker procedure status show --uuid <UUID>
    

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

Анализ проблем

  • Используйте параметр --json yes для машинночитаемого вывода ошибок.
  • Проверяйте логи через команду checker procedure status show.

  • Убедитесь, что процедура делегирована в ваш ВЦОД. Если ее нет в списке при планировании, обратитесь к администратору кластера.

  • Проверьте корректность cron-выражения.


Дополнительная информация

  1. YAML-структуры процедур. Описание того, как устроены процедуры для общего понимания. Создание процедур выполняет администратор кластера.
  2. Примеры процедур. Готовые процедуры, которые вы можете использовать в своем ВЦОД после делегирования.

Термины и определения содержатся в статьях: