Перейти к содержимому

Process Status API

В Astra вы можете управлять процессом и контролировать его статус с помощью HTTP API методов.

Запрос: POST /control/

{ "cmd": "status" }

В ответе есть поле cpu_power_save. Оно равно true, если политика масштабирования частоты удерживает процессор ниже частоты, на которую он способен. Значение читается при запуске и раз в минуту.

Статистика CPU, памяти и времени работы. t равный 0 - последняя выборка. Без t - отчёт за последний интервал. Тот же метод доступен как GET /api/system-status.

Запрос: POST /control/

{
"cmd": "system-status",
"t": 0
}
  • t — число, необязательно. 0 — последняя выборка, 1 — отчёт за последний интервал. По умолчанию 1. В POST /control/ передайте t в теле JSON, в GET /api/system-status - в параметре запроса. Десятичная числовая строка читается как число, любое другое значение считается как 1.

Ответ:

{
"timestamp": 0,
"instance": "...",
"la1": 0,
"la5": 0,
"la15": 0,
"app_threads": 1,
"sys_cpu_usage": 0,
"app_cpu_usage": 0,
"sys_mem_usage": 0,
"app_mem_usage": 0,
"app_mem_kb": 0,
"sys_uptime": 0,
"app_uptime": 0
}
  • timestamp — время Unix: для t=1 время создания отчёта, для t=0 время последней выборки, 0 до первой выборки
  • instance — имя экземпляра, если задано в Настройки → Общие → Имя экземпляра
  • la1 — средняя нагрузка за 1 минуту, умноженная на 100
  • la5 — средняя нагрузка за 5 минут, умноженная на 100
  • la15 — средняя нагрузка за 15 минут, умноженная на 100
  • app_threads — количество потоков
  • sys_cpu_usage — общая загрузка CPU. Может быть до: 100, умноженное на количество ядер всех процессоров
  • app_cpu_usage — загрузка CPU процессом и всеми потоками
  • sys_mem_usage — общее использование оперативной памяти
  • app_mem_usage — использование оперативной памяти процессом и всеми потоками
  • app_mem_kb — использование оперативной памяти процессом и всеми потоками в килобайтах
  • sys_uptime — общее время работы системы в секундах
  • app_uptime — время работы процесса в секундах

Числовое t, отличное от 0 и 1, возвращает HTTP 200 с ошибкой:

{ "system-status": "er", "error": "not implemented" }

Последняя секундная статистика всех потоков и адаптеров и последняя выборка системы одним запросом. Тот же метод доступен как GET /api/monitoring. Встроенный веб-интерфейс опрашивает этот метод раз в секунду для панели.

Запрос: POST /control/. Роли control и observer.

{ "cmd": "monitoring" }

Ответ:

{
"timestamp": 1758268800,
"instance": "streamer-1",
"system": {
"timestamp": 1758268795,
"la1": 45,
"la5": 40,
"la15": 38,
"app_threads": 12,
"sys_cpu_usage": 12,
"app_cpu_usage": 3,
"sys_mem_usage": 31,
"app_mem_usage": 1,
"app_mem_kb": 163184,
"sys_uptime": 14400,
"app_uptime": 60
},
"streams": [
{
"id": "a001",
"name": "Channel 1",
"input_id": 1,
"sessions": 3,
"inputs": [
{
"input_id": 1,
"timestamp": 1758268800,
"onair": true,
"bitrate": 4210,
"packets": 2799,
"pes_packets": 75,
"pes_error": 0,
"sc_error": 0,
"cc_error": 0,
"sync_error": 0,
"video_count": 1,
"audio_count": 1
},
{
"input_id": 2,
"timestamp": 0,
"onair": false,
"bitrate": 0,
"packets": 0,
"pes_packets": 0,
"pes_error": 0,
"sc_error": 0,
"cc_error": 0,
"sync_error": 0,
"video_count": 0,
"audio_count": 0
}
]
},
{
"id": "m001",
"name": "Multiplex 1",
"input_id": 0,
"sessions": 0,
"inputs": [
{
"input_id": 0,
"timestamp": 1758268800,
"onair": true,
"bitrate": 38000,
"packets": 0,
"pes_packets": 0,
"pes_error": 0,
"sc_error": 0,
"cc_error": 0,
"sync_error": 0,
"video_count": 0,
"audio_count": 0
},
{
"input_id": 1,
"timestamp": 1758268800,
"onair": true,
"bitrate": 41000,
"packets": 27260,
"pes_packets": 820,
"pes_error": 0,
"sc_error": 0,
"cc_error": 0,
"sync_error": 0,
"video_count": 9,
"audio_count": 14
}
]
}
],
"adapters": [
{
"id": "a002",
"name": "Astra 19.2E",
"timestamp": 1758268800,
"lock": true,
"status": 31,
"signal": 78,
"signal_db": -4520,
"snr": 62,
"snr_db": 1380,
"ber": 0,
"unc": 0,
"bitrate": 41000
},
{
"id": "a006",
"name": "SAT>IP 1",
"timestamp": 1758268800,
"lock": true,
"status": 0,
"signal": 0,
"signal_db": 0,
"snr": 0,
"snr_db": 0,
"ber": 0,
"unc": 0,
"bitrate": 38500
}
]
}

