Widget types and configuration

Click + Add Widget in dashboard edit mode to open the Configure widget modal. Configuration is the same shape regardless of widget type — fields adjust based on what data source you pick.

Title

Free text. Shown above the rendered widget. Defaults to a name based on the data source.

Render as

Pick how the widget displays. Seven options:

Render typeUse for
Single ValueOne big number — total count, current p99, ROWS.
TableRows and columns with exact values.
Time SeriesLine/area chart over time.
Bar ChartCategorical bars (top-N services, namespaces, etc).
Top ListLeaderboard with horizontal share bars.
Log StreamScrollable list of recent log lines.
MarkdownFree-form text panel. No data, just notes/headings.

Data source

Ten data sources, picked as button tiles:

SourceWhat you query
ContainersLive container status — CPU, memory, restarts, healthy/unhealthy.
PodsPod-level data.
NodesNode-level data.
DeploymentsKubernetes deployments — replica counts, availability.
MetricsTime-series metrics.
LogsRaw log lines.
AlertsActive alert rules + their state.
IncidentsIncident records.
ExceptionsGrouped stack traces.
InfraInfrastructure summary data.

Scope

Per-widget filters that narrow what the widget queries. The available fields depend on the data source:

Data sourceScope fields
Containersnamespace, deployment, container
Podsnamespace, deployment, pod
Nodesnode
Deploymentsnamespace, deployment
Metricsnamespace
Logsnamespace, service, level
Alertsseverity, state
Incidentsstatus, severity
Exceptionsservice
Infranamespace

Default is "Any" for each. The widget inherits dashboard-level scope filters too — so if you set namespace: payments at the dashboard level, every widget already filters to that namespace.

There is no per-widget source field. Every widget inherits its source from the dashboard's global scope picker at fetch time, which is what lets one dashboard work as a template across every source you can view. To scope a dashboard to one source, switch the global picker rather than looking for a widget setting.

Columns

Pill list of fields to render. Click ✕ on a pill to remove a column. Defaults are sensible (e.g., for Containers: Container, Namespace, Pod, Node, CPU%, Memory, Restarts, Status).

Available columns depend on the data source.

Filters

Custom predicates beyond Scope. Click + Add filter to add a row: pick a field, an operator (=, !=, >, <, contains), and a value.

Filter rows AND together. Use multiple rows to narrow further.

Sort by

Dropdown of every column with a high→low and low→high option. Default (none) = no explicit sort.

Limit

Numeric input. Default 50. Caps the rows the widget renders. For Single Value widgets, this controls how many entries the underlying query returns before reducing to one number.

Time range

Dropdown:

  • Inherit dashboard (default) — uses the dashboard's global time picker.
  • Last 15m / 1h / 6h / 24h / 7d — overrides the dashboard for this widget.

Override is useful when you want a "last 7 days" trend chart alongside "last 15 minutes" tiles on the same dashboard.

Preview

A live preview of the configured widget renders at the bottom of the modal as you change settings. The preview uses your real data — what you see is what the widget will look like once saved.

Save

Save widget persists the widget to the dashboard and closes the modal. Cancel discards your changes.

The dashboard itself is not saved until you click the dashboard-level Save button at the bottom — so you can experiment with several widgets and abandon them all with Cancel if needed.