Instrumentation for Symfony
Features
Tracing
- Using the official OpenTelemetry SDK
- Minimal auto-instrumentation for requests, console commands, consumers and doctrine
- Trace context propagation from incoming requests to consumers, outgoing http calls and databases (using
sqlcommenter
)
- Configurable blacklisting of requests by path to avoid useless traces, eg.
/metrics
or /_healthz
- Automatic log inclusion with configurable log level and channels
Metrics
- Using the Prometheus Client
- Minimal auto-instrumentation for common request, consumer and message metrics (see list of provided default metrics).
- Autoconfigurable metric providers, see below.
Logging
- Adds trace context to logs for correlation, with customizable keys.
Baggage
- Using the official OpenTelemetry SDK
- Baggage propagation from incoming requests to consumers and outgoing http calls
Health
- A simple endpoint to expose application health (default:
/_healthz
)
- Autoconfigurable healthcheck interface to add healthchecks to be made for global application health
Installation and configuration
composer require worldia/instrumentation-bundle <your-exporter>
You will aso need to install an exporter implementation and APCu
is required by the prometheus exporter.
Add to ```bundles.php```:
```php
return [
// Other bundles
Instrumentation\InstrumentationBundle::class => ['all' => true],
];
Minimal configuration
See the complete configuration reference here or run bin/console config:dump-reference instrumentation
.
// docker-compose.yaml
services:
php:
image: php:8.1
environment:
- OTEL_PHP_TRACES_PROCESSOR=batch
- OTEL_TRACES_SAMPLER=parentbased_always_on
- OTEL_TRACES_EXPORTER=otlp
- OTEL_EXPORTER_OTLP_PROTOCOL=grpc
- OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4317
jaeger:
image: jaegertracing/all-in-one:latest
environment:
COLLECTOR_OTLP_ENABLED: "true"
// instrumentation.yaml
instrumentation: ~
Usage
-
Tracing
-
Metrics
-
Logging
-
Health