Grafana Series - Unified Display - 9 - Jaeger Data Source
This article was last updated on: May 17, 2026 am
Series Articles
Configuring the Jaeger Data Source
Grafana ships with built-in support for Jaeger, which provides open-source end-to-end distributed tracing. This article explains the configuration and querying for the Jaeger data source.
Key configuration items:
- URL: The URL of the Jaeger instance, e.g., http://localhost:16686 or http://localhost:16686/trace/
- Enable Node Graph: ✔️. Once enabled, Grafana displays a Node Graph (trace topology diagram) above the trace view.
Span Bar
The Span bar settings help you display additional information in the span row.
You can choose from three options:
| Name | Description |
|---|---|
| None | Adds nothing. |
| Duration | (Default) Displays the span duration on the span row. |
| Tag | Displays a span tag on the span row. You must also specify which tag key to use for the tag value, e.g., span.kind. |
Trace to Logs
│ 📝Notes:
│
│ The Trace to logs feature only supports certain log solutions.
│ Grafana Loki and Splunk are supported; Elasticsearch is not.

The Trace to logs settings configure the traces-to-logs feature, which is available when you integrate Grafana with Jaeger.
There are two ways to configure the trace-to-logs feature:
- Use a simplified configuration with a default query, or
- Configure a custom query where you can use template language to interpolate variables from the trace or span.
Using Simplified Configuration
- Select the target data source.
- Set the start and end time offsets. Since log timestamps may not exactly match the timestamps of spans in a trace, you may need to search within a larger or shifted time range to find the desired logs.
- Select the tags to use in the log query. The tags you configure must exist in the span attributes or resources for the trace-to-logs span link to appear. You can optionally configure a new name for a tag. This is useful if the tag name contains dots and the target data source does not allow dots in tag names (as shown above). In that case, you can, for example, remap http.status to http_status.
- Optionally, toggle on Filter by trace ID and/or Filter by span ID to further filter logs if your logs consistently contain a trace ID or span ID.
Using a Custom Query
- Select the target data source.
- Set the start and end time offsets. Since log timestamps may not exactly match the timestamps of spans in a trace, you may need to expand or shift the time range to find the desired logs.
- Optionally, select tags to map. These tags can be used in the custom query via the ${__tags} variable. This variable interpolates the mapped tags with the appropriate syntax for the data source and only includes tags that exist in the span, omitting those that do not. You can optionally configure a new name for a tag. This is useful when the tag name contains dots and the target data source does not allow dots in tag names. For example, you can remap http.status to http_status. If you do not map any tags here, you can still use any tag in the query, such as method=“${__span.tags.method}”.
- Skip the Filter by trace ID and Filter by span ID settings, as they cannot be used with custom queries.
- Toggle on Use custom query.
- Specify a custom query for querying logs. You can use various variables to make the query relevant to the current span. The link will only appear when all variables are interpolated with non-empty values, to prevent creating an invalid query.
Variables Available in Custom Queries
To use a variable, wrap it with ${}. For example: ${__span.name}.
| Variable name | Description |
|---|---|
| tags** | This variable uses the tag mapping from the UI to create a tag matcher string in data-source-specific syntax. It only uses tags that exist in the span. The link is still created even if only one of these tags exists in the span. Use this if the query does not require all tags. |
| span.spanId** | The span ID. |
| span.traceId** | The trace ID. |
| span.duration** | The span duration. |
| span.name** | The span name. |
| span.tags** | The namespace for tags in the span. To access a specific tag named “version”, use ${__span.tags.version}. If the tag contains dots, access it as ${__span.tags[“http.status”]}. |
| trace.traceId** | The trace ID. |
| trace.duration** | The trace duration. |
| trace.name** | The trace name. |
The following table describes the ways you can configure the Trace to logs settings:
| Setting name | Description |
|---|---|
| Data source | Defines the target data source. You can only select Loki or Splunk Logs data sources. |
| Span start time shift | Shifts the start time of the log query based on the span start time. You can use time units such as 5s, 1m, 3h. Use a negative value to extend the time into the past. Default: 0. |
| Span end time shift | Shifts the end time of the log query based on the span end time. You can use time units. Default: 0. |
| Tags | Defines the tags used in the log query. Default: cluster, hostname, namespace, pod. You can rename tags, for example, removing dots from names if the target data source does not allow them. For example, remap http.status to http_status. |
| Filter by trace ID | Toggles whether to append the trace ID to the log query. |
| Filter by span ID | Toggles whether to append the span ID to the log query. |
| Use custom query | Toggles the ability to use an interpolated custom query. |
| Query | Input field for writing a custom query. Use variable interpolation with span variables to customize it. |
Trace to Metrics
│ 📝Notes:
│ Requires the traceToMetrics feature toggle to be enabled before it becomes visible.
The Trace to metrics settings configure the trace-to-metrics feature available when integrating Grafana with Jaeger.
To configure trace to metrics:
- Select the target data source.
- Create the desired link queries.
| Setting name | Description |
|---|---|
| Data source | Defines the target data source. |
| Tags | Defines the tags used in link queries. The key sets the span attribute name, and the optional value sets the corresponding metric label name. For example, you can map k8s.pod to pod. To interpolate these tags into the query, use the $__tags keyword. |
Each link query includes:
- Link Label: (Optional) A descriptive label for the link query.
- Query: The query to run when navigating from a trace to the metrics data source. Use the $__tags keyword to interpolate tags. For example, when you configure the query requests_total{$__tags} with tags k8s.pod=pod and cluster, the result looks like requests_total{pod=“nginx-554b9”, cluster=“us-east-1”}.
Jaeger Data Source Configuration Example
An example Jaeger data source configuration YAML is as follows:
1 | |
EOF