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-otlpAdd 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>:4318Enable 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