Skip to content

Diagnostics

Terminal window
curl -s localhost:9001/health
{ "status": "ok", "version": "0.1.0", "commit": "4e6b24eb2c10",
"uptime_secs": 18, "live_streams": 0, "errors": 0, "warnings": 0 }

Unauthenticated on purpose, so it can back a load balancer or a container healthcheck. commit identifies the exact build, which matters when a report says “0.1.0” and that version spans hundreds of commits.

The binary can also check itself, which is what the container healthcheck uses:

Terminal window
jadarit --health

Logs go to stdout, to rotating files, and to an in-memory ring the dashboard reads live.

Terminal window
curl -b jar http://localhost:9001/api/v1/logs # recent events
journalctl -u jadarit -f # systemd
docker logs -f jadarit # container

Level, destination, rotation, and ring size are set in [logging]. RUST_LOG overrides the level when set, and takes per-module filters:

Terminal window
RUST_LOG=info,ms_egress=debug jadarit

Set json = true to emit JSON lines for a log collector. It is harder to read by eye, so leave it off unless something is consuming it.

A panic is captured to disk with its message and backtrace, rather than being lost to a restart.

Terminal window
curl -b jar http://localhost:9001/api/v1/crashes # list
curl -b jar http://localhost:9001/api/v1/crashes/<file> # read one
curl -b jar -X DELETE http://localhost:9001/api/v1/crashes/<file>

The server also notices when it exited uncleanly last time, using a run marker, so a crash that left no report is still visible after the fact.

Terminal window
curl -b jar -o diagnostics.json http://localhost:9001/api/v1/diagnostics

Describes the installation: version and commit, configuration, licence state, active streams, recent errors, and crash history. Attach this to a support request. It answers the first several questions we would otherwise have to ask.

Review it before sending if your configuration holds anything you would rather not share.

SymptomLook at
Publisher connects, nothing appearsLogs at publish time; check the application’s ingest mode and the key
Stream shows live but is frozenIt should end on disconnect. Check stats for time since the last frame
WebRTC works locally, not remotelypublic_ip and the UDP port range in [webrtc]
HLS plays, WebRTC does notAlmost always UDP reachability, not the server
Feature returns 402The licence lapsed past its grace period. See Licensing
Ad break never playsCheck the ad is conditioned via GET /apps/{app}/ads