OpenTelemetry distributed tracing is being rolled out to all Fusion environments. No action is required from you to enable it. The services that support OpenTelemetry are API Gateway, Query, and Indexing.
How it works
API Gateway creates the root span
The API Gateway receives the incoming request and creates the root trace . It propagates trace context downstream using a
traceparent header. Only query-path traffic is sampled, which keeps overhead minimal.Query Service creates child spans
The Query Service picks up the trace context and creates child spans for each integration it calls. The following spans are created for every traced request:
- Solr span: captures query execution time within Solr.
- Feign/downstream span: captures HTTP calls made to downstream services.
- Kafka span: captures Kafka producer and consumer calls made during query processing.
- ItemStore span: captures ItemStore read and write operations.
OTel Collector batches the spans
The receives spans from the Query Service and batches them for export.
Grafana Tempo stores the traces
The OTel Collector forwards the batched spans to Grafana Tempo, which stores them for search and analysis.
Viewing traces in Grafana
Lucidworks engineers use the Grafana Tempo dashboard to search and visualize traces. A trace can be filtered by service, time window, latency threshold, or error status. Drilling into a trace shows the full span tree: API Gateway root span, Query Service child spans, and Solr spans nested within them. This makes the following workflow possible for Lucidworks engineers responding to an incident:- Open Grafana and navigate to the Tempo traces dashboard.
- Select the time window that corresponds to the reported latency spike.
- Identify the slowest trace for that window.
- Drill into the span tree to see which service or integration was the bottleneck.
Instrumented integrations
Tracing coverage can be enabled per integration. The integrations available are:| Integration | What it covers |
|---|---|
| Solr | Query execution time within Solr for each request |
| Kafka | Kafka producer/consumer calls made during query processing |
| JDBC | Database calls made by Fusion services |
| ItemStore | ItemStore read/write operations |
| Feign HTTP client | HTTP calls between Fusion microservices |