Wheelhouse docs

Diagnostics#

Monitoring → Diagnostics is the page you open when something is wrong. Six tabs, each a different question, each backed by a read the router already knows how to answer. The tab is held in the page's own state, so it resets to Health on a reload; the URL does not carry it.

TabQuestion it answersEndpoint
HealthIs connection tracking under pressure?GET /api/conntrack/stats, GET /api/sessions
ToolsWhere does a packet go, and what does a name resolve to — from the router?POST /api/diagnostics/traceroute, GET /api/diagnostics/lookup
NeighboursWhat is on the wire, and what is each interface plugged into?GET /api/neighbors, GET /api/lldp
ProcessesWhat is actually running on the box?GET /api/processes
TimeIs the clock right, and where is it getting the time?GET /api/ntp, GET /api/system
CaptureHow do I get a pcap?none — it hands you the command

What changes something, and what does not#

Most of this page is read-only, which is what makes it safe to open on a router you do not yet understand. Three exceptions:

ActionTabEffect
Turn on / Turn off LLDPNeighboursStages set service lldp interface all or delete service lldp. Nothing happens until you commit.
Run a tracerouteToolsRuns a command on the router immediately. Needs the operator role. It changes no configuration.
Look up a nameToolsAn op-mode read; needs only the viewer role.

Traceroute sits on the operator side of the API because it is a command executed on the router, even though it configures nothing — agent/main.go routes it through writeable, while the lookup is a readOnly route.

Poll rates#

ReadInterval
Connection-tracking statistics5 s
Sessions (for the tracked-flow count)5 s
ARP/NDP neighbours10 s
Process table10 s
LLDP15 s
NTP30 s

What the page will not do#

  • It cannot capture packets. The Capture tab composes the command for you to run at the console. POST /api/capture answers 501. See Capture.
  • It has no ping. Traceroute and a DNS lookup are the two commands offered.
  • It shows no IPv6 route or neighbour view of its own. The neighbour table is whatever show arp prints; the empty state names show ipv6 neighbors as the command to run by hand.
  • It keeps nothing. Every number here is the current value. For retention, scrape /metrics.

See also#

  • Telemetry — the other live-number path, and /metrics.
  • Logs — the journal, which is usually the next stop.
  • Dashboard — the tracked-flow count also appears there.

Checked against ui/src/pages/Diagnostics.tsx, agent/main.go, agent/gaps.go, agent/opmode.go, agent/parity.go.

Updated 2026-09-02 manual diagnostics troubleshooting