Last updated: September 18, 2026
Span Metrics
dash0.spans
Counts the number of spans ingested by Dash0.
View the dash0.spans metric in Dash0
| Property | Value |
|---|---|
| Instrument | Counter |
| Unit | {span} |
| Stability |
dash0.spans is a synthetic metric: it is not stored as a metric time series,
but computed on-the-fly from the ingested span data. It can be filtered and
grouped by any span or resource attribute.
dash0.spans counts the spans that Dash0 received and stored, so it is not a measure of the total request rate of a sampled service.
If spans are sampled before they reach Dash0, for example with head sampling in the SDK or tail sampling in a collector, the count reflects only the spans that were forwarded, and sampling rules applied at ingestion reduce it further.
For request rates that do not depend on the sampling applied at ingestion, use dash0.spans.red, which is computed before that sampling decision is made.
Deprecated PromQL alias: dash0_spans_total.
For example:
sum by (service_name) ({otel_metric_name="dash0.spans"}) yields one
time series per value of service.name.
This synthetic metric does not expose attributes by default. You can group by span attributes and resource attributes using PromQL aggregations.
It is computed from the telemetry that reached Dash0, so sampling applied before ingestion also reduces what it reports.
Counters always start from zero regardless of query timeframe and represent only the increase over time, providing a clear view of trends without retaining absolute counts.
dash0.spans.duration
Distribution of span durations as a histogram.
View the dash0.spans.duration metric in Dash0
| Property | Value |
|---|---|
| Instrument | Histogram |
| Unit | s |
| Stability |
dash0.spans.duration is a synthetic metric: it is not stored as a metric
time series, but computed on-the-fly from the ingested span data. It can be
filtered and grouped by any span or resource attribute.
dash0.spans.duration describes the spans that Dash0 received and stored, not every span a service produced.
If spans are sampled before they reach Dash0, for example with head sampling in the SDK or tail sampling in a collector, the distribution describes only the spans that were forwarded, and sampling rules applied at ingestion narrow it further.
Sampling that is biased toward particular spans, such as tail sampling that keeps errors and slow requests, skews the distribution accordingly.
For latency distributions that do not depend on the sampling applied at ingestion, use dash0.spans.red, which is computed before that sampling decision is made.
Deprecated PromQL aliases: dash0_spans_duration_seconds_bucket,
dash0_spans_duration_seconds_sum, dash0_spans_duration_seconds_count.
This synthetic metric does not expose attributes by default. You can group by span attributes and resource attributes using PromQL aggregations.
It is computed from the telemetry that reached Dash0, so sampling applied before ingestion also reduces what it reports.
dash0.spans.red
Exponential histogram of span durations used for RED (Rate, Errors, Duration) metrics.
View the dash0.spans.red metric in Dash0
| Property | Value |
|---|---|
| Instrument | Histogram |
| Unit | s |
| Stability |
dash0.spans.red is generated on the basis of 100 percent of the spans that Dash0 receives, before any sampling rules are applied at ingestion.
Unlike the synthetic dash0.spans.duration metric, dash0.spans.red is stored as a real metric time series with a fixed set of attributes.
Spans that never reach Dash0 are not part of the calculation.
If you sample before sending to Dash0, for example with head sampling in the SDK or tail sampling in an upstream collector, dash0.spans.red is computed only on the spans that were forwarded.
Dash0 materializes dash0.spans.red at ingestion time for every service that sends spans.
No metric definition, recording rule, or span-to-metrics conversion has to be set up or maintained.
The metric uses an exponential histogram instrument, which provides high accuracy across a wide range of durations without requiring predefined bucket boundaries. Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
dash0.operation.name | Required | string | Human-readable name for the logical operation a span belongs to. [1] | GET /api/users; SELECT ... FROM orders; publish orders-topic | |
dash0.operation.type | Required | string | The type of the logical operation a span belongs to. [2] | http; db; rpc; messaging; headless; rum; unknown | |
otel.span.kind | Required | string | The span kind, as defined by the OpenTelemetry specification. | SERVER; CLIENT; INTERNAL; PRODUCER; CONSUMER | |
otel.span.status.code | Required | string | The span status code, as defined by the OpenTelemetry specification. | UNSET; OK; ERROR | |
service.name | Required | string | Logical name of the service. [3] | shoppingcart |
[1] dash0.operation.name: Derived at ingestion time from span attributes using pattern templates defined by
operation naming rules
(e.g., GET /api/users for HTTP, SELECT ... FROM my-table for database).
Cardinality reduction is applied automatically.
Can be overridden by setting the attribute before telemetry reaches Dash0.
[2] dash0.operation.type: Determined at ingestion time by evaluating span attributes against a prioritized
set of operation naming rules.
Cannot be overridden by users; Dash0 always computes it from the span data.
[3] service.name: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to unknown_service: concatenated with process.executable.name, e.g. unknown_service:bash. If process.executable.name is not available, the value MUST be set to unknown_service.