Dashboards allow you to visualize metrics, logs, and events from your feature pipelines in a single, highly customizable view. A dashboard is a grid of widgets — timeseries charts, tables, and single-number statistics over your data, plus text notes and section titles to give the page structure. Dashboards are shared across your environment: every teammate sees the same dashboards, and every edit saves automatically.

Getting started

This walkthrough builds a first dashboard from scratch.

Create a dashboard

In the left navigation, open Monitoring > Dashboards. The Dashboards page lists every dashboard in the environment, along with its owner, when it was last updated, and how often it is viewed. You can search by name, sort the columns, and star the dashboards you use most.

Click New dashboard, and you’ll see a new empty dashboard named “Untitled dashboard”. Click the title to rename it, and click below the title to add a description.

A new, empty dashboard with an editable title and a dashed "Add widget" tile

Add your first widget

Click Add widget in the top right of the screen, or click the dashed placeholder tile on the empty grid. The menu offers three kinds of widgets:

  • Data widget — a chart, table, or statistic over your metrics, logs, access logs, or Kube events.
  • Text — a free-form markdown block.
  • Section title — a full-width heading with a divider line.

The Add widget menu, with Data widget, Text, and Section title options

Choose Data widget to open the widget editor:

The data widget editor as it first opens, with data source and visualization pickers above the configuration form

Choose a data source and visualization

At the top of the editor, pick a Data sourceMetrics, Logs, Access Logs, or Kube Events — and a VisualizationTimeseries, Table, or Statistic. Options that don’t apply to the selected source are disabled; see Visualizations below for examples of each. The editor shows a live preview of the widget as you configure it.

Configure the query

The editor below the pickers depends on the data source.

For Metrics, you build one or more series: pick a metric (for example Feature Latency or Query Count), a window function (mean, sum, a percentile, and so on), optional group-by dimensions, and optional filters. You can also add formulas that combine series arithmetically.

The data widget editor with the Metrics source: a series with kind, window, group by, and filters, next to a live preview

For Logs, Access Logs, and Kube Events, you can write a search query using the same search syntax as the explorer pages, then describe what to show with an aggregation row.

The data widget editor with the Logs source: a search query and an aggregation row above a live preview

Optionally give the widget a name — if you leave it blank, Chalk derives one from the configuration — then click Add widget. The widget lands in the first free slot on the grid.

Arrange the layout

Drag a widget by its top to move it, and drag its bottom corners to resize. Every layout change saves automatically.

Different sized widgets


Visualizations

A data widget renders as one of three visualizations. Timeseries and Statistic work with every data source; Table is for Logs, Access Logs, and Kube Events. Mixing them lets a dashboard pair headline numbers with the charts and tables that explain them.

Timeseries

Values over time, drawn as lines or stacked bars, with one series per group. For example, this widget overlays the p95, p50, and mean of access log duration, filtered to a related set of HTTP paths, to profile their latencies:

A timeseries of p95, p50, and mean of access log Duration, filtered to one HTTP path

Table

An aggregate table shows one row per group with a column per measure. For example, this widget counts access logs by HTTP path:

An aggregate table counting access logs by HTTP path, with value bars on the sorting measure

With the List view, the table instead shows the matching records themselves — a live tail on the dashboard. For example, this widget lists recent log lines matching a specific error message:

A list table tailing log lines that match a specific error message

Statistic

A single big number summarizing the whole time range, useful for headline tiles. A statistic reduces to one value, so it takes a single measure or series and no grouping. You can add a unit label (for example queries or ms) and turn on Compare to previous period to show the change versus the preceding window of equal length. For example, this statistic widget counts Evicted Kube events:

A statistic widget counting Evicted Kube events over the selected time range

Putting it all together

A dashboard view of kube oomkills and evicts

Text and section titles

Two widget types carry no data:

  • Text widgets render GitHub-flavored markdown — headers, lists, links, code, and tables. Use them for runbook links, context on what a section means, or instructions for on-call engineers. The editor shows a live preview, and long content scrolls within the widget.
  • Section title widgets render a heading followed by a divider line that spans the row. Leave the title empty to get a plain divider.

As an example:

A dashboard section with a section divider and markdown text

Working with widgets

Every widget has a menu with Edit, Duplicate, and Delete. Duplicate creates a copy of the widget — configuration and size included — in the first free slot, which is the fastest way to build a row of similar charts: configure one, duplicate it, and edit the copies. Metric widgets additionally offer Open in metrics explorer to investigate the same configuration outside the dashboard.

Hovering a chart reveals its toolbar: switch the chart type, zoom into a time range by dragging, view fullscreen, and annotate. Hovering any chart also highlights the same moment in time across every chart on the dashboard.

Dashboard controls

The controls in the top right header apply to every widget on the dashboard at once. They are part of the URL — not saved with the dashboard — so copying a link shares exactly what you are looking at.

Time range and live data

The time selector uses a relative window (ex. “Past 3h”) or an absolute range. With a relative window, Live mode (on by default) keeps the dashboard updating; turning it off reveals a manual refresh button. Zooming into any chart narrows the whole dashboard to that range.

The time selector open, with relative window presets, a custom range picker, and the Live toggle

Annotations

The annotations menu overlays operational context on every chart at once: incidents, deployments, Kubernetes resource patches, and custom annotations you’ve drawn on charts. Annotations make it easy to answer “what changed here?” — for instance a latency spike that lines up with a deployment marker.

A chart with deployment and incident annotations overlaid on the series

TV mode

Open TV mode from the dashboard’s actions menu to get a chrome-free, read-only rendering of the dashboard that refreshes every five minutes. Exit with the menu in the corner.

Duplicating, exporting, and importing

Dashboards serialize to a portable JSON format, which powers several features in the dashboard’s actions menu:

The dashboard actions menu, with Duplicate, Export as JSON, Copy JSON, and Delete options

  • Duplicate — creates <name> (Copy) with the same widgets and layout, and takes you to it.
  • Export as JSON / Copy JSON — download the dashboard as a .dashboard.json file, or copy the JSON to the clipboard.
  • Import — from the Dashboards page, click Import and paste JSON or upload a file. Invalid documents are rejected with specific, per-field errors so you can fix and retry.

Exports are portable across environments — a dashboard exported from one environment can be imported into another.

Dashboards and alerting

Dashboard widgets visualize; they do not alert. To get notified when a metric crosses a threshold, create a monitor, which owns its own metric configuration and trigger independently of any dashboard. Monitors are configured under Alerting > Monitors, and alert routing is covered in Alert Configuration.