---
title: "OpenTelemetry (OTLP)"
description: "Learn about using OTLP to automatically send OpenTelemetry Traces to Sentry."
url: https://docs.sentry.io/platforms/php/guides/symfony/integrations/otlp/
---

# OpenTelemetry (OTLP) | Sentry for Symfony

The OTLP integration configures the Sentry SDK to automatically send trace data instrumented by an OpenTelemetry SDK to Sentry's [OpenTelemetry Protocol](https://opentelemetry.io/docs/specs/otel/protocol/) [ingestion endpoint](https://docs.sentry.io/concepts/otlp.md).

##### Mutually Exclusive With Sentry Tracing

Using Sentry tracing and OTLP tracing at the same time is not supported. If Sentry tracing is enabled (`traces_sample_rate`, `traces_sampler`, or `enable_tracing`), the integration will not be registered.

## [Install](https://docs.sentry.io/platforms/php/guides/symfony/integrations/otlp.md#install)

Install the required OpenTelemetry packages via Composer:

```bash
composer require \
  open-telemetry/sdk \
  open-telemetry/exporter-otlp
```

## [Configure](https://docs.sentry.io/platforms/php/guides/symfony/integrations/otlp.md#configure)

You need to configure both the OpenTelemetry and Sentry SDKs to get trace data.

### [OpenTelemetry](https://docs.sentry.io/platforms/php/guides/symfony/integrations/otlp.md#opentelemetry)

For the OpenTelemetry SDK, you need to [configure instrumentation](https://opentelemetry.io/docs/languages/php/instrumentation/) you want to capture.

### [Sentry](https://docs.sentry.io/platforms/php/guides/symfony/integrations/otlp.md#sentry)

Add the `OTLPIntegration` to the integrations list in your Sentry bundle configuration:

```yaml
sentry:
  options:
    integrations:
      - Sentry\Integration\OTLPIntegration
```

The `OTLPIntegration` is registered as a service by the Sentry Symfony bundle automatically.

## [Behavior](https://docs.sentry.io/platforms/php/guides/symfony/integrations/otlp.md#behavior)

Under the hood, the `OTLPIntegration` sets up the following parts:

* A [`SpanExporter`](https://opentelemetry.io/docs/concepts/components/#exporters) that automatically configures the OTLP ingestion endpoint from your Sentry DSN. This enables tracing in Sentry. **Note:** *Do not* also set up tracing via the PHP SDK (i.e. do not set `traces_sample_rate`, `traces_sampler`, or `enable_tracing`).
* Trace/Span linking for all other Sentry events such as Errors, Logs, and Metrics

Cross-service trace propagation uses OTel's default W3C `traceparent` headers and does not require additional configuration. See [Exporters, Event Linking, and Propagation](https://docs.sentry.io/concepts/otlp/sentry-with-otel.md#exporters-event-linking-and-propagation) for details.

## [Options](https://docs.sentry.io/platforms/php/guides/symfony/integrations/otlp.md#options)

For details on available options (`setupOtlpTracesExporter`, `collectorUrl`), see the [OTLP integration docs](https://docs.sentry.io/platforms/php/integrations/otlp.md).

## [Supported Versions](https://docs.sentry.io/platforms/php/guides/symfony/integrations/otlp.md#supported-versions)

* PHP: 8.1+
* sentry/sentry-symfony: 5.10.0+
* open-telemetry/sdk: 1.0+
