Using the official OpenTelemetry SDK.
- Minimal auto-instrumentation for requests, console commands, consumers and doctrine
- Trace context propagation from incoming requests to consumers and outgoing http calls
- Minimal metrics for requests, consumers and messages
- Trace context propagation for database requests (using
sqlcommenter
)
For a fully working example including Jaeger, Grafana, Tempo, Loki and Prometheus, check the example directory.
Install along your exporter implementation, eg. open-telemetry/exporter-otlp
.
composer require worldia/instrumentation-bundle open-telemetry/exporter-otlp
Add to bundles.php
.
return [
// Other bundles
Instrumentation\InstrumentationBundle::class => ['all' => true],
];
Configure OTEL env vars. Replace <your-telemetry-collector>
by yours, eg. jaeger
, tempo
, otel-collector
, ...
OTEL_SERVICE_NAME=test-app
OTEL_PHP_DETECTORS=none
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=Delta
OTEL_EXPORTER_OTLP_PROTOCOL=http/json
OTEL_EXPORTER_OTLP_ENDPOINT=http://<your-telemetry-collector>:4318
Enable the extension. See the complete configuration reference here or run bin/console config:dump-reference instrumentation
.
instrumentation: ~
monolog:
handlers:
otel:
type: service
id: Instrumentation\Logging\OtelHandler