Skip to main content

Auto-composed dashboards

Nobody should have to build a dashboard to see whether their service is healthy. InfraSage composes one per service, on the fly, from what the service actually emits, and you can reshape and save it when you know better than the defaults.

What gets composed

Open any service (Dashboards → pick a service, or from an alert). The platform:

  1. Classifies the service into an archetype (HTTP API, worker, database, proxy …) from its telemetry shape, with a visible confidence.
  2. Selects widgets from a curated catalog whose queries match the archetype, then drops any widget whose query returns nothing for this service. A service that emits no http_errors_total simply has no error-rate card, not an empty one.
  3. Ranks what matters now. Widgets tied to currently-anomalous metrics float to the top, and an LLM picker (Haiku, cached per service) orders the rest by usefulness given the service's current state. The picker only ranks: it can never hide data, and if it fails, the deterministic order stands.

The sections

SectionCards
OverviewGolden signals: request rate, error rate, latency, in-flight requests, business latencies
TrafficTop endpoints by volume
SaturationAnomaly-scored metrics (z-scores)
DependenciesService map, callers, and callees from trace-inferred topology
AlertsRecent alert history
Logs analysisError/fatal volume trend · latest error lines with trace ids · top learned log patterns
Traces analysisPer-operation latency (avg/max/calls) · slowest traces with drill-down ids

The "what's anomalous right now" strip pins live z-scores above the fold, and upstream/downstream chips show the blast radius at a glance.

Making it yours

  • + Add panel browses the entire widget catalog grouped by category. Add anything the composer didn't pick (your choice overrides the archetype filter), or re-add something you hid.
  • Pin floats a card to the top of its section; hide removes it; either action forks your personal saved layout. Per-widget time-window overrides let a 6h error chart sit among 1h cards.
  • Reset layout returns to the archetype default.

Layouts are saved per user per service:

GET /api/v1/dashboards/service/{service_id}?time_window=1h # composed dashboard, one round-trip
GET /api/v1/dashboards/catalog # the full widget catalog
GET/POST /api/v1/dashboard-layouts/service/{service_id} # your saved layout

Group dashboards

Services cluster into groups (trace-correlated), each with a composed group view. Same idea, one level up.

:::tip When you outgrow the composition The dashboard answers "how is this service?" For "let me see exactly this metric / log / trace," use Explore. Every widget's underlying data is one deep-link away. :::