Diagnostics package (Logs)
Log to file or Log to console:
In the advanced settings ini there are two distinct log output settings:
;enable logging to console log_to_console=0 ;enable logging to file log_to_file=1
Log verbosity:
Within the advanced settings ini file, the level of verbosity of each log can be configured:
Example:
GENERIC=3,3
LICENSE_MANAGER=3,3
FILE_SINK_ELEMENT=3,3
FILE_SRC_ELEMENT=3,3
0=No logging 1= Warning 2= Information 3= Detailed Information 4= Dev level 1 5= Dev level 2
The higher settings can cause high disk usage, recommended levels for customers is 3
Log to file
Log to file uses Live Transcoders logging service. Each element logs to a separate file. The logs are rotated on boot of the host and every 60 minutes. The maximum size by default is 10GB.
If a customer wishes to change the maximum size, they can do this by adding the following environment variable to the docker_compose.yml:
TRC_DISK_LOG_LIMIT_MEGABYTES=
Log to console
Logging output is merged in Journald which is a system service for collecting and storing log data. It creates and maintains structured, indexed journals based on logging information that is received from a variety of sources.
The Journal service stores log data persistently in /var/log/journal
Log to console can be used if the user wishes to send Live Transcoder logging to an external storage location, however the customer must configure journald for this purpose.
Log to file: Diagnostics package important directories and logs
- Diagnostics package can be downloaded via the UI: Setup > Diagnostics & Support
- This can be downloaded retrospectively and does not need to be downloaded at the time of the issue. However we do recommend if the resolution may be to restart the instance, that the diagnostic package is downloaded before a restart to preserve some of the logs. Logs are kept for 7 days.
- Within the diagnostics package there are several useful logs for 1st line support:
- report-2023-10-09-10_05_16\version\transcoder
- transcoder file contains the transcoder code base version, OS and basic system information
- report-2023-10-09-10_05_16\hwinfo
- hwinfo contains all hardware information
- report-2023-10-09-10_05_16\network\ifconfig
- ifconfig contains host network configuration
- report-2023-10-09-10_05_16\system\timedatectl
- timedatectl contains timezone host is configured in, all transcoder logs correspond to UTC
- \report-2023-10-09-10_05_16\log\transcoder*
- transcoder directory contains logs for all pipeline and transcoder services the last 24 hours
- All previous logs are backed up in the Archive.zip directory
- transcoder directory contains logs for all pipeline and transcoder services the last 24 hours
- \report-2023-10-09-10_05_16\transcoder.tgz\transcoder\pipelines.json
- pipelines.json in this directory is the current pipeline configuration from when the diagnostics package was downloaded
- \report-2023-10-09-10_05_16\transcoder.tgz\transcoder\pipelines.json.backup*
- This directory contains all previous pipelines configuration jsons
- \report-2023-10-09-10_05_16\transcoder.tgz\transcoder\settings\settings.ini
- report-2023-10-09-10_05_16\version\transcoder
- XXXX-XX-XX_XX_MACHINE_STATUS_Controller_XX.log - Contains CPU, GPU, Network utilization
- XXXX-XX-XX_XX_UI_XX.log - Contains UI activity
- XXXX-XX-XX_XX_GENERIC_Controller_XX.log - Contains systemctl activity
- XXXX-XX-XX_XX_TS_DEMUX_ELEMENT_Demux_XX_XX_XXX.log - Contains activity per pipeline regarding demux
- XXXX-XX-XX_XX_TS_MUX_ELEMENT_TsMux_XX_XX_XXX.log - Contains activity per pipeline regarding regarding muxer
Which logs relate to which pipeline components?
Transcoder logs are found in: \report_live-transcoder-YYYY-MM-DD-HH_MM_SS.tar\log.zip\log\transcoder\transcoder\
YYYY-MM-DD_HH_XX_Demux_0_0_XXXX.log logs relate to the input of the pipeline. The suffix of the filename maps the file to a particular pipeline and input. i.e. Pipeline ID:0, Source 0 in the example given
The same is the case for the output of the pipeline, YYYY-MM-DD_HH_mux_0_0_XXXX.log would be equal to Pipeline ID:0, Output 0
The last digits describe the process ID as managed in the OS. Each time the pipeline restarts OR stops/starts, each process will start again, therefore each element will assume a new process ID.
Examples of common errors, statistics and warnings:
MPEG-TS (SRT, UDP, RTP)
- Demuxer has detected a continuity counter error, either the a count has been skipped or duplicated. This could happen during the encoding or transport of the stream, recommended to inspect the stream origin, and any devices/links it may transit through. A third party device that can also detect CC errors is useful for determining the origin of the error:
Nov 25 11:27:12 transcoder0 transcoder-base[772]: 11:27:12.413 TS_DEMUX_ELEMENT PidHandler.cpp:31 Demux_0_0(772) H264 elementary stream pid: 101 Detected packet drop (mismatch in CC)
- TS muxer is dropping a packet, this could be that the buffer has been starved due to issues on the input, there was not enough compute resource to create the packet or there was not enough time relative to the PTS to create/send the packet:
Nov 25 13:51:35 transcoder0 transcoder-base[609]: 13:51:35.188 TS_MUX_ELEMENT TsMuuxElement.cpp:1023 TsMux_1_0(609) PID: 101 drop packets: 94
- TS demuxer reports PCR from source, Latest PCR (27MHz) = PTS time, a = current, b = offset
Nov 25 13:51:35 transcoder0 transcoder-base[589]: 13:51:35.212 TS_DEMUX_ELEMENT PcrState.cpp:501 Demux_0_0(589) PCR report: Latest PCR (27MHz): 291811910657 [ a = 0.999932 , b = 2.90792e+11 ] Discontinuities: 0 PCR-day: 0
SRT:
SRT pipeline configuration:
Nov 25 10:52:09 transcoder0 transcoder-base[385]: 2024-11-25 10:52:09 [http-nio-127.0.0.1-8080-exec-2] INFO c.c.t.ui.type.ConfigurationSession - PIPELINE_MODEL_APPLIED: Pipeline (id:64, name: Pipeline) inputs: source: udp://0.0.0.0:5100 srt: Srt{mode=LISTENER, latency=240, overhead=20, streamID=, isEncrypted=false, encryption=AES_DEFAULT, passphrase=}
SRT Receiver (Demuxer) in Listener mode:
Nov 25 10:52:49 transcoder0 transcoder-base[762]: 10:52:49.598 TS_DEMUX_ELEMENT TsDemuxElement.cpp:279 Demux_0_0(762) SRT Listening
SRT Listener is functioning correctly, however no device is currently calling to open connection on the address(es) and port specified, can also be related to start of pipeline or continuous packet loss
Nov 25 11:00:42 transcoder0 transcoder-base[322]: 11:00:42.547603/CMPTO_NET_INIT*E:SRT.cn: srt_accept: no pending connection available at the moment
Nov 25 11:01:57 transcoder0 transcoder-base[954]: 11:01:57.611 TS_MUX_ELEMENT Sender.cpp:212 TsMux_1_0(954) SRT connection failed. Trying again. srt://127.0.0.1:5050:lo Error: 5
SRT NAK
Nov 25 11:26:49 transcoder0 transcoder-base[772]: 11:26:49.906758/SRT:TsbPd!W:SRT.br: @910563377: RCV-DROPPED 2 packet(s). Packet seqno %900016611 delayed for 0.084 ms
Nov 25 11:26:15 transcoder0 transcoder-base[772]: 11:26:15.345 TS_DEMUX_ELEMENT PidHandler.cpp:31 Demux_0_0(772) H264 elementary stream pid: 101 Detected packet drop (mismatch in CC)11:26:15.345412/SRT:TsbPd!W:SRT.br: @910563377: RCV-DROPPED 1 packet(s). Packet seqno %899988020 delayed for 0.452 ms
NDI:
Start of NDI Output stream:
Nov 25 10:58:17 transcoder0 transcoder-base[92]: 10:58:17.319 NDI_SINK_ELEMENT NdiSinkElement.cpp:595 Controller(92) Adding video stream to NDI Sink element.
NDI Receiver starts receiving NDI video:
Dec 05 13:35:31 transcoder0 transcoder-base[1142]: 13:35:31.468 NDI_SRC_ELEMENT NdiReceiver.cpp:52 NdiSrc_13_0(1142) Receiving audio/video with frame rate: 50
This line reports the transcode latency in milli-seconds, reporting average and maximum latency during x period:
Nov 25 11:01:40 transcoder0 transcoder-base[780]: 11:01:40.341 LATENCY_MEASUREMENT NdiSinkElement.cpp:524 NdiMux_0_0_0(780) NdiMux_0_0_0 Latency: 2810.88 avg, 2864.5 max
Start of NDI Input stream:
Dec 05 13:35:27 transcoder0 transcoder-base[1142]: 13:35:27.642 NDI_SRC_ELEMENT NdiSourceElement.cpp:133 NdiSrc_13_0(1142) Looking for NDI source 'TRANSCODER0 (zz_12345)'
NDI_sink_element (NDI Output) has encountered a missing frame from the input, PTSJitterRemover logs this message as a warning if this occurs, PTS expected value is larger than 1800/90KHz = 20ms or a single frame for 50Hz video :
Dec 05 13:38:51 transcoder0 transcoder-base[1140]: 13:38:51.345 NDI_SINK_ELEMENT PtsJitterRemover.cpp:33 NdiMux_12_0_0(1140) PTSJitterRemover resetting due to diff > maxPTSJitter: 1800 > 9Updated 5 months ago