У запроса нет параметров. Все значения ответа читаются в один момент. Выборки потоков и адаптеров обновляются каждую секунду, выборка системы - каждые 10 секунд. Потоки и адаптеры с no_event не собирают статистику и отсутствуют в ответе.

  • timestamp — текущее время Unix
  • instance — настройка instance_name. Нет в ответе, если не задана
  • system — последняя выборка системы: поля Статуса системы при t, равном 0, без instance. Её timestamp - время этой выборки. Все значения равны 0 до первой выборки
  • streams — работающие потоки, см. Статистика потоков
  • adapters — работающие адаптеры, см. Статистика адаптеров

Каждый элемент streams - включённый поток SPTS или MPTS с полем id. Поток по запросу тоже есть в списке, пока ни один клиент не подключён, но без входов.

  • id — идентификатор потока
  • name — имя потока
  • input_id — вход-источник, чьи значения возвращает Получить статус потока. 0, пока ни один вход не является источником, и у потока MPTS, чей источник - вход 0, выход мультиплекса
  • sessions — число клиентских сессий на потоке, посчитанное при закрытии последнего интервала мониторинга (настройка tsdb_interval)
  • inputs — работающие входы по возрастанию input_id: вход есть в списке от запуска до остановки. Пусто, пока ни один вход не работает

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

  • input_id — номер входа: позиция в списке input потока, начиная с 1. 0 - выход мультиплекса потока MPTS
  • timestamp — время Unix выборки. 0, если вход запущен и выборки ещё нет
  • onair — вывод анализатора: false, если битрейт полезной нагрузки ниже ожидаемого минимума, PID видео или аудио зашифрован или имел больше 2 ошибок PES, или достигнут предел ошибок CC
  • bitrate — Кбит/с
  • packets — принятые TS-пакеты
  • pes_packets — пакеты видео и аудио, с которых начинается PES-пакет
  • pes_error — пакеты из pes_packets, чья полезная нагрузка не начинается с заголовка PES
  • sc_error — зашифрованные TS-пакеты
  • cc_error — ошибки CC
  • sync_error — всегда 0
  • video_count, audio_count — число PID видео и аудио

Вход с no_analyze не имеет анализатора: в списке у него timestamp равен 0 и все значения равны 0.

У потока MPTS вход 0 - выход мультиплекса и источник потока: onair равен true, bitrate - Кбит/с, которые мультиплексор отдал за последнюю секунду, остальные значения равны 0. Входы с 1 и выше - входы мультиплекса со значениями их анализаторов.

Каждый элемент adapters - работающий адаптер с id: адаптер с type frontend, адаптер SAT>IP или виртуальный адаптер (см. Конфигурация адаптера).

  • id — идентификатор адаптера
  • name — поле name адаптера или его id, если имя не задано
  • timestamp — время Unix выборки. 0 до первой выборки
  • lock — true, если frontend сообщил о захвате. Для SAT>IP или виртуального адаптера: true, пока он в эфире
  • status — биты состояния frontend: 0x01 сигнал, 0x02 несущая, 0x04 внутреннее кодирование FEC, 0x08 синхронизация, 0x10 захват, 0x20 таймаут, 0x40 повторная инициализация. 0 (и lock равен false) в секунду, когда watchdog адаптера его остановил
  • signal, snr — уровень сигнала и отношение сигнал/шум, как сообщает драйвер: проценты при статусе DVB API v5, сырые единицы драйвера с опцией dvbapi3
  • signal_db, snr_db — децибелы, умноженные на 100. 0 с опцией dvbapi3
  • ber, unc — битовые ошибки и неисправленные блоки, как сообщает драйвер
  • bitrate — Кбит/с, принятые за последнюю секунду

У адаптера SAT>IP или виртуального адаптера нет frontend: lock - состояние в эфире, bitrate - скорость его транспорта, status и поля сигнала равны 0. Адаптер SAT>IP и адаптер по адресу в эфире, когда за последнюю секунду пришли пакеты. Адаптер CI - когда за последнюю секунду поток прошёл через CAM и CAM готов.

Сессия сканирования не добавляет элемент: сканирование настроенного адаптера, например dvb://a002 или объект dvb с id адаптера, читает собственный элемент этого адаптера. Адаптер, который сканирование настраивает своими параметрами без id, статистику не собирает.

Запрос: POST /control/

{
"cmd": "restart"
}