Health and logs
The containers
Section titled “The containers”| Container | What it is | Runs on |
|---|---|---|
quasar-seed |
The one container you declare. It makes sure the recovery actor exists. | Every machine |
quasar-recovery |
The recovery actor. Creates and replaces the other Quasar services; answers quasar-recovery status. |
Every machine |
quasar-postgres |
All state. | Control plane, with Quasar’s own database |
quasar-control-plane |
API, signaling, scheduler, web app. Runs migrations at startup. | Control plane |
quasar-node-agent |
Runs sessions: compositor, encoder, app containers. Host networking. | GPU hosts |
During a session you’ll also see the app container and an audio sidecar (PipeWire).
During an update, a stopped quasar-node-agent.kept may briefly appear: the old
agent, kept until the new one is verified.
On a legacy Compose install,
use docker compose -f deploy/docker-compose.yml logs <service> and
docker compose -f deploy/docker-compose.yml exec <service> <command> for logs
and container commands. On Podman, use podman in place of docker.
Health checks
Section titled “Health checks”Control plane (works over plain HTTP, before certificates are set up):
curl http://localhost:8080/health# {"status":"ok","db":"ok"}Node agent, on its host:
curl http://127.0.0.1:9091/health# {"status":"ok","sessions":0,"connected":true}connected: false means the agent is up but can’t reach the control plane.
Containers and the recovery actor’s view:
docker ps --filter label=io.quasar.installationdocker exec quasar-recovery quasar-recovery statusdocker logs --tail 100 quasar-control-planedocker logs --tail 100 quasar-node-agentdocker logs --tail 100 quasar-recoveryAdd -f when you want to follow new messages.
Node agent errors only:
docker logs --tail 2000 quasar-node-agent 2>&1 \ | grep -iE '\b(error|fatal|panic)\b'Seed and recovery actor lines carry a token=, listed in
Install and startup problems.
Log lines worth recognising
Section titled “Log lines worth recognising”| Line | Meaning |
|---|---|
render_node <raw> -> <canonical> |
The agent resolved a render node symlink (expected on multi-GPU hosts). |
EGL hardware-acceleration enabled |
The compositor has hardware acceleration. |
codec resolved |
The session’s codec decision and why. Check here for an unexpected codec. |
| Line | Meaning |
|---|---|
no VA H264 encoder found |
The VA encoder didn’t register. Usually a stale GStreamer registry or a stray env var forcing software Mesa. |
quasar-renderer-degraded |
Frame import fell back to software. Two within 30 s fail the session unless QUASAR_REQUIRE_HW_RENDER=0. |
media path interrupted |
Catch-all. The cause is usually a few lines above, often the app exiting at once or lacking network. |
Steam needs to be |
Steam couldn’t start, almost always no network. See The Steam library. |
no migration found for version N |
Control plane rolled back below the database. See the hard rule. |
no command specified |
An overlay cleared the command on an image with no entrypoint. |
Reading a session, not a log
Section titled “Reading a session, not a log”For a specific session, the admin session detail is better than logs. See Sessions and audit log and Diagnostics.
Checking the whole stack quickly
Section titled “Checking the whole stack quickly”On a machine running Quasar from a repository checkout (not a registry install):
make diagnose # container states, health, recent errorsmake diagnose-bundle # the same, redacted, to shareSee Developing Quasar.
Metric retention
Section titled “Metric retention”Running sessions keep a rolling hour of telemetry; ended sessions keep it for 24 hours by default. Take a diagnostic bundle before then if you need it longer.