Skip to main content
An exemplar is one sampled measurement attached to a histogram bucket. It carries the trace id and span id of the request that produced the measurement. That is the link from “p99 got worse at 14:20” to “here is one of the slow requests.”

The pivot, step by step

1

Find the spike

In the Metrics Explorer, chart a histogram such as http.server.request.duration with p95 or p99. Group it by route if you want to know which endpoint moved.
2

Open the exemplars

Click the series row in the table under the chart. Or switch to Heatmap and click the cell at the time and value you care about, or to Dist and click a bar. The Exemplars drawer opens with the sampled requests in that slice: time, duration, and trace id.
3

Open the trace

Click View trace on an exemplar. The Traces page opens that trace with its waterfall, so you see which span took the time.
4

Read the logs

Click View logs in the trace. The Logs page opens filtered to the same trace_id, so every log line the request wrote is there.

What decides whether an exemplar exists

  • Exemplars are sampled. Each histogram bucket keeps a few per export interval, so a bucket with little traffic can have none even when the metric line shows a value.
  • An exemplar attaches only when the measurement happened inside a trace, or carried an exemplar attribute of its own. A measurement taken outside any span has nothing to link to.
  • A trace exists for an exemplar only when the request was sampled. The Node.js SDK marks every exemplar with trace_flags: 01 means the trace was exported, 00 means the ids exist but no trace was sent. With 00, filter Logs by the trace id instead of opening the trace.

Which histograms carry exemplars

Metrics

Build the chart the pivot starts from.

Custom metrics

Record your own histograms with exemplars.