Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Изменение уровня логирования при помощи REST-запросов влияет только на заданную сессию, но не на другие сессии на сервере, в том числе на сессии, создаваемые позднее.

Структура и содержимое клиентских логов

...

Использование самописца (flight recorder)

Самописец (flight recorder) позволяет циклически записывать для публикуемого потока последние несколько событий. Эта информация поможет диагностировать проблемы с публикацией потока, не включая полные отладочные логи клиента. Самописец включается настройкой в файле flashphoner.properties

Code Block
languagebash
themeRDark
client_logs
enable_flight_recorder=true

Необходимо также указать категорию событий, которые будут записываться (определяется разработчиком)

Code Block
languagebash
themeRDark
flight_recorder_categories=WCS1438

События записываются для публикующего клиента в файл flight_recorder.log в случае, если диагностируется остановка публикации потока, или поток портится каким-либо образом.

Для того, чтобы протестировать работу самописца, необходимо установить параметр

Code Block
languagebash
themeRDark
enable_flight_recorder_test=true

без перезапуска сервера. Это запишет события для всех подключенных публикующих клиентов.

Warning
Параметр enable_flight_recorder_test не предназначен для промышленной эксплуатации

Структура и содержимое клиентских логов

Структура клиентских логов:

Code Block
languagebash
themeRDark
client_logs
---- 2018-05-16
-------- 84gij60a6u3ni7docsr1di1l5b-15-06-59
------------ 2018-05-16
flashphoner.log
------------ client-84gij60a6u3ni7docsr1di1l5b-2018.05.16.15-06-59
.07.26-1526458046646.report
------------ MediaDump-85d65b00-639e-4a7e.31002-31004-31006- 31008.pcap

Лог flashphoner.log

...

Лог 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 - миллисекунды.

Дампы медиатрафика

Если в файле настроек flashphoner.properties указано ненулевое значение client_dump_level, для клиента дополнительно пишется дамп сессии:

  • если client_dump_level=1. записывается только SIP трафик;
  • если client_dump_level=2, записывается весь медиатрафик.

Трафик записывается при помощи tcpdump, если данная утилита установлена в системе.

Серверные логи

WCS Core пишет общие логи сервера в logs/server_logs

Code Block
languagebash
themeRDark
server_logs
---- flashphoner.log
---- flashphoner.log.2018-05-17-16

В этих логах можно отследить запуск и стартовые настройки сервера:

Code Block
languagebash
themeRDark
tail -f flashphoner.log

Запуск сервера

Image Removed

...

Image Removed

...

Image Removed

Кроме того, в серверных логах отображается информация о вызовах REST-методов

Code Block
themeRDark
08:01:06,649 INFO            RestClient - API-ASYNC-pool-8-thread-2 SEND REST OBJECT ==>
URL:http://localhost:9091/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-логи

Сall Detail Record - это журнал SIP-звонков.

...

Клиентские логи 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 - миллисекунды.

Дампы медиатрафика

Если в файле настроек flashphoner.properties указано ненулевое значение client_dump_level, для клиента дополнительно пишется дамп сессии:

  • если client_dump_level=1. записывается только SIP трафик;
  • если client_dump_level=2, записывается весь медиатрафик.

Трафик записывается при помощи tcpdump, если данная утилита установлена в системе.

Лог flight_recorder.log

В данный файл записываются последние зафиксированные события для публикуемого потока.

Серверные логи

WCS Core пишет общие логи сервера в logs/server_logs

Code Block
languagebash
themeRDark
server_logs
---- flashphoner.log
---- flashphoner.log.2018-05-17-16


В этих логах можно отследить запуск и стартовые настройки сервера:

Code Block
languagebash
themeRDark
tail -f flashphoner.log

Запуск сервера

Image Added


Остановка сервера

Image Added


Информация о лицензии:

Image Added


Кроме того, в серверных логах отображается информация о вызовах REST-методов

Code Block
themeRDark
08:01:06,649 INFO            RestClient - API-ASYNC-pool-8-thread-2 SEND REST OBJECT ==>
URL:http://localhost:8081/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-логи

Сall Detail Record - это журнал SIP-звонков.

CDR записи пишутся в лог файл находящийся в logs/cdr/cdr.log. Новый лог файл создается на основе суточного интервала. Записи формируются в CSV-файле, что позволяет их удобно обрабатывать.

Названия полей в файл не пишутся.

Формат записи:

