Synthetic Metrics
Dash0 provides synthetic metrics to help users analyze logs, spans, and related telemetry data dynamically without requiring predefined metric aggregations.
Overview
Synthetic metrics are calculated on-the-fly, based on other telemetry ingested by Dash0. Synthetic metrics are not charged on your bill.
Synthetic metrics can query only data that exists in your organization. Spans, logs and metric data points that have expired their retention period, can not be queried via synthetic metrics.
Key Takeaways / Use Cases
- Use synthetic metrics to count and alert logs, spans, span events, metric data points and resources dynamically.
- Avoid upfront metric definitions, making observability more flexible.
- No additional charges on telemetry already sent to Dash0.
Enable advanced query-building for performance monitoring, anomaly detection, and billing analysis.
Retention and Availability
Synthetic metrics are calculated on the fly and rely on retained logs and spans:
- Logs, spans and span events have a 30-day retention period.
- Metric data points have a 13-month retention period.
Cost
Synthetic metrics do not incur in extra costs. In Dash0's perspective, you already pay for them by sending the raw telemetry (spans, span events, log records, metric data points) the synthetic metrics are calculated on.
Available Metrics
Dash0 provides the following synthetic metrics, categorized into counters, gauges, and histograms.
Counters (Track Occurrences Over Time)
Note: Dash0 counters behave differently from traditional metrics. They always start from zero regardless of the query timeframe, and they only represent the increase over time. This ensures that the counters provide a clear view of trends and changes without retaining absolute counts.
Metric | Source | Description |
---|---|---|
dash0.logs | Log records | Counts log occurrences over time, supporting filtering and grouping by log and resource attributes. |
dash0.spans | Spans (traces) | Counts spans over time, supporting filtering and grouping by span and resource attributes. |
dash0.span.events | Span events (structured data recorded within a span) | Counts the number of span events in traces, supporting filtering and grouping by span event, span and resource attributes. |
Gauges (Track State Over Time)
Metric | Source | Description |
---|---|---|
dash0.resources | Telemetry metadata (resources) | Tracks the presence of resources (e.g., hosts, services, pods) sending telemetry. Supports filtering and grouping by resource attributes. Tracks the existence of resources, not a count. A resource disappears from the metric if it stops sending telemetry. |
dash0.metrics.datapoints | Ingested metric data points | Tracks the count of metric data points arriving in Dash0. Supports filtering and grouping by metric data point and resource attributes. |
Histograms (Track Distributions Over Time)
Metric | Source | Description |
---|---|---|
dash0.spans.duration | Span durations (timings) | Represents the distribution of span durations as a histogram, allowing detailed analysis of latency trends. Supports filtering and grouping by span and resource attributes. |
Additional Metrics
dash0.check.*
(Check rules)
Metric | Type | Description |
---|---|---|
dash0.check.enablement_conditions.value | GAUGE | Encodes whether a check’s enablement conditions passed (1 = passed, 0 = failed). |
dash0.check.evaluation.outcome | GAUGE | Encodes the outcome of a check’s evaluation as an enum. |
dash0.check.evaluation.value | GAUGE | Encodes the value returned by the check’s evaluation. |
dash0.check.evaluation.value | GAUGE | Encodes the value returned by the check’s evaluation. |
dash0.check.status | GAUGE | Represents the check’s current state as an enum. |
dash0.check.threshold.critical | GAUGE | Represents the critical threshold for evaluation. |
dash0.check.threshold.degraded | GAUGE | Represents the degraded threshold for evaluation. |
dash0.issues
(Failed Checks Tracking)
metric | Type | Description |
---|---|---|
dash0.issue.status | GAUGE | Encodes the issue status as an enum. |
How-To Guide
Querying Synthetic Metrics in Dash0
- Navigate to the Dash0 Query Builder.
- Select the synthetic metric you want to analyze.
- Apply filters and grouping as needed.
- Adjust time ranges to explore historical trends.
Execute the query to visualize results.
Examples
Monitor Performance
P99 Duration filtered by service.name=frontend:
Example query:
1histogram_quantile(0.99, sum by(service_namespace, service_name) (rate({otel_metric_name = "dash0.spans.duration", service_name = "frontend", service_namespace = "opentelemetry-demo", dash0_operation_name != ""}[$__interval]))) * 1000
Troubleshoot Anomalies:
Span Rate using dash0.spans
filtered by the otel.span.status_code
and grouped by service_name
:
Example query:
1sum by (service_name) (rate({otel_metric_name = "dash0.spans", otel_span_status_code = "ERROR"}[$__interval]))
Log Error Rate Check Rule that calculates the rate of log with severity=ERROR grouped by service.name
Example Query:
1sum by (service_name) (rate({otel_metric_name = "dash0.logs", otel_log_severity_range = "ERROR"}[1m])) > $__threshold
Grouping Resources
Example query:
1sum by (k8s_namespace_name)({otel_metric_name = "dash0.resources"})
Using Synthetic Metrics for Observability
- Troubleshoot Anomalies: Identify spikes in logs, spans, and errors.
- Monitor Performance: Track latency using dash0.spans.duration.
- Detect Infrastructure Issues: Use dash0.resources to identify missing components.
Next Steps
- Learn more about Dash0 Query Builder for advanced filtering.
- Integrate synthetic metrics into your alerting pipelines.
Explore distributed tracing with Dash0’s span analysis tools.
Last updated: March 19, 2025