...
Уровень логирования для определенной сессии можно менять на ходу, без перезапуска сервера, например, при проблемах с определенным потоком на сервере. Для этого используются REST-запросы
...
Имя параметра | Описание | Пример |
---|---|---|
sessionId | Идентификатор сессии | /127.0.0.1:57539/192.168.1.101:8443 |
logLevel | Устанавливаемый уровень логирования | DEBUG |
Изменение уровня логирования при помощи REST-запросов влияет только на заданную сессию, но не на другие сессии на сервере, в том числе на сессии, создаваемые позднее.
Структура и содержимое клиентских логов
Структура клиентских логов:Таким образом, при возникновении проблем с потоком, опубликованным на сервере (например, поток опубликован, но не воспроизводится), необходимо отправить серверу REST-запрос и переключить уровень логирования в DEBUG, а затем, когда проблема воспроизведена и данные собраны, переключить уровень логирования обратно в INFO. Возможно также полностью отключить логирование для определенной сессии.
Изменение уровня логирования при помощи REST-запросов влияет только на заданную сессию, но не на другие сессии на сервере, в том числе на сессии, создаваемые позднее.
Использование самописца (flight recorder)
Самописец (flight recorder) позволяет циклически записывать для публикуемого потока последние несколько событий. Эта информация поможет диагностировать проблемы с публикацией потока, не включая полные отладочные логи клиента. Самописец включается настройкой в файле flashphoner.properties
Code Block | ||||
---|---|---|---|---|
| ||||
client_logs ---- 2018-05-16 -------- 84gij60a6u3ni7docsr1di1l5b-15-06-59 ------------ flashphoner.log ------------ client-84gij60a6u3ni7docsr1di1l5b-2018.05.16.15.07.26-1526458046646.report -----enable_flight_recorder=true |
Необходимо также указать категорию событий, которые будут записываться (определяется разработчиком)
Code Block | ||||
---|---|---|---|---|
| ||||
flight_recorder_categories=WCS1438 |
События записываются для публикующего клиента в файл flight_recorder.log в случае, если диагностируется остановка публикации потока, или поток портится каким-либо образом.
Для того, чтобы протестировать работу самописца, необходимо установить параметр
Code Block | ||||
---|---|---|---|---|
| ||||
enable_flight_recorder_test=true |
без перезапуска сервера. Это запишет события для всех подключенных публикующих клиентов.
Warning |
---|
Параметр enable_flight_recorder_test не предназначен для промышленной эксплуатации |
Структура и содержимое клиентских логов
Структура клиентских логов:
Code Block | ||||
---|---|---|---|---|
| ||||
client_logs ---- 2018-05-16 -------- MediaDump-85d65b00-639e-4a7e.31002-31004-31006-31008.pcap |
Лог flashphoner.log
Клиентские логи client_logs пишутся по датам. Под каждую дату создается директория с именем в формате ГГГГ-ММ-ДД, например 2018-05-16.
Когда web-клиент устанавливает соединение с сервером, внутри директории с датой создается каталог для этой сессии клиента, например 84gij60a6u3ni7docsr1di1l5b-15-06-59, где 84gij60a6u3ni7docsr1di1l5b - идентификатор сессии, 15 - час, 06 - минута, 59 - секунда. В директорию пишется flashphoner.log, который содержит только те события на сервере, которые непосредственно относятся к этой сессии клиента. Таким образом мы видим когда клиент соединился с сервером, и какие логи были записаны для сессии этого клиента.
Лог client-report
...
84gij60a6u3ni7docsr1di1l5b-15-06-59
------------ flashphoner.log
------------ client-84gij60a6u3ni7docsr1di1l5b-2018.05.16.15.07.26-1526458046646.report
------------ MediaDump-85d65b00-639e-4a7e.31002-31004-31006-31008.pcap |
Лог flashphoner.log
Клиентские логи client_logs пишутся по датам. Под каждую дату создается директория с именем в формате ГГГГ-ММ-ДД, например 2018-05-16.
Когда web-клиент устанавливает соединение с сервером, внутри директории с датой создается каталог для этой сессии клиента, например 84gij60a6u3ni7docsr1di1l5b-15-06-59, где 84gij60a6u3ni7docsr1di1l5b - идентификатор сессии, 15 - час, 06 - минута, 59 - секунда. В директорию пишется flashphoner.log, который содержит только те события на сервере, которые непосредственно относятся к этой сессии клиента. Таким образом мы видим когда клиент соединился с сервером, и какие логи были записаны для сессии этого клиента.
Лог client-report
Дополнительный клиентский лог. Web-клиент имеет специальную функцию WCS JavaScript API 'pushLog'. Эта функция отправляет на WCS-сервер логи, которые ведутся на стороне браузера. Все логи, полученные от web-клиента по pushLog, будут сохраняться на сервере. Когда web-клиент завершит сессию с WCS-сервером, полученые логи будут записаны в файл client-84gij60a6u3ni7docsr1di1l5b-2018.05.16.15.07.26-1526458046646.report, где 84gij60a6u3ni7docsr1di1l5b - идентификатор сессии, 2018 - год, 05 - месяц, 26 - день, 15 - час, 07 - минута, 26 - секунда, 1526458046646 - миллисекунды.
Дампы медиатрафика
...
Трафик записывается при помощи tcpdump, если данная утилита установлена в системе.
Серверные логи
...
Лог flight_recorder.log
В данный файл записываются последние зафиксированные события для публикуемого потока.
Серверные логи
WCS Core пишет общие логи сервера в logs/server_logs
...
Code Block | ||
---|---|---|
| ||
08:01:06,649 INFO RestClient - API-ASYNC-pool-8-thread-2 SEND REST OBJECT ==> URL:http://localhost:90918081/EchoApp/StreamStatusEvent OBJECT: { "nodeId" : "rR3YA7yKB11iIIID4XkYveTF8ePhezMU@0.0.0.0", "appKey" : "defaultApp", "sessionId" : "/5.44.168.45:58541/95.191.131.65:8443", "mediaSessionId" : "58488550-99dd-11e8-bf13-9b5947c0a0f5", "name" : "569a", "published" : true, "hasVideo" : true, "hasAudio" : true, "status" : "PUBLISHING", "audioCodec" : "opus", "videoCodec" : "H264", "info" : "Unknown", "record" : false, "width" : 0, "height" : 0, "bitrate" : 0, "minBitrate" : 0, "maxBitrate" : 0, "quality" : 0, "timeShift" : -1, "createDate" : 1533603665644, "mediaProvider" : "WebRTC", "history" : false, "origin" : "https://test.flashphoner.com:8888" } |
Таким образом, серверные логи предоставляют общую информацию о работе сервера.
CDR-логи
...
://test.flashphoner.com:8888"
} |
Таким образом, серверные логи предоставляют общую информацию о работе сервера.
CDR-логи
Сall Detail Record - это журнал SIP-звонков.
CDR записи пишутся в лог файл находящийся в logs/cdr/cdr.log. Новый лог файл создается на основе суточного интервала. Записи формируются в CSV-файле, что позволяет их удобно обрабатывать.
Названия полей в файл не пишутся.
Формат записи:
Code Block | ||||
---|---|---|---|---|
| ||||
src;dst,cid,start,answer,end,billsec,disposition |
Пример записи :
Code Block | ||||
---|---|---|---|---|
| ||||
3000;3001;f294f6116bf2cc4c725f20457ed76e5b@192.168.56.2;2014-11-21 15:01:37; 2014-11-21 15:01:41; 2014-11-21 15:02:45;64;ANSWERED |
Поле | Описание |
---|---|
src | Инициатор звонка |
dst | Принимающий звонок |
cid | Идентификатор звонка |
start | Начало звонка (дата и время). |
answer | Дата и время ответа абонента или SIP стороны. |
end | Дата и время завершения звонка |
billsec | Время в секундах между 'answer' и 'end'. |
disposition | Результат звонка: ANSWERED, NO_ANSWER, BUSY, FAILED. |
MDR-логи
Message Detail Record - это журнал SIP-звонковсообщений.
CDR MDR записи пишутся в лог файл находящийся в logs/cdr/cdrmdr.log. Новый лог файл создается на основе суточного интервала. Записи формируются в CSV-файле, что позволяет их удобно обрабатывать.
...
Code Block | ||||
---|---|---|---|---|
| ||||
src;dst,cid,start,answer,end,billsecdate,msgId,from,to,disposition |
Пример записи :
Code Block | ||||
---|---|---|---|---|
| ||||
3000;3001;f294f6116bf2cc4c725f20457ed76e5b@192.168.56.2;2014-11-21 15:01:37; 2014-11-21Fri Dec 26 15:01:41; 2014-11-21 15:02:45;64;ANSWERED26:16 NOVT 2014,null,A006,A005,RECEIVED |
...
Поле | Описание |
---|---|
src | Инициатор звонка |
dst | Принимающий звонок |
cid | Идентификатор звонка |
start | Начало звонка (дата и время). |
answer | Дата и время ответа абонента или SIP стороны. |
end | Дата и время завершения звонка |
billsec | Время в секундах между 'answer' и 'end'. |
disposition | Результат звонка: ANSWERED, NO_ANSWER, BUSY, FAILED. |
MDR-логи
Message Detail Record - это журнал SIP-сообщений.
MDR записи пишутся в лог файл находящийся в logs/cdr/mdr.log. Новый лог файл создается на основе суточного интервала. Записи формируются в CSV-файле, что позволяет их удобно обрабатывать.
Названия полей в файл не пишутся.
date | Дата и время сообщения |
msgId | Идентификатор сообщения. Будет представлен только в message/cpim сообщениях, при isImdnRequired=true (см. документацию Web Call Server - Call Flow, где описаны параметры передаваемых сообщений в методе sendMessage). |
from | SIP from |
to | SIP to |
disposition | Результат сообщения: RECEIVED, SENT, FAILED. RECEIVED - сообщение получено. SENT - сообщение отправлено. FAILED - во время отправки сообщения произошла ошибка. |
Вы также можете собирать любую необходимую статистику по сообщениям и их статусам, используя WCS REST API. См. документацию Web Call Server - Call Flow, где перечислены все методы и наборы данных, которые WCS отправляет чрез REST при обработке сообщений.
SDR-логи
Stream Detail Record - это журнал сессий публикации и воспроизведения потоков.
SDR записи пишутся в лог-файл sdr.log, находящийся в директории logs/cdr. Новый лог-файл создается на основе часового интервала. Записи сохраняются в CSV-формате, что упрощает их обработку. Названия полей в файл не пишутся.
Формат записи:
Code Block | ||||
---|---|---|---|---|
| ||||
start;mediaProvider;name;mediaSessionId;duration;disposition;info;type;subscribers; |
Пример записи:
Code Block | ||||
---|---|---|---|---|
| ||||
date,msgId,from,to,disposition |
Пример записи :
Code Block | ||||
---|---|---|---|---|
| ||||
Fri Dec 26 15:26:16 NOVT 2014,null,A006,A005,RECEIVED |
...
Поле
...
Описание
...
date
...
Дата и время сообщения
...
msgId
...
Идентификатор сообщения. Будет представлен только в message/cpim сообщениях, при isImdnRequired=true (см. документацию Web Call Server - Call Flow, где описаны параметры передаваемых сообщений в методе sendMessage).
...
from
...
SIP from
...
to
...
SIP to
...
disposition
...
Результат сообщения: RECEIVED, SENT, FAILED.
RECEIVED - сообщение получено.
SENT - сообщение отправлено.
FAILED - во время отправки сообщения произошла ошибка.
Вы также можете собирать любую необходимую статистику по сообщениям и их статусам, используя WCS REST API. См. документацию Web Call Server - Call Flow, где перечислены все методы и наборы данных, которые WCS отправляет чрез REST при обработке сообщений.
SDR-логи
Stream Detail Record - это журнал сессий публикации и воспроизведения потоков.
...
2015-11-11 08:36:13;Flash;stream-Bob;5c2d75c0-7d87-421d-aa93-2732c48d8eaa;00:00:48;UNPUBLISHED;;PUBLISH;3; |
Поле | Описание |
---|---|
start | Дата и время установки сессии |
mediaProvider | Используемое медиа на WCS JavaScript API: WebRTC, Flash |
name | Имя публикуемого / воспроизводимого потока |
mediaSessionId | Идентификатор медиа-сессии |
duration | Продолжительность сессии |
disposition | Как сессия была завершена: UNPUBLISHED, STOPPED, FAILED UNPUBLISHED - публикация потока была остановлена STOPPED - воспроизведение потока было остановлено FAILED - некорректное завершение сессии |
info | Если disposition==FAILED, содержит описание причины |
type | PUBLISH в случае публикации потока SUBSCRIBE в случае воспроизведения потока |
subscribers | Количество подписчиков в случае публикации потока; 0 в случае воспроизведения потока |
CONNDR-логи
Connection Detail Record - это журнал WebSocket-сессий.
CONNDR записи пишутся в лог-файл sdr.log, находящийся в директории logs/cdr. Новый лог-файл создается на основе часового интервала. Записи сохраняются в CSV-формате, что упрощает их обработку. Названия полей в файл не пишутся.
...
Code Block | ||||
---|---|---|---|---|
| ||||
end;mediaProviderstart;name;mediaSessionId;duration;disposition;info;type;subscribersduration; |
Пример записи:
Code Block | ||||
---|---|---|---|---|
| ||||
20152018-1104-11 08:36:13;Flash;stream-Bob;5c2d75c0-7d87-421d-aa93-2732c48d8eaa;00:00:48;UNPUBLISHED;;PUBLISH;325 19:29:08;/5.44.168.45:52199/95.191.131.64:8443;DISCONNECTED;Normal disconnect;17; |
Поле
Описание
end
Дата и время завершения сессии
mediaSessionId
Идентификатор медиа-сессии
disposition
Как сессия была завершена: DISCONNECTED, FAILED
DISCONNECTED - завершение сессии по инициативе клиента
FAILED - некорректное завершение сессии
info
Содержит описание завершения сессии
duration
Продолжительность сессии
REST-метод
Пример тела REST-запроса
Пример тела REST-ответа
Статусы ответа
Описание
/rtsp/startup
language | js |
---|---|
theme | RDark |
Поле | Описание | ||
---|---|---|---|
end | Дата и время завершения сессии | ||
mediaProvider | Используемое медиа на WCS JavaScript API: WebRTC, Flash | ||
name | Имя публикуемого / воспроизводимого потока start | Дата и время установки сессии | |
mediaSessionId | Идентификатор медиа-сессии | duration | Продолжительность сессии |
disposition | Как сессия была завершена: UNPUBLISHED, STOPPED DISCONNECTED, FAILED UNPUBLISHED - публикация потока была остановлена STOPPED - воспроизведение потока было остановленоDISCONNECTED - завершение сессии по инициативе клиента FAILED - некорректное завершение сессии | ||
info | Если disposition==FAILED, содержит описание причины | ||
type | PUBLISH в случае публикации потока SUBSCRIBE в случае воспроизведения потока | ||
subscribers | Количество подписчиков в случае публикации потока; 0 в случае воспроизведения потока |
CONNDR-логи
Connection Detail Record - это журнал WebSocket сессий.
CONNDR записи пишутся в лог-файл sdr.log, находящийся в директории logs/cdr. Новый лог-файл создается на основе часового интервала. Записи сохраняются в CSV-формате, что упрощает их обработку. Названия полей в файл не пишутся.
Формат записи:
Code Block | ||||
---|---|---|---|---|
| ||||
end;mediaSessionId;disposition;info;duration; |
Пример записи:
Code Block | ||||
---|---|---|---|---|
| ||||
2018-04-25 19:29:08;/5.44.168.45:52199/95.191.131.64:8443;DISCONNECTED;Normal disconnect;17; |
Содержит описание завершения сессии | |
duration | Продолжительность сессии |
GC-логи
По умолчанию логи сборщика мусора находятся в директории /usr/local/FlashphonerWebCallServer/logs.
Code Block | ||
---|---|---|
| ||
logs
---- gc-core-2018-12-18_20-02.log
---- gc-core-2018-12-18_19-56.log |
Расположение и префикс имени лога можно изменить в файле настроек wcs-core.properties.
Для осуществления ротации логов средствами JVM в wcs-core.properties могут быть добавлены следующие настройки:
Code Block | ||
---|---|---|
| ||
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=10
-XX:GCLogFileSize=2M |
Тогда имена файлов будут такими
Code Block | ||
---|---|---|
| ||
logs
---- gc-core.log2018-12-14_18-57.log.0
---- gc-core.log2018-12-14_18-57.log.1
---- gc-core.log2018-12-14_18-57.log.2.current |
Суффикс 'current' обозначает файл, в который ведется запись.
Чтобы убрать время создания из имени файла, нужно убрать проставление даты из переменной GC_SUFFIX в bin/setenv.sh:
Code Block | ||
---|---|---|
| ||
GC_SUFFIX=".log" |
Тогда имена файлов будут такими
Code Block | ||
---|---|---|
| ||
logs
---- gc-core.log.0
---- gc-core.log.1
---- gc-core.log.2.current |