open-telemetry / opentelemetry-auto-http-async
OpenTelemetry auto-instrumentation for HTTPlug async clients.
Package info
github.com/opentelemetry-php/contrib-auto-http-async
pkg:composer/open-telemetry/opentelemetry-auto-http-async
Requires
- php: ^8.1
- ext-opentelemetry: *
- open-telemetry/api: ^1.0
- open-telemetry/sem-conv: ^1.32
- php-http/httplug: ^2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- monolog/monolog: *
- nyholm/psr7: *
- open-telemetry/sdk: ^1.0
- phan/phan: ^5.0
- php-http/guzzle7-adapter: *
- php-http/mock-client: *
- phpstan/phpstan: ^1.1
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.19.2
- vimeo/psalm: 6.4.0
This package is auto-updated.
Last update: 2026-08-19 11:12:43 UTC
README
This is a read-only subtree split of https://github.com/open-telemetry/opentelemetry-php-contrib.
OpenTelemetry HTTPlug async 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 async HTTP request that is sent
- add a
traceparentheader to the request to facilitate distributed tracing
Configuration
Disabling the instrumentation
The extension can be disabled via runtime configuration:
OTEL_PHP_DISABLED_INSTRUMENTATIONS=http-async-client
Request and response header capturing
Header capturing is disabled by default and can be enabled through environment variables or php.ini directives.
Environment variables
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 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
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
Captured headers are added as span attributes using the http.request.header.<name> and http.response.header.<name> naming convention, with header names lowercased and hyphens replaced by underscores. The option values are case-insensitive.