Enabling Tracing for Harness Leveraging OpenTelemetry
Enable distributed tracing in Harness Self-Managed Enterprise Edition using OpenTelemetry and Grafana Tempo, with setup steps for storage, service configuration, and trace visualization in Grafana.
Enable Tracing in Harness Services
The following Harness services(Platform, CD, CI, IACM, SSCA) support OpenTelemetry tracing:
access-control, harness-manager, ng-manager, platform-service, pipeline-service, ci-manager, sto-manager, cv-nextgen, iacm-manager, audit-event-streaming, debezium-service, template-service, idp-service, ssca-manager.
Common Global Configuration
global:
monitoring:
otel:
enabled: true
collectorEndpoint: http://opentelemetry-collector.otel.svc.cluster.local:4317/Overview of Tracing Architecture
The tracing setup for Harness leverages OpenTelemetry to capture distributed traces across services, enabling deeper observability and troubleshooting.

The architecture follows this flow:
Harness Instance with OpenTelemetry Agents: Each service in the Harness cluster is instrumented with OpenTelemetry agents to generate trace data.
OpenTelemetry Collector: Trace data is sent to the collector, which processes, batches, and exports it to supported backends.
Grafana Tempo: The collector forwards the traces to Grafana Tempo, a high-scale distributed tracing backend.
MinIO: Tempo stores the trace data in an object store, such as MinIO, for durability and querying.
Install Grafana Tempo (Optional)
Grafana Tempo is used to store and query trace data collected via OTel.
Step 1: Install MinIO for Trace Storage (Optional)
Create a file named
minio.yaml:Install MinIO:
Step 2: Install Tempo Distributed
Create a file
tempo.yamlwith appropriate overrides.Install Tempo:
Configure Grafana with Tempo as Trace Datasource

In Grafana:
Go to Settings > Data Sources
Add a new Tempo data source
If everything is deployed in the same namespace, set the URL as:
Install OpenTelemetry Collector (Optional)
This step allows fine-grained control over trace ingestion, processing, and exporting.
Step 1: Create a Collector Override
Create a file otel-collector.yaml and define the receivers, exporters, and pipelines.
Step 2: Install Collector
Visualize Traces in Grafana
Once traces flow from Harness services through the OTel Collector and are stored in Tempo, you can use the Traces tab in Grafana to:
Query traces by service name
Explore duration, calls, and trace sizes
Debug performance bottlenecks and error spikes


Summary
This setup provides end-to-end distributed tracing visibility into Harness using:
OpenTelemetry for instrumentation
Tempo for trace storage and query
Grafana for visualization
With minimal effort, you now gain deep insight into request flows across services, aiding performance debugging and reliability engineering.
Last updated
Was this helpful?