Exemplars link a metric to a trace

A latency histogram tells you the 99th percentile is four seconds and cannot tell you which request that was, and an exemplar attaches a trace id to a bucket.

$histogram->observe($seconds, $labels, exemplar: [
    'trace_id' => $trace->id(),
]);

# scraped alongside the sample:
# http_request_duration_seconds_bucket{le="5.0"} 1 # {trace_id="9c1f"} 4.2 1663...

# and in Grafana, a dot on the graph that opens the trace.

This closes the gap between “the system is slow” and “here is a slow request”, which is otherwise a search through a trace store with a time range and a guess. Support requires the OpenMetrics exposition format and a compatible scraper, both of which were available in 2022 and neither of which is the default.