open-telemetry/opentelemetry-auto-psr18

OpenTelemetry auto-instrumentation for PSR-18 (HTTP Client).

Maintainers

Package info

github.com/opentelemetry-php/contrib-auto-psr18

Homepage

pkg:composer/open-telemetry/opentelemetry-auto-psr18

Transparency log

Statistics

Installs: 2 479 103

Dependents: 5

Suggesters: 1

Stars: 2

1.3.0 2026-06-08 12:54 UTC

README

Releases Issues Source Mirror Latest Version Stable

This is a read-only subtree split of https://github.com/open-telemetry/opentelemetry-php-contrib.

OpenTelemetry PSR-18 auto-instrumentation

Please read https://opentelemetry.io/docs/instrumentation/php/automatic/ for instructions on how to install and configure the extension and SDK.

Overview

Auto-instrumentation hooks are registered via composer, which will:

  • create spans automatically for each PSR-18 request that is sent
  • add a traceparent header to the request to facilitate distributed tracing

Configuration

Disabling PSR-18 instrumentation

The extension can be disabled via runtime configuration:

OTEL_PHP_DISABLED_INSTRUMENTATIONS=psr18

Request and response header capturing

PSR-18 auto-instrumentation supports capturing headers from both requests and responses as span attributes. This feature is disabled by default and can be enabled through environment variables or array directives in the php.ini configuration file. Header name matching is case-insensitive.

Environment variables configuration

OTEL_INSTRUMENTATION_HTTP_CLIENT_CAPTURE_REQUEST_HEADERS=host,accept
OTEL_INSTRUMENTATION_HTTP_CLIENT_CAPTURE_RESPONSE_HEADERS=content-type,server

The legacy options are still supported but are not recommended as they may be deprecated in a future release:

OTEL_PHP_INSTRUMENTATION_HTTP_REQUEST_HEADERS=host,accept
OTEL_PHP_INSTRUMENTATION_HTTP_RESPONSE_HEADERS=content-type,server

php.ini configuration

otel.instrumentation.http.request_headers[]=host
otel.instrumentation.http.request_headers[]=accept

otel.instrumentation.http.response_headers[]=content-type
otel.instrumentation.http.response_headers[]=server