make collector-it) and by tests/otelapps with the apipath tag, which scans every queued
message for names and marker strings that must not be there.
Kept
Dropped
- Every other metric: counters, gauges, runtime and database metrics, client-side HTTP metrics, and your own custom metrics.
- Every other attribute on the kept metrics, for example
server.address,url.scheme,user_agent.originalor anything you added. - Every other resource attribute: host, container, cloud, process, SDK and deployment
attributes. Attributes that claim a tenant (
scf.*,tenant.id) are replaced from the token. - Spans after the request metric was derived from them: names, events, links, status messages and attributes are never stored. Non-server spans are discarded at once.
- Logs: accepted, so your SDK reports no errors, and discarded.
- Scope names and versions, schema URLs, descriptions and exemplars.
- Gauge and sum versions of the duration metric: only histograms are read.
Changed before storing
- Methods outside the standard set (CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT,
TRACE, QUERY) become
_OTHER; the comparison is case-sensitive. - Routes are normalized: ids, keys, hashes and similar values become placeholders, and only 300 distinct routes and 50 services per project and UTC day are kept apart (http-route.md).
error.typeis redacted; a value longer than 64 bytes becomes_OTHER.- Histograms are stored on one fixed set of 14 bucket bounds, the advisory bounds of
http.server.request.durationin OpenTelemetry semantic conventions 1.45.0, from 5 ms to 10 s. Data that arrives with other bounds, and every exponential histogram, is re-bucketed and its percentiles are marked approximate. A percentile above 10 seconds is shown as ”> 10 s”. - Temporality does not matter: cumulative and delta both arrive as exact per-minute counts.