Code Block
languagebash
themeRDark
src;dst,cid,start,answer,end,billsec,disposition


Пример записи :

Code Block
languagebash
themeRDark
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-сообщений.

MDR записи пишутся в лог файл находящийся в logs/cdr/cdrmdr.log. Новый лог файл создается на основе суточного интервала. Записи формируются в CSV-файле, что позволяет их удобно обрабатывать.

...

Code Block
languagebash
themeRDark
src;dstdate,cidmsgId,start,answer,end,billsecfrom,to,disposition

Пример записи :

Code Block
languagebash
themeRDark
3000;3001;f294f6116bf2cc4c725f20457ed76e5b@192.168.56.2;2014-11-21 15:01:37; 2014-11-21 15:01:41; 2014-11-21Fri Dec 26 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-сообщений.

MDR записи пишутся в лог файл находящийся в logs/cdr/mdr.log. Новый лог файл создается на основе суточного интервала. Записи формируются в CSV-файле, что позволяет их удобно обрабатывать.

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 - это журнал сессий публикации и воспроизведения потоков.

SDR записи пишутся в лог-файл sdr.log, находящийся в директории logs/cdr. Новый лог-файл создается на основе часового интервала. Записи сохраняются в CSV-формате, что упрощает их обработку. Названия полей в файл не пишутся.

...

Code Block
languagebash
themeRDark
date,msgId,from,to,dispositionstart;mediaProvider;name;mediaSessionId;duration;disposition;info;type;subscribers;

Пример записи:

Fri Dec 26 15:26:16 NOVT 2014,null,A006,A005,RECEIVED
Code Block
languagebash
themeRDark
themeRDark
2015-11-11 08:36:13;Flash;stream-Bob;5c2d75c0-7d87-421d-aa93-2732c48d8eaa;00:00:48;UNPUBLISHED;;PUBLISH;3;

Поле

Описание

datestart

Дата и время сообщения

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 - это журнал сессий публикации и воспроизведения потоков.

...

время установки сессии

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
languagebash
themeRDark
end;mediaProviderstart;name;mediaSessionId;duration;disposition;info;type;subscribersduration;

Пример записи:

Code Block
languagebash
themeRDark
20152018-1104-1125 0819:3629:13;Flash;stream-Bob;5c2d75c0-7d87-421d-aa93-2732c48d8eaa;00:00:48;UNPUBLISHED;;PUBLISH;308;/5.44.168.45:52199/95.191.131.64:8443;DISCONNECTED;Normal disconnect;17;

Поле

Описание

endstart

Дата и время завершения сессии

mediaProvider

Используемое медиа на WCS JavaScript API: WebRTC, Flash

name

Имя публикуемого / воспроизводимого потока

установки сессии

mediaSessionId

Идентификатор медиа-сессии

duration

Продолжительность

сессии

disposition

Как сессия была завершена: UNPUBLISHED, STOPPED, FAILED

UNPUBLISHED - публикация потока была остановлена

STOPPED - воспроизведение потока было остановлено DISCONNECTED, FAILED

DISCONNECTED - завершение сессии по инициативе клиента

FAILED - некорректное завершение сессии

info

Если disposition==FAILED, содержит описание причины

type

PUBLISH в случае публикации потока

SUBSCRIBE в случае воспроизведения потока

subscribers

Количество подписчиков в случае публикации потока; 0 в случае воспроизведения потока

CONNDR-логи

Connection Detail Record - это журнал WebSocket сессий.

CONNDR записи пишутся в лог-файл sdr.log, находящийся в директории logs/cdr. Новый лог-файл создается на основе часового интервала. Записи сохраняются в CSV-формате, что упрощает их обработку. Названия полей в файл не пишутся.

Формат записи:

Code Block
languagebash
themeRDark
end;mediaSessionId;disposition;info;duration;

Пример записи:

Code Block
languagebash
themeRDark
2018-04-25 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

Продолжительность сессииСодержит описание завершения сессии

duration

Продолжительность сессии

GC-логи

По умолчанию логи сборщика мусора находятся в директории /usr/local/FlashphonerWebCallServer/logs.

Code Block
themeRDark
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
themeRDark
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=10
-XX:GCLogFileSize=2M

Тогда имена файлов будут такими

Code Block
themeRDark
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
themeRDark
GC_SUFFIX=".log"

Тогда имена файлов будут такими

Code Block
themeRDark
logs
---- gc-core.log.0
---- gc-core.log.1
---- gc-core.log.2.current