; SylkServer QoS capture server configuration file ; ; Install as /etc/sylkserver/qos-server.ini (same directory as config.ini). ; Same syntax as the other SylkServer .ini files. All settings below show ; their built-in defaults — uncomment only the ones you want to change. ; ; The per-call trace folders are written under /qos/, where ; log_dir is read from [Server] in config.ini (default /var/log/sylkserver), ; i.e. by default /var/log/sylkserver/qos//. [Server] ; host:port the public HTTP(S) API/dashboard binds to. HTTPS is used ; automatically when [WebServer] certificate is set in config.ini (same cert ; and hostname as the webrtcgateway). Use 0.0.0.0 to expose it. ; listen = 0.0.0.0:9810 ; Plain-HTTP loopback listener (127.0.0.1) for the co-located Janus to push ; events to — the public listener may be HTTPS (cert CN won't match ; 127.0.0.1), but internal Janus->qos-server comms stay on localhost HTTP. ; Set to 0 to disable. Point sampleevh `backend` at http://127.0.0.1:/janus-events. ; local_http_port = 9809 ; Shared bearer token clients must present (Authorization: Bearer , ; or ?token=). Leave empty to only answer requests from localhost. ; auth_token = ; Capture interface. Empty = the default-route interface. ; interface = ; Expected client packets/sec used for the NIC-loss estimate (Opus 20ms = 50). ; expected_pps = 50 ; Seconds between samples written to samples.ndjson. ; sample_interval = 5 ; Hard cap on a single call's capture, seconds (safety net for calls that ; never get a stop). Default 2 hours. ; max_capture_seconds = 7200 ; Delete per-call folders older than this many days. 0 disables pruning. ; retention_days = 7 ; Whether to store the raw packet capture (capture.pcap, for Wireshark). The ; packet COUNTS / verdict don't need it, so by default it's kept only for calls ; that actually had a media problem: ; no never write a pcap (lightest — just count) (default) ; problem write it, but delete it at call end unless the call was bad ; yes always keep the pcap ; keep_pcap = no [MediaProxy] ; Optional second leg: also capture the Janus<->MediaProxy RTP leg at this NIC, ; so the summary can localize a break to which side of MediaProxy it dies on. ; Set the MediaProxy relay host; that's all that's needed — the per-call RTP ; PORTS for this leg are negotiated in the SIP SDP and vary per call, so we ; filter by host only (no port range). The WebRTC leg's exact ports always come ; per-call from Janus ICE. Leave unset to skip this leg. ; ip = ; Optional PEER PROBE — a second sylk-qos-server running ON the MediaProxy ; host (same daemon, install with [Janus] mode = off there). When set, every ; call is also registered on the peer, which counts the same Janus<->MediaProxy ; RTP tuple at the MediaProxy NIC. The finalized summary then contains a ; hop-by-hop loss analysis that can tell apart: ; - loss ON THE WIRE between MediaProxy and this host (per direction), ; - loss INSIDE this host (arrived at the NIC, never relayed), ; - loss AT/BEYOND MediaProxy (far end -> MediaProxy), ; plus kernel counters (buffer overflows, NIC drops) from BOTH hosts. ; probe_url is the peer's HTTP(S) API, probe_token its [Server] auth_token. ; probe_url = ; probe_token = ; probe_timeout = 4 [Janus] ; Janus configuration directory, used to auto-detect the Admin API URL/secret ; for the auto-capture modes below. ; config_dir = /etc/janus ; Auto-capture mode — start/stop a capture whenever a call comes up / tears ; down in Janus, no external trigger: ; events Janus PUSHES events to us via its event handler (preferred, no ; polling). Point janus.eventhandler.sampleevh.jcfg `backend` at ; http://:/janus-events ; (see janus.eventhandler.sampleevh.jcfg.sample). ; poll we POLL the Janus admin API every poll_interval seconds. ; off only capture calls registered explicitly via the HTTP API. ; The default is events. (monitor = false is an alias for mode = off.) ; mode = events ; Admin API endpoint + secret. Required for `poll`; for `events` it's optional ; (used only to fill in the 5-tuple when an event lacks it). Leave unset to ; auto-detect from config_dir (admin_secret from janus.jcfg, port/base from ; janus.transport.http.jcfg). ; admin_url = http://127.0.0.1:7088/admin ; admin_secret = ; How often (seconds) to poll the admin API in `poll` mode. ; poll_interval = 2