---
title: Distributed tracing
description: Distributed tracing provides visibility into the full path a request takes in a distributed system.
component: pingfederate
version: 13.0
page_id: pingfederate:administrators_reference_guide:pf_distributed_tracing
canonical_url: https://docs.pingidentity.com/pingfederate/13.0/administrators_reference_guide/pf_distributed_tracing.html
section_ids:
  supported-request-types: Supported request types
  configuring-distributed-tracing: Configuring distributed tracing
  about-this-task: About this task
  steps: Steps
  related-links: Related links
---

# Distributed tracing

Distributed tracing provides visibility into the full path a request takes in a distributed system, helping to instrument, collect, and export telemetry data. PingFederate supports the [OpenTelemetry framework (OTEL)](https://opentelemetry.io/docs/what-is-opentelemetry/) for collecting distributed tracing data. Distributed traces are sent using OpenTelemetry Protocol (OTLP) from PingFederate to a backend service like [Jaeger](https://www.jaegertracing.io/) for collection, storage, and visualization.

|   |                                                                                                                                            |
| - | ------------------------------------------------------------------------------------------------------------------------------------------ |
|   | Distributed tracing is an evolving feature in PingFederate. It's subject to change without notice, even in a minor or maintenance release. |

## Supported request types

PingFederate supports distributed tracing for the following request types:

* Incoming HTTP requests

* Outgoing HTTP requests

* Outgoing Java database connectivity (JDBC) *(tooltip: \<div class="paragraph">
  \<p>A Java API that allows Java programs to interact with databases.\</p>
  \</div>)* requests

* Outgoing Lightweight Directory Access Protocol (LDAP) *(tooltip: \<div class="paragraph">
  \<p>An open, cross platform protocol used for interacting with directory services.\</p>
  \</div>)* requests to PingDirectory 11.0 and PingDS 8.1 or later

## Configuring distributed tracing

### About this task

You can configure distributed tracing by editing the `run.properties` and `opentelemetry.properties` files. You can also define the properties as environment variables. Learn more in [Overriding configuration settings using environment variables](override_configuration_settings_using_environment_variables.html).

|   |                                                                                                                                                                                                                                                                                                                                                                                |
| - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|   | To convert an OpenTelemetry property to an environment variable:1) Convert the name to uppercase.

2) Replace all `.` and `-` characters with `_`.For example, the `otel.sdk.disabled` property is equivalent to the `OTEL_SDK_DISABLED` environment variable.If a property is defined as both a system property and environment variable, the system property takes priority. |

### Steps

1. Enable distributed tracing:

   1. Open the `<pf_install>/pingfederate/bin/run.properties` file in a text editor.

   2. Set `pf.enable.distributed.tracing` to `true`.

   3. Repeat these steps for each node in the cluster.

   4. Start or restart PingFederate.

2. To configure OpenTelemetry properties, open the `<pf_install>/pingfederate/bin/opentelemetry.properties` file in a text editor. You can also set the properties using environment variables.

   |   |                                                                                                                                                                            |
   | - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   |   | You can find the full list of configurable OpenTelemetry properties in the [OpenTelemetry SDK documentation](https://opentelemetry.io/docs/languages/java/configuration/). |

   The following table lists the default properties in `opentelemetry.properties`:

   | Property                      | Description                                                                                                                                                                                                                      |
   | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | `otel.service.name`           | The customizable name of your application/service.The default is `PingFederate`.                                                                                                                                                 |
   | `otel.exporter.otlp.endpoint` | The endpoint for your OpenTelemetry Collector or backend.The default value is `http://localhost:4318`.                                                                                                                           |
   | `otel.exporter.otlp.protocol` | Specifies the OTLP transport protocol to be used for all telemetry data.The default value is `http/protobuf` to use OTLP/HTTP + protobuf.Other valid values are:- `grpc` to use OTLP/gRPC

   - `http/json` to use OTLP/HTTP + JSON |
   | `otel.resource.attributes`    | Optionally define static environment metadata for all telemetry data in the format of `key1=val,key2=val`.                                                                                                                       |

3. Start or restart PingFederate.

## Related links

* [OpenTelemetry framework](https://opentelemetry.io/docs/what-is-opentelemetry/)

* [OpenTelemetry Protocol specification](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.51.0/oteps/0035-opentelemetry-protocol.md)
