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.

MetricSourceDescription
dash0.logsLog recordsCounts log occurrences over time, supporting filtering and grouping by log and resource attributes.
dash0.spansSpans (traces)Counts spans over time, supporting filtering and grouping by span and resource attributes.
dash0.span.eventsSpan 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)

MetricSourceDescription
dash0.resourcesTelemetry 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.datapointsIngested metric data pointsTracks 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)

MetricSourceDescription
dash0.spans.durationSpan 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)

MetricTypeDescription
dash0.check.enablement_conditions.valueGAUGEEncodes whether a check’s enablement conditions passed (1 = passed, 0 = failed).
dash0.check.evaluation.outcomeGAUGEEncodes the outcome of a check’s evaluation as an enum.
dash0.check.evaluation.valueGAUGEEncodes the value returned by the check’s evaluation.
dash0.check.evaluation.valueGAUGEEncodes the value returned by the check’s evaluation.
dash0.check.statusGAUGERepresents the check’s current state as an enum.
dash0.check.threshold.criticalGAUGERepresents the critical threshold for evaluation.
dash0.check.threshold.degradedGAUGERepresents the degraded threshold for evaluation.

dash0.issues (Failed Checks Tracking)

metricTypeDescription
dash0.issue.statusGAUGEEncodes the issue status as an enum.

How-To Guide

Querying Synthetic Metrics in Dash0

  1. Navigate to the Dash0 Query Builder.
  2. Select the synthetic metric you want to analyze.
  3. Apply filters and grouping as needed.
  4. Adjust time ranges to explore historical trends.

Execute the query to visualize results.

Examples

Monitor Performance

P99 Duration filtered by service.name=frontend:

Monitor Performance

Example query:

sh
1
histogram_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:

Troubleshoot Anomalies

Example query:

sh
1
sum 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

Troubleshoot Anomalies

Example Query:

sh
1
sum by (service_name) (rate({otel_metric_name = "dash0.logs", otel_log_severity_range = "ERROR"}[1m])) > $__threshold

Grouping Resources

Grouping Resources

Example query:

sh
1
sum 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