Micromanager - универсальный менеджер процессов транскодирования и VOD¶
Содержание:
1. Описание¶
Micromanager - гибкий менеджер процессов, ориентированный на процессы обработки видеопотоков. Является удобным средством для управления и мониторинга процессами транскодера ffmpeg, сегментера HLS и другими.
Кроме того, micromanager обладает функциями для управления каталогом VOD с функцией инжестирования контента, в т.ч. транскодирования файлов в необходимый формат.
2. Установка, конфигурация и использование¶
Для работы micromanager необходимо наличие установленных библиотек libjsonrpc, libjson.
Micromanager, а также все сопутствующие пакеты и необходимые библиотеки совместимых версий, поставляются в виде установочных deb-пакетов и устанавливаются утилитой dpkg. См. Где взять.
Для запуска micromanager используется init.d скрипт: /etc/init.d/micromanager
:
$ /etc/init.d/micromanager
Usage: /etc/init.d/micromanager {start|stop|restart|force-reload|reload}
Файлы логов по умолчанию сохраняются в /var/log/micromanager/micromanager.log
,
включена ротация логов через logrotate.d
2.1 Где взять¶
- Для всех
- Скачать необходимые инсталляционные пакеты можно в официальном техническом сообществе Microimpuls по ссылке http://forum.micro.im/ в разделе “Дистрибутивы и обновления ПО”.
- Для инженеров Microimpuls
- При установке ПО на сервер через систему оркестровки все необходимые установочные пакеты актуальных версий скачиваются из репозитория автоматически.
2.2 Конфигурация¶
Файл конфигурации находится в /etc/micromanager/micromanager.conf
,
задаётся в формате JSON. Пример:
{
"log-syslog": false,
"log-path": "/var/log/micromanager/micromanager.log",
"log-facility": 0,
"log-verbose-level": 4,
"log-foreground": true,
"log-state-path": "/var/log/micromanager/state.log",
"log-state-period": 0,
"json-rpc-enabled": true,
"json-rpc-listen-host": "0.0.0.0",
"json-rpc-listen-port": 7089,
"run-cmd": "%transcoder% -i %src% %ffmpeg-params% -f mpegts udp://@%dsthost%:%dstport%?pkt_size=%payloadsize%",
"run-cmd-presets": [
{
"name": "custom-preset",
"run-cmd": "/usr/local/bin/ffmpeg -i %src% %ffmpeg-params% -f mpegts udp://@%dsthost%:%dstport%?pkt_size=%payloadsize%"
}
],
"run-link-stderr": false,
"transcoder-path": "/usr/local/bin/ffmpeg",
"ffprobe-path": "/usr/local/bin/ffprobe",
"vod-directory": "/opt/storage/vod",
"vod-ingest-directory": "/opt/storage/vod_ingest/",
"vod-ingestion-path-checking-period": 15,
"vod-ffmpeg-use-progress": false,
"vod-default-naming-template": "/%preset_name%/%src_path_wo_ext%.mp4",
"vod-ingestion-limit": 10,
"vod-distribution-limit": 10,
"vod-archive-limit": 10,
"process-memory-limit": 512000,
"process-cpu-limit": 0,
"processes-to-watch": [
{ "name": "ffmpeg", "memory-limit": 512000, "cpu-limit": 150 },
],
"low-bitrate-limit": 150000,
"low-bitrate-checks": 30,
"fail-max-probing": 5,
"priority": 0,
"streams": [
{
"name": "Stream 1",
"enabled": true,
//"timeout": 0, // seconds
//"autostart": true,
//"run-cmd-preset": "",
//"run-cmd": "",
//"process-memory-limit": 1024000,
//"process-cpu-limit": 250,
"priority": 1,
"src": [
{
"name": "ABS-1 stream 1",
"enabled": true,
"params": [
{ "name": "src", "value": "udp://@239.1.1.1:1234" },
{ "name": "ffmpeg-params", "value": "" },
// other keys for replacement
]
}
],
"dst": "239.0.0.5 1234 multicast udp",
//"m3u8-playlist": "/tmp/playlist.m3u8",
"payload-size": 1316
}
]
}
2.2.1 Основные параметры¶
- log-syslog
bool
- Использовать ли службу syslogd для записи логов в /var/log/syslog. Не рекомендуется включать при интенсивном логировании.
- log-facility
int
- Тег в syslog.
- log-path
str
- Путь до лог-файла для логирования напрямую без syslogd.
- log-verbose-level
int
- Уровень логирования от 0 до 5, 5 - максимальный DEBUG уровень.
- log-foreground
bool
- Вывод лога в stdout.
- log-state-period
int
- Период записи лога состояния в минутах. При значении 0 запись отключается. По умолчанию 0.
- log-state-path
str
- Путь до файла в который будет записываться лог состояния.
- json-rpc-enabled
bool
- Включает интерфейс JSON RPC API. Позволяет осуществлять мониторинг и управление процессами.
- json-rpc-listen-host
str
- Адрес интерфейса для ожидания входящих подключений к JSON RPC API. Значение “0.0.0.0” означает слушать на всех интерфейсах.
- json-rpc-listen-port
int
- Номер порта TCP для JSON RPC API, по умолчанию 7089.
- run-cmd
str
- Строка запуска процесса транскодирования, например ffmpeg. В строке запуска можно использовать переменные вида
%param%
, вместо этих переменных в момент запуска транскодера будут подставлены соответствующие значения, см. params. Вместо переменной%transcoder%
будет подставлено значение transcoder-path. - run-cmd-presets
list
- Дополнительные варианты команд запуска транскодера. Формат пресета команды описан в run-cmd-presets.
- run-link-stderr
bool
С версии 1.4.5
Для перехвата сообщений об ошибках ffmpeg рекомендуется использовать перенаправление вывода с параметром -nostats вместо данной функции.
Включает перехват потока stderr при запуске процесса. Если при завершении процесс вернёт код, отличный от 0, то из stderr будет прочитано не более 500 байт и записано в лог. Перехват производится только для процессов инжестирования и дистрибьюции. По умолчанию false.
- transcoder-path
str
- Путь до процесса транскодера, например /usr/local/bin/ffmpeg.
- ffprobe-path
str
- Путь до ffprobe или avprobe. Используется для определения мета-информации о видео-файле для VOD.
- vod-directory
str
- Путь до директории VOD, в которой размещаются файлы видеотеки. По умолчанию /var/vod/.
- vod-ingest-directory
str
- Путь до директории инжестирования. В этой директории с заданной периодичностью micromanager проверяет появление новых файлов и запускает для них процесс инжестирования - добавления в каталог VOD. По умолчанию /var/vod_ingest/.
- vod-delete-after-autoingestion
bool
С версии 1.4.3
Если true, то после успешного автоматического инжестирования исходный файл будет удаляться. Удаления также не будет в случае, если была какая-либо ошибка в ходе дистрибьюции. По умалчанию false.
- vod-ingestion-path-checking-period
int
- Период проверки директории vod-ingest-directory, задаётся в секундах. При значении 0 автоматическая проверка не осуществляется, однако возможен запуск инжестирования через API.
- vod-ffmpeg-use-progress
bool
- Включает экспериментальную возможность использования параметра -progress для получения более подробной информации о процессе инжестирования.
- vod-default-naming-template
str
Шаблон имени файла в каталоге VOD после инжестирования. Доступны переменные:
%preset_name%
- название пресета из run-cmd-presets, использоуемого при инжестировании, либо default, если был использован пресет по-умолчанию;%src_full_path_wo_ext%
- путь до исходного файла внутри каталога vod-ingest-directory без расширения;%src_full_path%
- полный путь до исходного файла внутри каталога vod-ingest-directory;%src_name%
- имя исходного файла без расширения;%src_dir%
- директория, в которой находится исходный файл относительно каталога vod-ingest-directory.
Пример:
/%preset_name%/%src_full_path_wo_ext%.ts
.- vod-distribution-enabled
bool
С версии 1.4.5
Включает дистрибьюцию ассета после успешного завершения инжестирования. По умолчанию false.
- vod-default-distribution-template
str
С версии 1.4.5
Шаблона процесса дистрибьюции. По умолчанию
"scp %parameters% %full_path% %address%:%destination%"
. Доступны следующие переменные: -%file_name%
- имя ассета без пути, сгенерированное при запуске инжестирования; -%full_path%
- полный путь до инжестированного ассета, сгенерированный при запуске из шаблона именования, совпадает с параметром %dstpath% в шаблоне команды инжестирования; -%preset_name%
- имя пресета, использованного при инжестировании, или default если был использован пресет по-умолчанию; -%address%
- поле адреса; -%parameters%
- дополнительные параметры команды.Параметры
%parameters%
,%address%
и%destination%
- vod-distribution-addresses
list
С версии 1.4.5
Список адресов дистрибьюции. Формат описан в vod-distribution-addresses.
- vod-ingestion-limit
int
С версии 1.7.0
Максимальное количество одновременно выполняемых задач инжестирования. Если -1, то неграниченно. По умолчанию -1.
- vod-distribution-limit
int
С версии 1.7.0
Максимальное количество одновременно выполняемых задач дистрибьюции. Если -1, то неграниченно. По умолчанию -1.
- vod-archive-limit
int
С версии 1.7.0
Если больше нуля, то определяет количество последних выполненных или отменнённых задач, о которых micromanager будет сохранять информацию. По умолчанию 0.
- process-memory-limit
int
- Лимит потребляемой оперативной памяти в байтах для основного процесса micromanager. По достижению этого лимита процессы транскодирования будут перезапущены.
- process-cpu-limit
int
- Лимит потребляемых ресурсов процессора в процентах для основного процесса micromanager. По достижению этого лимита процессы транскодирования будут перезапущены.
- processes-to-watch
list
- Список процессов, за потреблением CPU и Memory которых будет следить micromanager. Формат описан в processes-to-watch.
- low-bitrate-limit
int
- Порог битрейта выходного потока в bps, ниже которого micromanager примет решение о том, что возникла ошибка и перезапустит процесс транскодера.
- low-bitrate-checks
int
- Количество проверок битрейта выходного потока ниже порогового значения, перед тем как принять решение об ошибке.
- fail-max-probing
int
- Количество проверок отсутствия выходного потока, после которого процесс транскодирования будет перезапущен.
- priority
int
- Приоритет процесса в ОС, 0 - автоматический приоритет по выбору ОС.
- streams
list
- Список транскодируемых потоков. Для каждого потока будет запущен инстанс транскодера по команде run-cmd, либо, если для потока определен run-cmd-preset, то команда из соответствующего пресета. Формат описан в streams.
- score-max-cpu-la1
float
С версии 1.4.5
Максимальное значение средней загрузки вычислительных ресурсов за 1 минуту (CPU LA1).
2.2.2 Описание параметра run-cmd-presets¶
- name
str
- Название пресета, имя default является зарезервированным и не рекомендуется к использованию.
- run-cmd
str
- Команда запуска, идентично run-cmd.
- naming-template
str
- Шаблон имени выходного файла, если пресет используется для транскодирования файла при инжестировании. Идентично vod-default-naming-template. Если данный параметр не задан для пресета, то будет использоваться шаблон по-умолчанию.
- distribution-template
str
- Шаблона процесса дистрибьюции. Аналогично vod-default-distribution-template. Если данный параметр не задан для пресета, то будет использоваться шаблон по-умолчанию.
Примечание: пресет по умолчанию - это пресет, составленный из параметров run-cmd, vod-default-naming-template и vod-default-distribution-template. Имеет имя default и может быть использован при инжестировании.
2.2.3 Описание параметра processes-to-watch¶
- name
str
- Имя процесса, например ffmpeg. Отслеживание происхдит через команду
ps
. - memory-limit
int
- Лимит потребляемой оперативной памяти для процесса, задаётся в байтах. По достижению лимита процесс будет убит.
- cpu-limit
int
- Лимит потребляемых ресурсов процессора для процесса, задаётся в процентах. По достижению лимита процесс будет убит.
2.2.4 Описание параметра streams¶
Каждому потоку присваивается номер в порядке упоминания его в конфигурации, причём самый первый поток имеет номер 0. Данный номер используется в лог-файле, а также при управлении потоками через API.
- name
str
- Название потока.
- enabled
bool
- Флаг, означающий включен ли процесс транскодирования потока. При значении false процесс для данного потока не будет запущен. По умолчанию true.
- autostart
bool
- Определяет, необходимо ли автоматически запускать процесс транскодирования, либо запускать только по запросу через API. Используется для экономии ресурсов транскодера. По умолчанию true.
- timeout
int
- Определяет таймаут в секундах, после которого в случае неактивности (отсутствия запросов на запуск потока через API) процесс будет остановлен. По умолчанию 0.
- run-cmd-preset
str
- Имя пресета команды запуска транскодера из списка run-cmd-presets. По умолчанию - пустое значение, используется команда из run-cmd.
- run-cmd
str
- Переопределяет параметр run-cmd для конкретного процесса данного потока. По умолчанию - пустое значение.
- process-memory-limit
int
- Переопределяет параметр process-memory-limit для конкретного процесса данного потока. По умолчанию не определен.
- process-cpu-limit
int
- Переопределяет параметр process-cpu-limit для конкретного процесса данного потока. По умолчанию не определен.
- priority
int
- Переопределяет параметр priority для конкретного процесса данного потока. По умолчанию не определен.
- src
list
- Список источников для потока. При задании нескольких источников micromanager будет переключать транскодер на следующий источник при возникшей проблеме в текущем. Механизм можно использовать для резервирования. Формат описан в src.
- dst
str
- Выходной адрес потока. За данным потоком micromanager будет следить, контролируя таким образом работу транскодера. Формат dst описан в документации microporter/libmedia
- m3u8-playlist
str
- Путь до m3u8-плейлиста, который генерирует сегментер. Если не задан dst, но задан этот параметр, то micromanager будет осуществлять проверку существования плейлиста и его обновления новыми чанками и на основании этого делать вывод статусе потока.
- payload-size
int
- Размер одного пакета Multicast-потока. По умолчанию 1316.
2.2.4.1 Описание параметра src¶
- name
str
- Название источника.
- enabled
bool
- Флаг, определяющий, включен ли источник. По умолчанию true.
- params
list
- Список параметров для процесса транскодера. Значения параметров подставляются в строку запуска транскодера в виде
переменных
%название_параметра%
. Формат описан в params.
2.2.4.2 Описание поля params¶
- name
str
- Название параметра.
- value
str
- Значение параметра.
2.2.5 Описание параметра vod-distribution-addresses¶
- enabled
bool
- Включает использование данного адреса при дистрибьюции.
- address
str
- Поле %address% шаблона процесса.
- parameters
str
- Поле %parameters% шаблона процесса.
- destination
str
- Поле %destination% шаблона процесса.
Например, при шаблоне scp %parameters% %full_path% %address%:%destination%/%preset_name%/
, пути до файла ассета /var/vod/default/file.ts
,
использовании пресета по умолчанию и следующих параметрах адреса:
"vod-distribution-addresses": [
{
"enabled": true,
"address": "user@127.0.0.1",
"destination": "/var/vod/files",
"parameters": "-i /home/.ssh/id_rsa"
}
]
команда дистрибьюции будет выглядеть как scp -i /home/.ssh/id_rsa /var/vod/default/file.ts user@127.0.0.1:/var/vod/files/default/
.
Примечание 1: дистрибьюция производится последовательно по каждому адресу после окончания инжестирования. Если дистрибьюция по одному из адресов была завершена с ошибкой (дочерний процесс вернул не 0), то дальшейшая обработка ассета будет приостановлена, инжестирование будет считаться неуспешным.
Примечание 2: при использовании scp для дистрибьюции необходимо внести хост в список известных у ssh-клиента.
3. Логирование¶
3.1. Основной лог-файл¶
micromanager.log - основной лог-файл. Сообщения имеют вид:
%timestamp% %log_level% %function%[%PID%]: %message%
Пример:
Thu Mar 30 17:30:52 2017 INFO ingestion_thread_handler[29731]: (ED.mp4) ingestion process thread stopped
Возможные уровни сообщений в порядке увеличения детализированности лога (каждый следующий уровень включает в себя предыдущие уровни):
- CRITICAL - критические ошибки, влияющие непосредственно на работу процесса micromanager: ошибки вызова fork(), popen() и link(), обработки сигналов и прочее.
- ERROR - значительные ошибки: ошибки чтения конфигурации, ошибки работы дочерних процессов (в т.ч. ненулевой код возврата), работы с сетью и др.
- WARNING - предупреждения: ошибки вызова API, сообщения о перезапуске задачи из-за ошибки и др.
- INFO и NOTICE - информационные сообщения.
- DEBUG - малозначительные сообщения, полезные для отладки.
Список некоторых возможных сообщений приведён в разделе Список возможных кодов и сообщений лога micromanager.
3.2. Лог состояния¶
Если параметр log-state-period больше нуля, то micromanager с заданной периодичностью в минутах будет вести лог состояния.
Вид записей лога:
Log OK: 28/09 06:24:49
Mem used: 3790604 KiB, mem free: 267952 KiB
Swap used: 25728 KiB, swap free: 8359804 KiB
CPU load: 6.0%
In VoD directory: 255539 MiB free
__________________________________________________________________________________________________________________________________
| NAME | ENABLE| SRC | DST | STATE | BITRATE | STOP TIME |
----------------------------------------------------------------------------------------------------------------------------------
| Еврокино | true | udp://@239.1.2.3:5000 | 239.120.0.6 1234 multicast udp | NOT_RUNNING | - | - |
________________________________________
| PATH |
----------------------------------------
| Sintel |
| ED.avi |
| failfile |
Каждая запись лога состояния содержит две таблицы: таблицу потоков и список файлов в директории ожидания (по умоллчанию /var/vod_ingest).
Поля таблицы потоков:
- NAME - Имя потока.
- ENABLE - true, если поток включен.
- SRC - Источник потока.
- DST - Исходящий адрес потока.
- STATE - Статус потока (RUNNING, NOT_RUNNING, NO_STREAM_DATA, NO_PLAYLIST, NOT_SEGMENTING).
- BITRATE - Текущий битрейт потока.
- STOP TIME - Время, когда будет остановлен поток.
A. Описание JSON-RPC API¶
A.1 Описание методов JSON-RPC API¶
get_stream_list¶
Получает список потоков.
Возвращает список объектов со следующими полями:
Название | Тип | Описание |
---|---|---|
id | int | Номер потока |
name | str | Имя потока |
enabled | bool | true, если поток активен |
src-index | int | Порядковый номер используемого источника |
autostart | bool | true, если включен запуск потока на старте micromanager |
timeout | int | Время в секундах, через которое поток будет остановлен после запуска |
stop-timestamp | int | Время в формате UNIX-timestamp, в которое поток будет остановлен |
src | str | Адрес текущего источника |
uptime | int | Время непрерывной работы в секундах |
bitrate | int | Текущий битрейт в байтах в секунду |
state | str | Статус потока. |
Возможные значения поля state:
- NOT_RUNNING;
- RUNNING;
- NO_STREAM_DATA;
- NO_PLAYLIST;
- NOT_SEGMENTING;
- INCORRECT_CONFIG;
- UNKNOWN.
start_stream¶
Запускает поток.
Параметры:
- id - номер потока, тип int.
Возвращает строку с результатом вызова метода. Возможные значения:
- stream started;
- bad stream id.
stop_stream¶
Останавливает поток.
Параметры:
- id - номер потока, тип int.
Возвращает строку с результатом вызова метода. Возможные значения:
- stream stopped;
- bad stream id.
reboot_stream¶
Перезапускает поток.
Параметры:
- id - номер потока, тип int.
Возвращает строку с результатом вызова метода. Возможные значения:
- stream rebooted;
- bad stream id.
switch_source¶
Переключает источник потока.
Параметры:
- id - номер потока, тип int.
Возвращает строку с результатом вызова метода. Возможные значения:
- transcoding source switched;
- no more sources;
- bad stream id.
get_statistics¶
Получает статистику работы micromanager.
Возвращает объект со следующими полями:
Название | Тип | Описание |
---|---|---|
pid | int | PID процесса micromanager |
streams-count | int | Общее количество видеопотоков |
running-count | int | Количество запущенных видеопотоков |
threads-count | int | Количество запущенных вычислительных потоков в процессе micromanager |
mem-usage | int | Количество ОЗУ, потребляемое процессом micromanager и процессами видеопотоков в МиБ |
cpu-usage | float | загрузка CPU процессом micromanager и процессами видеопотоков |
uptime | int | Время непрерывной работы процесса micromanager в секундах |
bitrate | int | Суммарный битрейт всех запущенных видеопотоков |
result | str | Всегда равно “success” |
get_config¶
Запрашивает конфигурацию в виде JSON-объекта.
Коды ошибок:
Код | Описание |
---|---|
201 | Файл конфигурации не задан |
224 | Ошибка чтения файла конфигурации |
set_config¶
Изменяет и применяет конфигурацию.
Параметры:
Название | Тип | Описание | Обязательный | Ограничения |
---|---|---|---|---|
config | obj | Конфигурация в виде JSON-объекта | Да |
Возвращаемое значение всегда равно “ok”.
Коды ошибок:
Код | Описание |
---|---|
100 | Отсутствует объект params |
101 | Пропущен параметр config |
109 | Некорректная кофигурация |
220 | Ошибка резервного копирования файла конфигурации |
221 | Ошибка записи конфигурации |
222 | Ошибка применения новой конфигурации, предыдущая восстановлена из резервной копии |
223 | Ошибка применения новой конфигурации и восстановления предыдущей из резервной копии |
get_asset_meta¶
Запрашивает подробную информацию об ассете.
Параметры:
Название | Тип | Описание | Обязательный | Ограничения |
---|---|---|---|---|
path | str | Относительный путь до файла | Да |
Возвращает список объек со следующими полями (все поля имеют строковый тип):
Название | Тип | Описание |
---|---|---|
size | str | Размер файла в байтах |
length | str | Длина в секундах |
bit-rate | str | Средний битрейт |
format-name | str | Краткое имя контейнера или формата |
format-long-name | str | Полное имя контейнера или формата |
streams | array | Cписок потоков |
Объекты списка streams имеют следующие поля:
Название | Тип | Описание |
---|---|---|
type | str | Тип потока |
codec-name | str | Краткое имя кодека |
codec-long-name | str | Полное имя кодека |
language | str | Язык |
Коды ошибок:
Код | Описание |
---|---|
101 | Параметр path пропущен или пуст |
201 | Ошибка получения информации об ассете |
get_asset_files¶
Запрашивает список ассетов.
Параметры:
Название | Тип | Описание | Обязательный | Ограничения |
---|---|---|---|---|
offset | int | Номер элемента, с которого надо начинать список | Нет | Не меньше нуля |
limit | int | Максимальный размер списка | Нет | Не меньше нуля |
filter | str | Строка поиска по именам ассетов | Нет |
Возвращает список объектов со следующими полями:
Название | Тип | Описание |
---|---|---|
file-name | str | Относительный путь до ассета |
asset_delete¶
Удаляет ассет.
Параметры:
Название | Тип | Описание | Обязательный | Ограничения |
---|---|---|---|---|
path | str | Относительный путь до файла | Да |
Возвращаемое значение всегда равно “success”.
Коды ошибок:
Код | Описание |
---|---|
101 | Параметр path пропущен или пуст |
201 | Ошибка удаления acctnf (см. поле message). |
delete_file_from_ingest_directory¶
Удаляет файл из директории ожидания.
Параметры:
Название | Тип | Описание | Обязательный | Ограничения |
---|---|---|---|---|
path | str | Относительный путь до файла | Да |
Возвращаемое значение всегда равно “success”.
Коды ошибок:
Код | Описание |
---|---|
101 | Параметр path пропущен или пуст |
201 | Ошибка удаления файла (см. поле message). |
get_ingestion_status¶
Получает статус инжестирования.
Примечание: информация о состоянии выполняемых задач обновляется раз в пять секунд.
Возвращает список объектов со следующими полями:
Название | Тип | Описание |
---|---|---|
task-id | int | Идентификатор задачи. |
source-file-name | str | Относительный путь до исходного файла |
target-file-name | str | Относительный путь до инжестированного файла |
running | bool | true, если процесс инжестирования активен |
completed | bool | true, если процесс инжестирования завершён |
bitrate | int | Текущий битрейт в байтах |
fps | float | Cкорость инжестирования в кадрах |
frame | int | Текущий кадр |
file-size | int | Текуший размер инжестируемого файла в КиБ |
src-file-size | int | Размер исходного файла в КиБ |
mem-used | int | Количество оперативной памяти, используемой процессом инжестирования в КиБ |
cpu-load | float | Загрузка процессора процессом инжестирования |
failed | bool | true, если процесс инжестирования или дистрибьюции завершён из-за ошибки |
error-string | str | Cообщение об ошибке, либо причина отмены задачи; если статус не равен FAILED или CANCELED то содержит пустую строку |
status | str | Текущий статус задачи. |
Возможные значения поля status:
- WAITING;
- STARTING;
- ACTIVE;
- COMPLETED;
- FAILED;
- CANCELED.
get_distribution_status¶
Получает статус дистрибьюции.
Примечание: информация о состоянии выполняемых задач обновляется раз в пять секунд.
Возвращает список объектов со следующими полями:
Название | Тип | Описание |
---|---|---|
task-id | int | Идентификатор задачи. |
source-file-name | str | Относительный путь до ассета |
running | bool | true, если процесс дострибьюции запущен и активен |
processed | int | Количество обработанных адресов |
mem-used | int | Количество оперативной памяти, используемой процессом в КиБ |
cpu-load | float | Загрузка процессора процессом дистрибьюции |
error-string | str | Cообщение об ошибке, либо причина отмены задачи; если статус не равен FAILED или CANCELED то содержит пустую строку |
status | str | Текущий статус задачи. |
Возможные значения поля status:
- WAITING;
- STARTING;
- ACTIVE;
- COMPLETED;
- FAILED;
- CANCELED.
cancel_task¶
Отменяет задачу.
Параметры:
Название | Тип | Описание | Обязательный | Ограничения |
---|---|---|---|---|
id | int | Идентификатор задачи | Да | Не меньше нуля. |
Возвращаемое значение всегда равно “ok”.
ingest_file¶
Инжестирует файл.
Параметры:
Название | Тип | Описание | Обязательный | Ограничения |
---|---|---|---|---|
path | str | Относительный путь до файла в директории инжестирования | Да | |
preset_name | str | Имя пресета | Да | |
run_cmd | str | Шаблон команды запуска | Нет | |
naming_template | str | Шаблон имени файла | Нет | |
delete_after | bool | если true, удаляет файл после успешного инжестирования и успешной дистрибьюции (если дистрибьюция включена в параметрах micromanager); по умолчанию false | Нет |
Примечание: если указаны, и имя пресета, и шаблон команды запуска или имени файла, то парметры, заданные в пресете, имеют меньший приоритет. Также, если в выбранном пресете отсутствуют какие-либо параметры, то будут взяты значения пресета по-умолчанию.
Примечание 2: если значение preset_name равно default, то будет выбран пресет по-умолчанию.
Возвращаемое значение - объект со следующими параметрами:
Название | Тип | Описание |
---|---|---|
file | str | Относительный путь до ассета после инжестирования |
id | int | Идентификатор задачи. |
Коды ошибок:
Код | Описание |
---|---|
101 | Параметр path пропущен или пуст |
110 | Не найден пресет с таким именем |
distribute_file¶
Добавляет задачу дострибьюции.
Параметры:
Название | Тип | Описание | Обязательный | Ограничения |
---|---|---|---|---|
path | str | Относительный путь до файла в директории ассетов | Да | |
preset_name | str | Имя пресета | Да | |
delete_after | bool | если true, удаляет файл после успешного инжестирования и успешной дистрибьюции (если дистрибьюция включена в параметрах micromanager); по умолчанию false | Нет |
Примечание: если в выбранном пресете отсутствуют какие-либо параметры, то будут взяты значения пресета по-умолчанию.
Примечание 2: если значение preset_name равно default, то будет выбран пресет по-умолчанию.
Возвращаемое значение - объект со следующими параметрами:
Название | Тип | Описание |
---|---|---|
id | int | Идентификатор задачи. |
Коды ошибок:
Код | Описание |
---|---|
101 | Параметр path пропущен или пуст |
110 | Не найден пресет с таким именем |
get_presets¶
Запрашивает список пресетов.
Возвращает объект со следующими полями:
Название | Тип | Описание |
---|---|---|
default | str | Шаблон команды запуска, используемый по умолчанию |
default-naming-template | str | Шаблон имени файла, используемый по умолчанию |
default-distribution-template | str | Шаблон команды дистрибьюции, используемый по умолчанию |
presets | array | Список пресетов в том же виде, в котором он задан в конфигурации |
get_waiting_files¶
Запрашивает список файлов в директории ожидания.
Параметры:
Название | Тип | Описание | Обязательный | Ограничения |
---|---|---|---|---|
offset | int | Номер элемента, с которого надо начинать список | Нет | Не меньше нуля |
limit | int | Максимальный размер списка | Нет | Не меньше нуля |
filter | str | Строка поиска по именам файлов | Нет |
Возвращает список объектов со следующими полями:
Название | Тип | Описание |
---|---|---|
file-name | str | Относительное имя файла |
target-file-name | Относительное имя ассета после инжестирования с шаблоном именования по умолчанию |
is_alive¶
Запрашивает данные о доступности и загруженности видеосервера.
Возвращает объект со следующими полями:
Название | Тип | Описание |
---|---|---|
is_alive | bool | true, если значение score не превышает максимальное |
score | float | Оценка загруженности сервера |
B. Интеграция с IPTV Middleware¶
Решение Micromanager интегрировано с системой Microimpuls IPTV/OTT Middleware Smarty.
C. Решение проблем и рекомендации¶
С.1 Ошибки CC error при транскодировании HD и Full HD каналов при высокой нагрузке на CPU¶
Для HD-потоков можно определить более высокий приоритет процесса через параметр priority в списке streams.
С.2 Рекомендуемые параметры ядра¶
Изменения нужно вносить в файл /etc/sysctl.conf:
kernel.shmmax = 2473822720
kernel.shmall = 4097152000
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_default = 8388608
net.core.wmem_max = 16777216
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_keepalive_time = 10
net.ipv4.tcp_fin_timeout = 5
Затем выполнить команду для применения изменений:
sysctl -p
D. Список возможных сообщений в логах¶
Сообщения об обрабатываемых потоках имеют вид `(%n) %message`
, где %n - порядковый номер потока в конфигурации, причём самый первый поток имеет номер 0.
Сообщения об инжестировании - `(%src_file) %message`
, где %src_file - путь до исходного файла относительно директории инжестирования.
Формат | Описание | Уровень | Пример |
(%src_file) ingestion process thread stopped | Поток процесса инжестирования завершён | INFO | Thu Mar 30 17:30:52 2017 INFO ingestion_thread_handler[29731]: (ED.mp4) ingestion process thread stopped |
ingestion control thread started | Поток мониторинга процесса инжестирования запущен | INFO | Thu Mar 30 17:30:35 2017 INFO main_thread_handler[29731]: ingestion control thread started |
ingestion control thread stopped | Поток мониторинга процесса инжестирования завершён | INFO | Thu Mar 30 17:30:51 2017 INFO main_thread_handler[29731]: ingestion control thread stopped |
ingestion already started: src file = %file1, dst file = %file2 | Попытка запустить несколько процессов инжестирования с одним и тем же файлом назначения | WARNING | Fri Mar 31 11:30:20 2017 WARNING run_ingestion[19855]: ingestion already started: src file = ED.mp4, dst file = /default/ED.mp4 |
run ingestion: path %file, preset name: %preset | Запущено инжестирование ассета %file с пресетом %preset | INFO | Thu Mar 30 17:30:35 2017 INFO run_ingestion_process[29731]: (ED.mp4) run ingestion, target file: /var/vod//default/ED.mp4 |
ingestion failed: file %file_name does not exist | Ошибка инжестирования: исходный файл не существует или не доступен | WARNING | Fri Mar 31 11:29:49 2017 WARNING run_ingestion[19855]: ingestion failed: target file /default/ED.mp4 does not exist |
ingestion failed: target file %file already exists | Ошибка инжестирования: файл назначения уже существует | WARNING | Fri Mar 31 11:29:49 2017 WARNING run_ingestion[19855]: ingestion failed: target file /default/ED.mp4 already exists |
ingestion is starting: src file = %file1, dst file = %file2 | Инициализация инжестирования | INFO | Thu Mar 30 17:30:35 2017 INFO run_ingestion[29731]: ingestion is starting: src file = ED.mp4, dst file = /default/%src_path_wo_ext%.mp4 |
(%src_file) copy %target_file to %address | Дистрибьюция: копирование файла %target_file на адрес %address | INFO | Fri Mar 31 11:45:11 2017 INFO run_distribution_process[21564]: (ED.mp4) copy /default/ED.mp4 to user@127.0.0.1 |
(%src_file) can’t make pipe: %error | Ошибка вызова pipe() (при run-link-strerr = true) | CRITICAL | Fri Mar 31 11:40:56 2017 INFO run_ingestion_process[21564]: (ED.mp4) can’t make pipe: Broken pipe |
(%src_file) %type failed: fork failed with error %error | Ошибка вызова fork() при запуске процесса дистрибьюции или инжестирования | CRITICAL | Fri Mar 31 11:40:56 2017 CRITICAL run_ingestion_process[21564]: (ED.mp4) ingestion failed: fork failed with error Too many open files |
(%src_file) distribution address list is empty | Дистрибьюция ассетов включена, но список адресов пуст | WARNING | Fri Mar 31 11:40:56 2017 WARNING distribute_to_all[21564]: (ED.mp4) distribution address list is empty |
(%src_file) run distribution for %file | Запуск дистрибьюции для ассета %file | INFO | Fri Mar 31 11:45:11 2017 INFO distribute_to_all[21564]: (ED.mp4) run distribution for /default/ED.mp4 |
(%src_file) add ingestion to watchlist | Инжестирование добавлено в список наблюдения | INFO | Thu Mar 30 17:30:35 2017 INFO add_injection_to_list[29731]: (ED.mp4) add ingestion to watchlist |
(%src_file) remove ingestion from watchlist | Инжестирование удалено из списка наблюдения | INFO | Fri Mar 31 11:44:46 2017 INFO remove_injection_from_list[21564]: (hls.conf) remove ingestion from watchlist |
(%src_file) %type error | Ошибка выполнения процесса инжестирования или дестрибьюции | ERROR | Fri Mar 31 11:42:30 2017 ERROR on_process_exited_with_non_zero[12140]: (ED.mp4) distribution error: cp: target ‘/var/vod/files’ is not a directory |
(%src_file) %type error: can’t read stderr | Ошибка выполнения процесса инжестирования или дестрибьюции, невозможно прочитать stderr (при run-link-strerr = true) | ERROR | Fri Mar 31 11:42:30 2017 ERROR on_process_exited_with_non_zero[12140]: (ED.mp4) distribution error: can’t read stderr |
(%src_file) distribution process PID not found | Не найднен PID процесса дистрибьюции | WARNING | Fri Mar 31 11:45:13 2017 WARNING watch_distribution_process[21564]: (ED.mp4) distribution process PID not found |
(%src_file) distribution process executed, PID %pid | Запущен процесс дистрибьюции с PID %pid | INFO | Fri Mar 31 11:20:12 2017 INFO watch_distribution_process[21564]: (ED.mp4) distribution process executed, PID 243 |
(%src_file) distribution process app exited with code %code | Процесс дистрибьюции завершён с кодом выхода %code | INFO | Fri Mar 31 11:45:13 2017 INFO watch_distribution_process[21564]: (ED.mp4) distribution process app exited with code 0 |
(%src_file) distribution process app exited via signal %sig | Процесс дистрибьюции завершён сигналом %sig | WARNING | Fri Mar 31 11:40:10 2017 WARNING watch_distribution_process[21564]: (ED.mp4) distribution process app exited via signal 15 |
(%src_file) stopping, process %pid will be killed | micromanager завершается, процесс с PID %pid будет остановлен | INFO | Fri Mar 31 11:40:10 2017 INFO watch_distribution_process[21564]: (ED.mp4) stopping, process 243 will be killed |
(%src_file) ingestion completed | Инжестирование успешно завершено | INFO | Fri Mar 31 11:30:47 2017 INFO on_ingestion_succeed[19855]: (ED.mp4) ingestion completed |
(%src_file) start distribution | Инжестирование успешно завершено, начата дистрибьюция | INFO | Fri Mar 31 11:45:11 2017 INFO on_ingestion_succeed[21564]: (ED.mp4) start distribution |
(%src_file) delete file | Инжестирование успешно завершено, исходный файл будет удалён | INFO | Fri Mar 31 11:43:28 2017 INFO on_ingestion_succeed[12140]: (ED.mp4) delete file /var/vod/default/ED.mp4 |
(%src_file) file deleting error | Ошибка удаления файла после инжестирования | WARNING | Fri Mar 31 11:43:30 2017 WARNING on_ingestion_succeed[12140]: (ED.mp4) file deleting error |
(%src_file) PID not found | Не найднен PID процесса инжестирования | WARNING | Fri Mar 31 11:45:13 2017 WARNING watch_ingestion_process[21564]: (ED.mp4) PID not found |
(%src_file) ingestion process executed, PID %pid | Запущен процесс инжестирования с PID %pid | INFO | Thu Mar 30 17:30:37 2017 INFO watch_ingestion_process[29731]: (ED.mp4) ingestion process executed, PID 29759 |
(%src_file) ingestion process app exited with code %code | Процесс инжестирования завершён с кодом выхода %code | INFO | Thu Mar 30 17:30:52 2017 INFO watch_ingestion_process[29731]: (ED.mp4) ingestion process app exited with code 255 |
(%src_file) ingestion process app exited via signal %sig | Процесс инжестирования завершён сигналом %sig | WARNING | Thu Mar 30 17:30:52 2017 WARNING watch_ingestion_process[29731]: (ED.mp4) ingestion process app exited via signal 15 |
(%src_file) ingestion failed: %error | Ошибка инициализации инжестирования | ERROR | Fri Mar 31 11:29:49 2017 WARNING run_ingestion[19855]: ingestion failed: target file /default/ED.mp4 already exists |
(%src_file) run ingestion process: src = %file1, dst = %file2 | Запуск инжестировани для ассета %file1, файла назначения: %file2 | INFO | Fri Mar 31 11:44:38 2017 INFO run_ingestion_process[21564]: run ingestion process: src = /var/vod_ingest/ED.mp4, dst = /var/vod//default/ED.mp4 |
(%src_file) check ingestion | Мониторинг процесса инжестирования | DEBUG | Thu Mar 30 17:30:47 2017 DEBUG check_ingestion[29731]: (ED.mp4) check ingestion |
delete asset %file | Удаление ассета | INFO | Fri Mar 31 11:30:06 2017 INFO delete_asset[19855]: delete asset: default/ED.mp4 |
delete file from ingest directory: %file | Удаление файла %file из директории инжестирования | INFO | Fri Mar 31 11:28:37 2017 DEBUG delete_file_from_ingest_directory[19855]: delete file from ingest directory: /var/vod_ingest/ED.mp4 |
get all ingestions | Запрос списка всех процессов инжестирования | DEBUG | Fri Mar 31 11:35:02 2017 DEBUG get_all_ingestions[19855]: get all ingestions |
check files in %file | Проверка неинжестированных файлов в директории %file | DEBUG | Fri Mar 31 11:12:00 2017 DEBUG main[19855]: check files in /var/vod_ingest |
%sig received | Получен сигнал %sig | NOTICE | Thu Mar 30 17:04:11 2017 NOTICE signal_handler[13227]: SIGTERM or SIGINT received, stopping... |
can’t open directory %dir | Невозможно получить список файлов в директории %dir, директория отсутствует или недоступна | ERROR | Thu Mar 30 12:45:23 2017 ERROR get_files[32480]: can’t open directory /var/vod_ingest |
execution failed: %error | Критическая ошибка запуска процесса | CRITICAL | Thu Mar 30 17:30:51 2017 CRITICAL execute_process[32480]: execution failed: Permission denied |
using execl() to run process, cmd: %cmd | Запуск процесса, команда запуска %cmd | DEBUG | Thu Mar 30 17:38:54 2017 INFO execute_process[32480]: using execl() to run process |
create directory %dir | Создание директории %dir | DEBUG | Thu Mar 30 17:07:07 2017 DEBUG create_directory[13641]: create directory /tmp/micromanager/reports/ |
write state log | Запись лога состояния | DEBUG | Thu Mar 30 17:37:46 2017 DEBUG log[31031]: write state log |
error, state log will not be writen | Ошибка записи лога состояния | WARNING | Thu Mar 30 17:35:12 2017 WARNING log[31031]: error, state log will not be writen |
set logging period: %time | Изменение периода записи лога состояния (в секундах) | INFO | Thu Mar 30 17:07:07 2017 INFO set_time[13641]: set logging period: 0 |
logger unlocked | Разблокирована запись лога состояния | INFO | Thu Mar 30 17:30:35 2017 INFO unlock[29731]: logger unlocked |
state logger started | Запущена запись лога состояния | INFO | Thu Mar 30 17:30:35 2017 INFO main_thread[29731]: state logger started |
state logger stopped | Запись лога состояния остановлена | INFO | Thu Mar 30 17:39:33 2017 INFO main_thread[31031]: state logger stopped |
can’t write to file %file | Ошибка записи в файл %file | WARNING | Thu Mar 30 17:30:18 2017 WARNING log[31031]: can’t write to file /var/log/micromanager/state.log |
(%stream) process thread stopped... | Процесс потока %stream остановлен | INFO | Fri Mar 31 10:28:33 2017 INFO process_thread_handler[19855]: (0) process thread stopped... |
(%stream) stream checker read exception | Ошибка чтения во время мониторинга потока | WARNING | |
(%stream) tream checker thread stopped... | Мониторинг потока %stream остановлен | INFO | Thu Mar 30 17:11:14 2017 INFO stream_checker_thread_handler[13641]: (0) stream checker thread stopped... |
process with PID %pid was killed | Процесс с PID %pid остановлен | INFO | |
(%stream) process using too much memory (%mem), trying to restart | Процесс использует слишком много памяти и будет перезапущен | WARNING | |
(%stream) process using too much cpu (%cpu), trying to restart | Процесс использует слишком много процессорного времени и будет перезапущен | WARNING | |
process ‘%process_name’ with pid %pid using too much memory (%mem), killing | Отслеживаемый процесс использует слишком много оперативной памяти и будет завершён | WARNING | |
process ‘%process_name’ with pid %pid using too much cpu (%cpu), killing | Отслеживаемый процесс использует слишком много процессорного времени и будет завершён | WARNING | |
(%stream) streaming time out, stop | Таймаут работы потока, вещание остановлено (если параметр timeout больше нуля) | INFO | |
(%stream) stream not alive, trying to restart or switch source | Превышен максимальное количество попыток проверки доступности потока, возможно, источник потока недоступен или некорректен, будет использован другой источник, либо процесс будет перезапущен | WARNING | Thu Mar 30 17:39:33 2017 WARNING watch_stream[31031]: (0) stream not alive, trying to restart or switch source |
(%stream) possible stream not alive %n times | Провалилось %n попыток проверки потока | INFO | Thu Mar 30 17:39:25 2017 INFO watch_stream[31031]: (0) possible stream not alive 4 times |
(%stream) segmenter not alive, trying to restart or switch source | Ошибка работы сегментера, сегментер будет перезапущен | WARNING | |
(%stream) process not running, trying to restart | Процесс мёртв или недоступен и будет перезапущен | WARNING | |
(%stream) process generate stream with too low bitrate (%byte bps), check %n | Битрейт исходящего потока ниже минимально установленного (попытка %n) | WARNING | Thu Mar 30 17:37:48 2017 WARNING watch_stream[31031]: (0) process generate stream with too low bitrate (0 bps), check 2 |
(%stream) process generate stream with too low bitrate (%byte bps), trying to restart | Превышено максимальное количество попыток проверки битрейта, процесс будет перезапущен | WARNING | Thu Mar 30 17:37:48 2017 WARNING watch_stream[31031]: (0) process generate stream with too low bitrate (0 bps), trying to restart |
(%stream) executing process... | Запуск процесса | INFO | Thu Mar 30 17:39:07 2017 INFO execute_process[31031]: (0) executing process... |
(%stream) fork failed: %error | Ошибка вызова fork() | CRITICAL | |
couldn’t set thread priority: %error | Ошибка установки приоритета процесса | WARNING | |
(%stream) execution failed: %error | Ошибка запуска процесса | CRITICAL | |
(%stream) process executed, pid %pid | Процесс запущен | INFO | Thu Mar 30 17:39:07 2017 INFO execute_process[31031]: (0) process executed, pid 32764 |
(%stream) process app killed, pid %pid | Процесс остановлен | INFO | Thu Mar 30 17:39:21 2017 INFO execute_process[31031]: (0) process app killed, pid 598 |
(%stream) process app exited with code %code | Процесс завершился с кодом выхода %code | ERROR | Thu Mar 30 17:38:16 2017 ERROR execute_process[31031]: (0) process app exited with code 1 |
(%stream) process app exited via signal %sig | Процесс завершен сигналом %sig | ERROR | Thu Mar 30 17:38:16 2017 ERROR execute_process[31031]: (0) process app exited via signal 15 |
invalid distribution list array | Некорректный список адресов дистрибьюции | WARNING | Thu Mar 30 17:17:31 2017 WARNING read_config[15342]: invalid distribution list array |
checking configuration file syntax ‘%file’ | Проверка синтаксиса файла конфигурации | INFO | Thu Mar 30 17:07:07 2017 INFO read_config[13641]: checking configuration file syntax ‘/etc/micromanager/micromanager.conf |
reading configuration from file ‘%file’ | Чтение конфигурации из файла | INFO | Thu Mar 30 17:07:07 2017 INFO read_config[13641]: reading configuration from file ‘/etc/micromanager/micromanager.conf’ |
the number of streams is too big (max %max) | Количество потоков в файле конфигурации превышает максимально допустимое (%max), ошибка применения конфигурации | ERROR | Thu Mar 30 17:18:56 2017 ERROR read_config[15391]: the number of streams is too big (max 512) |
initialization of stream #%n failed | Ошибка инициализации потока с номером %n, ошибка применения конфигурации | ERROR | Thu Mar 30 17:18:02 2017 ERROR read_config[15379]: initialization of stream #0 failed |
parsing streams list failed index %n | Некорректное описание потока в файле конфигурации, ошибка применения конфигурации | ERROR | Fri Mar 31 10:28:19 2017 ERROR read_config[19855]: parsing streams list failed index 0 |
reloading stream #%n | Перезапуск потока с номером %n | NOTICE | Thu Mar 30 17:03:52 2017 NOTICE reload_stream[13227]: reloading stream #0 ‘TLC’ |
parsing streams list failed, stream %n does not have any source | Некорректное описание потока в файле конфигурации: не указан ни один источник | ERROR | Fri Mar 31 10:28:19 2017 ERROR read_config[19855]: parsing streams list failed, stream 0 does not have any source |
stream checker bind failed: %error | Ошибка вызова bind() | ERROR | Thu Mar 30 17:03:52 2017 ERROR reload_stream[13227]: stream checker bind failed: Address already in use |
stream checker socket error: %error | Ошибка инициализации сокета | ERROR | Thu Mar 30 17:03:52 2017 ERROR reload_stream[13227]: stream checker socket error: Socket type not supported |
config file name is empty | Пустое имя файла конфигурации (при перезагрузке конфигурации) | WARNING | Fri Mar 31 10:28:19 2017 WARNING reload_config[19855]: config file name is empty |
reloading stream #%n failed | Ошибка перезапуска потока | ERROR | Fri Mar 31 10:28:19 2017 ERROR reload_config[19855]: reloading stream #0 failed |
deinit stream #%n because it was not found in configuration | Завершается работа потока, так как он отсутствует в новой версии конфигурации (при перезагрузке конфигурации) | INFO | Fri Mar 31 10:28:19 2017 INFO reload_config[19855]: deinit stream #0 because it was not found in configuration |
parsing streams list failed at index %n | Некорректное описание потока в файле конфигурации (при перезагрузке конфигурации) | ERROR | Fri Mar 31 10:28:19 2017 ERROR reload_config[19855]: parsing streams list failed at index 0 |
starting streams | Запуск всех потоков | INFO | Thu Mar 30 17:04:13 2017 INFO start_stream[13641]: starting streams |
starting stream #%n ‘%stream_name’ | Запуск потока с номером %n и именем %stream_name | INFO | Fri Mar 31 10:28:19 2017 INFO start_stream[19855]: starting stream #0 ‘Еврокино’ |
stream #%n ‘%stream_name’ has already started, update stop timestamp | Поток с номером %n и именем %stream_name уже запущен, будет обновлено время его остановки (для потоков с параметром timeout большем 0) | INFO | Fri Mar 31 10:28:19 2017 INFO start_stream[19855]: stream #0 ‘Еврокино’ has already started, update stop timestamp |
stopping streams | Остановка всех потоков | INFO | Thu Mar 30 17:04:11 2017 INFO stop_stream[13227]: stopping streams |
stopping stream #%n ‘%stream_name’ | Остановка потока с номером %n и именем %stream_name | INFO | Thu Mar 30 17:03:52 2017 INFO stop_stream[13227]: stopping stream #0 ‘TLC’ |
networking initialization failed | Критическая ошибка инициализации JSON-RPC API | ERROR | Thu Mar 30 17:06:57 2017 ERROR start_json_rpc[16803]: networking initialization failed |
json-rpc bind failed | Критическая ошибка инициализации JSON-RPC API: ошибка вызова bind(), возможно, сетевой порт уже занят | ERROR | Thu Mar 30 17:06:57 2017 ERROR start_json_rpc[16803]: json-rpc bind failed |
json-rpc listen failed | Критическая ошибка инициализации JSON-RPC API: ошибка вызова listen() | ERROR | Thu Mar 30 17:06:57 2017 ERROR start_json_rpc[16803]: json-rpc listen failed |
starting JSON-RPC server | Запущен JSON-RPC API | INFO | Thu Mar 30 17:03:52 2017 INFO start_json_rpc[13227]: starting JSON-RPC server |
stopping JSON-RPC server | JSON-RPC API остановлен | INFO | Thu Mar 30 17:04:11 2017 INFO stop_json_rpc[13227]: stopping JSON-RPC server |
config write error: can’t write in file %file_name | Ошибка сохранения конфигурации | WARNING | Thu Mar 30 17:21:56 2017 WARNING write_config[13641]: config write error: can’t write in file /etc/micromanager/micromanager.conf |
backup config, file name: %file_name | Резервное копирование файла %file_name | DEBUG | Thu Mar 30 17:11:14 2017 DEBUG backup_config[13641]: backup config, file name: /etc/micromanager/micromanager.conf |
backup error: file %file_name does not exist | Ошибка резервного копирования: файл %file_name не существует | WARNING | Thu Mar 30 17:11:14 2017 WARNING backup_config[13641]: backup error: file /etc/micromanager/micromanager.conf does not exist |
try to backup config, backup file name: %file_name | Сохранение резеврвной копии в файл %file_name | INFO | Thu Mar 30 17:11:14 2017 INFO backup_config[13641]: try to backup config, backup file name: /etc/micromanager/micromanager.conf-2017-3-30-17:1 1:14 |
can’t write file %file_name, backup error | Ошибка резервного копирования: ошибка записи в файл %file_name | WARNING | Thu Mar 30 17:11:14 2017 WARNING backup_config[13641]: can’t write file /etc/micromanager/micromanager.conf-2017-3-30-17:1 1:14, backup error |
restore config, backup file name: %file_name | Восстановление конфигурации из резервной копии | INFO | Thu Mar 30 17:31:20 2017 INFO restore_config[13641]: restore config, backup file name: /etc/micromanager/micromanager.conf-2017-3-30-17:0 1:12 |
configuration restoring failed | Ошибка восстановления конфигурации | ERROR | Thu Mar 30 17:31:20 2017 INFO restore_config[13641]: configuration restoring failed |
configuration file not found ‘%file_name’ | Не найден файл конфигурации | CRITICAL | Thu Mar 30 17:28:42 2017 CRITICAL read_json_config_from_file[13641]: configuration file not found ‘/etc/micromanager/micromanager.conf’ |
configuration parsing failed: %error | Ошибка разбора конфигурации | ERROR | Fri Mar 31 12:04:15 2017 ERROR read_json_config_from_file[14290]: configuration parsing failed * Line 44, Column 19, Missing ‘}’ or object member name |
get streams list | Запрос списка потоков | DEBUG | Fri Mar 31 12:08:46 2017 DEBUG get_streams_list[15074]: get streams list |
API %method | Вызов метода API %method | INFO | Thu Mar 30 17:11:14 2017 INFO api_set_config[13641]: API set config |
API %method error (%code): %error | Ошибка вызова метода API %method, код ошибки %code | WARNING | Thu Mar 30 17:10:01 2017 WARNING api_set_config[13641]: API set_config error (221): configuration write error |