×

Модуль - Оркестратор

user_manual  2025-08-18
 
Документация по модулю "Оркестратор"
  • Содержание
  • Общее описание
  • Настройка модуля
  • Структура файлов
  • Глобальные настройки
  • Макросы (vars)
  • Добавление юнитов
  • Консольные команды
  • HTTP API
  • GET /api/system_load
  • GET /api/units_state
  • POST /api/units_act/start, /api/units_act/stop
  • POST /api/unit_settings
  • POST /api/unit_act/start, /api/unit_act/stop, /api/unit_act/reload
 
Общее описание
Модуль "Оркестратор" предназначен для управления запуском, остановкой и мониторингом состояния сервисных юнитов через конфигурационный файл и HTTP API.
 
Настройка модуля

Структура файлов
Конфигурационные файлы должен находиться по пути ${BinPath}/orchestrator-config/. Файлы юнитов должны иметь расширение .orch, а глобальные настройки хранятся в файле global.settings.
 
Глобальные настройки
Глобальные настройки хранятся в файле global.settings, который содержит настройки модуля, глобальные настройки для юнитов и макросы. Такой файл должен быть только один.
 
Структура файла с глобальными настройками:
<configuration>
    <debug_log>true</debug_log>
    <http_port>8847</http_port>
    <vars>
        <var id="prj">/home/entek/SCADA/main.epr</var>
        <var id="src">/opt/entek/bin/</var>
        <var id="ascue">noascue</var>
    </vars>
    <unit_global_settings>
        <restart delay="30">always</restart>
    </unit_global_settings>
</configuration>
 
  • <debug_log> — включает подробный лог (true/false).
  • <http_port> — порт HTTP API (по умолчанию 8847).
  • <vars> — раздел, в котором задаются макросы.
  • <unit_global_settings> — глобальные параметры для всех юнитов:
  • <restart delay="30">always</restart> — тип перезапуска (always или no), задержка в секундах.
  • <auto-start use="false"></auto-start> — старт юнитов при запуске Оркестратора.
   По умолчанию use="true".
 
Макросы (vars)
В секции <vars> можно определить переменные, которые далее используются в командах юнитов
через $имя$.
 
Пример:
<vars>
    <var id="src">/opt/entek/bin/</var>
    <var id="prj">/home/entek/SCADA/main.epr</var>
</vars>
 
В команде юнита $src$rest-srv $prj$ будет заменено на /opt/entek/bin/rest-srv /home/entek/SCADA/main.epr.
 
Добавление юнитов
Каждый юнит описывается в отдельном файле и имеет следующую структуру:
<unit name="REST-сервер">
    <exec>$src$rest-srv $prj$</exec>
    <restart delay="30">always</restart> <!-- Необязательно, если есть
глобальные настройки -->
</unit>
 
name — уникальное имя юнита.
<exec> — команда запуска (с поддержкой макросов).
<restart> — индивидуальные параметры перезапуска (опционально).
<auto-start> — индивидуальные параметры старта юнита при запуске (опционально).
 
 
Название файлов юнитов необходимо задавать по шаблону <пользовательское название>.orch,
используя только латинские символы. Например rest.orch.
 
Консольные команды

Консольные команды предназначены для взаимодействия с сервисом Оркестратора через консоль.
Доступно управление юнитами, получение статуса всех юнитов, глобальная остановка/запуск юнитов
и другие.
 
Описание аргументов консольных команд
 
Аргумент
Назначение
help
Показать подсказку
status
Показать статус. В аргументах передать название юнита или '-all' для всех юнитов
start
Запустить юнит. В аргументах передать название юнита или '-all' для всех юнитов
stop
Остановить юнит. В аргументах передать название юнита или '-all' для всех юнитов
restart
Перезапустить юнит по имени
reload
Обновить настройки всех юнитов (включает запуск юнитов, у которых стоит авто старт)
-daemon
 Запустить Оркестратор как демон/сервис
-console
 Запустить Оркестратор в режиме консоли
 
 
Пример команд:
# получить статус всех юнитов
./orchestrator status -all
 
# остановить юнит REST-сервер
./orchestrator status "REST-сервер"
 
Примечание: Названия юнитов необходимо заключать в кавычки. Команды выполняются из
директории, в которой расположен исполняемый файл модуля Оркестратор.
 
HTTP API

GET /api/system_load
Назначение: Получить текущую загрузку системы (CPU, память, сеть).
 
Пример запроса:
GET /api/system_load
 
 
Пример ответа:
{
  "cpu_usage": 12.5,
  "mem_usage": 34.2,
  "net_usage": {
    "rx_bytes": 123456,
    "tx_bytes": 654321
  }
}
 
GET /api/units_state
Назначение: Получить список всех юнитов и их состояния.
 
Пример запроса:
GET /api/units_state
 
Пример ответа:
[
  {
    "name": "REST-сервер",
    "filename": "rest.orch",
    "state": "running",
    "stateCode": 1,
    "action": "none",
    "cmd": "/opt/entek/bin/rest-srv",
    "args": ["/home/entek/SCADA/main.epr"],
    "restart_type": 0,
    "restartDelay": 30,
    "stop_time": "0",
    "start_time": "0"
  },
  ...
]
 
POST /api/units_act/start, /api/units_act/stop
Назначение: Запустить или остановить все юниты (только с localhost).
 
Пример запроса:
POST /api/units_act/start
 
или
POST /api/units_act/stop
 
Тело запроса: не требуется.
 
Пример ответа:
HTTP/1.1 200 OK
 
POST /api/unit_settings
Назначение: Получить настройки конкретного юнита.
 
Пример запроса:
POST /api/unit_settings
Content-Type: application/json
 
{
  "name": "REST-сервер"
}
 
Пример ответа:
{
  "name": "REST-сервер",
  "filename": "rest.orch",
  "state": "running",
  "stateCode": 1,
  "action": "none",
  "cmd": "/opt/entek/bin/rest-srv",
  "args": ["/home/entek/SCADA/main.epr"],
  "restart_type": 0,
  "restartDelay": 30,
  "stop_time": "0",
  "start_time": "0"
}
 
 
POST /api/unit_act/start, /api/unit_act/stop, /api/unit_act/reload
Назначение: Запустить, остановить или перезапустить конкретный юнит (только с localhost).
 
Пример запроса:
POST /api/unit_act/start
Content-Type: application/json
 
{
  "name": "REST-сервер"
}
 
или
POST /api/unit_act/stop
Content-Type: application/json
 
{
  "name": "REST-сервер"
}
 
или
POST /api/unit_act/reload
Content-Type: application/json
 
{
  "name": "REST-сервер"
}
 
Пример ответа:
HTTP/1.1 200 OK
 
Примечание: Все действия управления (start/stop/reload/restart) доступны только с локального
адреса (localhost/127.0.0.1).