Observability
Combine metrics, logs, and events from your feature pipelines into a single custom view.
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.
This walkthrough builds a first dashboard from scratch.
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.

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:

Choose Data widget to open the widget editor:

At the top of the editor, pick a Data source — Metrics, Logs, Access Logs, or Kube Events — and a Visualization — Timeseries, 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.
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.

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.

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.
Drag a widget by its top to move it, and drag its bottom corners to resize. Every layout change saves automatically.

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.
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:

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

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 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:


Two widget types carry no data:
As an example:

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.
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.
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 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.

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.
Dashboards serialize to a portable JSON format, which powers several features in the dashboard’s actions menu:

<name> (Copy) with the same widgets and layout, and takes you to
it..dashboard.json file, or copy
the JSON to the clipboard.Exports are portable across environments — a dashboard exported from one environment can be imported into another.
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.