linavel / opentelemetry-auto-lumen
OpenTelemetry auto-instrumentation for Lumen
Package info
github.com/linaadamson/opentelemetry-auto-lumen
pkg:composer/linavel/opentelemetry-auto-lumen
Requires
- php: ^8.3
- ext-json: *
- ext-opentelemetry: *
- illuminate/routing: ^11.51
- laravel/lumen-framework: ^11.2
- open-telemetry/api: ^1.9
- open-telemetry/exporter-otlp: ^1.4
- open-telemetry/opentelemetry-auto-guzzle: ^1.3
- open-telemetry/sdk: ^1.14
- open-telemetry/sem-conv: ^1.38
- php-http/guzzle7-adapter: ^1.1
Suggests
- open-telemetry/extension-propagator-b3: Enables B3 trace-context propagation (X-B3-* headers).
- open-telemetry/opentelemetry-propagation-server-timing: Automatically propagate the context to the client through server-timing headers.
- open-telemetry/opentelemetry-propagation-traceresponse: Automatically propagate the context to the client through trace-response headers.
README
Originally based on the Laravel auto-instrumentation in https://github.com/open-telemetry/opentelemetry-php-contrib (Apache-2.0), adapted for Lumen and maintained independently in this repository.
OpenTelemetry Lumen 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, and spans will automatically be created.
Installation
composer require linavel/opentelemetry-auto-lumen
OTEL_* environment variables must be available before the OpenTelemetry SDK bootstraps, which
happens as soon as Composer's autoloader loads. Lumen's own environment loading normally runs
after the autoloader, so _loadenv.php needs to be required directly, before
vendor/autoload.php, in your project's bootstrap/app.php:
require __DIR__.'/../vendor/linavel/opentelemetry-auto-lumen/_loadenv.php'; require __DIR__.'/../vendor/autoload.php';
_loadenv.php reads the .env file at your project root and exports any OTEL_* keys via
putenv() so they're visible to the SDK during autoloading.
Configuration
The extension can be disabled via runtime configuration: