Skip to content

Dashboards ​

A dashboard is a grid of widgets over one time window. Open them under Telemetry → Dashboards. Every Events Stream also gets a built-in Web Analytics dashboard.

To add a widget, build a search in Explore or a metric query and click Add to Dashboard, or click Edit → Add Widget on the dashboard itself. Each widget reads one of three things:

  • Logs, spans and events: a count or aggregation of a field over a search.
  • Metrics: one or more metric queries, combined with formulas.
  • Monitors: whether each monitor was OK, degraded or failing over the window.

Not sure where to start? Import → Example: Kitchen Sink loads a dashboard that uses every panel, a variable of each kind and the annotations.

Panels ​

PanelShows
Time seriesLines over time, one per query and group.
StatOne big number per series, with a sparkline behind it.
GaugeEach series' value on a dial from min to max, its thresholds around the rim.
Bar gaugeA bar per series, handy for ranking routes or paths.
TableA row per series (grouped fields get their own columns) and a column per value: range, last, mean, max, min, total, count, first. Click a header to sort.
State timelineA row per monitor (or series), colored by state over time.
Status historyThe same rows cut into equal cells, each showing the worst state in it.
HeatmapHow a histogram metric's values spread over time.

State timeline and status history read monitors directly: pick monitors (none means every monitor in the namespace), and turn on a row per group for grouped monitors. Given a metric or search instead, they color each value by its thresholds and value mappings, so a queue depth can read Idle, Busy or Backed up.

Display options ​

OptionWhat it does
UnitHow values are written: ms, s, By (bytes), percent, percentunit (0 to 1 as a percentage), req/s, or any label.
DecimalsFixed decimal places, instead of automatic.
ValueWhich value a stat, gauge or bar gauge shows. Range is the query's own aggregation over the whole time range: a true p95, the average rate, the total. Last is the newest point; mean, max, min, total, count and first read the points on the chart. Auto (the default) is Range, or Last for a gauge metric, whose newest value is its value.
Min / MaxA gauge's range. Without them: 0 to 100 for percentages, else from the data.
ThresholdsColors from a value up: a base color, then yellow from 70, red from 90, say.
Value mappingsA value or range shown as text, with an optional color: 0 to 40 shows as Idle. A mapping wins over thresholds.
ColorFor stats and tables: color the value, its background, or neither.
Time RangeThe dashboard's window, or this widget's own (the last 24 hours, say).

A number that describes a period, such as a p95 or an error rate, belongs on Range: the value then follows the chosen time range, and stays put while the dashboard refreshes. The mean of each bucket's p95 is not the p95, and the newest bucket is still filling, so it moves with every refresh.

Time and Live ​

Pick a window from 15 minutes to 7 days, or Custom for any duration, such as 45m, 2h30m or 10d. The field remembers recently used custom ranges, and Pick dates sets a fixed from and to. Live refreshes the dashboard every 10 seconds (Web Analytics every 30), only redrawing what changed. It pauses while the window is in the background and catches up on return. A custom window doesn't move, so it gets a Refresh button instead.

The link keeps the dashboard, window and variable picks, so a copied URL opens exactly the same view.

Variables ​

Variables add pickers above the widgets. Use one in any filter as field:$name:

KindValues from
Values from dataA field of logs, spans and events (the most frequent in the window first), or a metric's tag.
Custom listTyped values, such as prod, staging.
Text boxWhatever is typed.

One pick matches exactly; several match any of them (service:$service with api and web means (service:api OR service:web)); All, or no pick, drops the filter. A negated filter (-service:$service) excludes every pick. $name outside a filter becomes the picked value. Set variables up under Edit → Variables.

Annotations ​

Incidents in the namespace shade the time series they overlap, with a marker where each starts; hovering a chart shows incident names. Edit can also mark monitors, so the times those monitors weren't up shade the charts too. The Annotations button hides them. Explore's chart and histogram show incidents as well.

Formulas ​

A formula combines a widget's metric queries by name (a, b, ...), group by group:

KindExamples
Arithmetica / b * 100, a % 60, a ^ 2
Comparisona > 100 keeps only the values above 100. a > bool 100 gives 1 or 0 instead. ==, !=, <, <=, >= too.
Seriesa and b keeps a where b has a value; a or b fills gaps in a from b; a unless b keeps a where b has none.
Mathabs, ceil, floor, round(x, 0.1), sqrt, exp, ln, log2, log10, sgn
Limitsclamp(x, 0, 100), clamp_min(x, 0), clamp_max(x, 100)
Across groupssum(a), avg(a), min(a), max(a), count(a) collapse every group into one line

A query without groups applies to every group of the other side, so a / b works when only a is grouped. Division by zero leaves a gap rather than an infinite value. A counter, a count or a rate with nothing to count reads 0, so an error ratio is 0% in a quiet minute, not missing; gauges, averages and percentiles have no value where nothing was reported. The formula box suggests functions and query names while typing.

Import and export ​

Export saves a dashboard as a file, with its widgets, display options, variables and settings. Import takes that file back (matching Streams by name and type) or a Grafana dashboard's JSON:

  • Stat, gauge, bar gauge, table, state timeline, status history, time series and heatmap panels convert to the same panels. Bar and pie charts become bar gauges; text and row panels are skipped.
  • Prometheus queries become metric queries matched to existing metric names, including arithmetic, comparisons, and / or / unless and the functions above.
  • Template variables become variables, and filters on them (env=~"$env") keep working.
  • Units, decimals, min and max, thresholds, value mappings and the stat value carry over.

Anything that didn't convert is listed after the import.

© 2026 Latency Labs LLC