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 минуту, умноженная на 100la5— средняя нагрузка за 5 минут, умноженная на 100la15— средняя нагрузка за 15 минут, умноженная на 100app_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— текущее время Unixinstance— настройка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- выход мультиплекса потока MPTStimestamp— время Unix выборки.0, если вход запущен и выборки ещё нетonair— вывод анализатора:false, если битрейт полезной нагрузки ниже ожидаемого минимума, PID видео или аудио зашифрован или имел больше 2 ошибок PES, или достигнут предел ошибок CCbitrate— Кбит/сpackets— принятые TS-пакетыpes_packets— пакеты видео и аудио, с которых начинается PES-пакетpes_error— пакеты изpes_packets, чья полезная нагрузка не начинается с заголовка PESsc_error— зашифрованные TS-пакетыcc_error— ошибки CCsync_error— всегда0video_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, сырые единицы драйвера с опциейdvbapi3signal_db,snr_db— децибелы, умноженные на 100.0с опциейdvbapi3ber,unc— битовые ошибки и неисправленные блоки, как сообщает драйверbitrate— Кбит/с, принятые за последнюю секунду
У адаптера SAT>IP или виртуального адаптера нет frontend: lock - состояние в эфире, bitrate - скорость его транспорта, status и поля сигнала равны 0. Адаптер SAT>IP и адаптер по адресу в эфире, когда за последнюю секунду пришли пакеты. Адаптер CI - когда за последнюю секунду поток прошёл через CAM и CAM готов.
Сессия сканирования не добавляет элемент: сканирование настроенного адаптера, например dvb://a002 или объект dvb с id адаптера, читает собственный элемент этого адаптера. Адаптер, который сканирование настраивает своими параметрами без id, статистику не собирает.
Перезапуск Astra
Заголовок раздела «Перезапуск Astra»Запрос: POST /control/
{ "cmd": "restart"}