Wheelhouse

You can see what the box is doing#

Configuration says what should be true. This is the other half: what is true, shown beside it, with the disagreements named.

How to get the image What is finished, and what is not

Live, meaning live#

The Dashboard's throughput charts are driven by differenced interface counters arriving over a WebSocket every two seconds.

The stream, and what it costs the router#

The stream bypasses the agent's read cache. When the router cannot be read the frame arrives as an error rather than as silence, so a failed read never looks like an idle router.

Every call into VyOS' HTTP API forks a process on the router, so the agent budgets calls rather than intervals: one throughput sampler reads the interface counters every five seconds, an open Dashboard adds one interface read every two seconds, and operational reads are cached and served stale-while-revalidating. Idle, that is about a dozen calls a minute.

Drift, named where it happens#

Wherever intent and reality disagree, the page says which:

  • an interface the kernel reports that the configuration does not declare;
  • a qdisc on an interface that is not the one the QoS policy specifies;
  • a static route declared but absent from the forwarding table;
  • a container declared but not running;
  • a DHCP reservation with no live lease.

That is the failure a page cannot show if it only reports your configuration back to you: a daemon running yesterday's configuration. Configured values render as plain fields and live values carry a pulse dot or a counter column, so you can always tell which you are looking at.

The pages#

PageShows
Sessionsconntrack flows, top talkers, per-host and per-port aggregation, and the flow-export editor (system flow-accounting netflow)
Logsthe journal, with filters and a live tail
Diagnosticsconntrack health, processes, time sync, traceroute through the router's own endpoint, and show host lookup
Diagnostics → Neighborsthe ARP table beside LLDP: what the switch says it is, and which of its ports you are on
Firewall, NATper-rule hit counters joined from the router's own statistics
Certificatesthe PKI store with expiry dates

Prometheus#

/metrics is a Prometheus endpoint, and it covers the agent as well as the router: request counts and a latency histogram, VyOS API reachability and time since last success, calls and failures into the router's API, staged operation count, active sessions, accounts, API tokens, per-interface throughput, cache and primer counters, and three wheelhouse_desired_* metrics for the desired-state loop.

It needs a principal unless you pass --metrics-public.

What is not there#

An nftables ruleset inspector — the real chains, with counters, mapped back to the configuration objects that generated each rule — is not built. Firewall hit counters come from the router's firewall statistics instead.

Read on#

Point the agent at a router you already have

The agent runs off-router against an existing VyOS box. Everything that reads works, which is enough to judge the pages on this one.

How to get the image What you actually get