Модуль - Оркестратор
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).
|