This library provides auto-instrumentation for BEdita applications, according to OpenTelemetry specifications.
This library requires PHP 8.1+ and the OpenTelemetry PHP extension.
Other optional requirements:
ext-grpc
required to use gRPC as transport for the OTLP exporterext-protobuf
significant performance improvement for otlp+protobuf exportingext-zlib
if you want to compress exported dataopen-telemetry/opentelemetry-auto-psr15
auto-instrumentation for CakePHP middlewares (PSR-15)
composer require bedita/instrumentation
Note that installing this library by itself does not generate traces. You need to install and configure the OpenTelemetry SDK and at least an exporter:
composer require open-telemetry/sdk open-telemetry/exporter-otlp
OpenTelemetry's auto-instrumentation is completely configurable through environment variables. See the SDK configuration documentation and the PHP-specific documentation.
This library provides the following instrumentations, which can be enabled or disabled individually using their respective names:
bedita
main instrumentation (currently does nothing by itself)bedita.client
CakePHP HTTP client (requiresbedita
)cakephp
CakePHP HTTP server, controllers and commands (project)pdo
PHP PDO (project)psr3
loggers compliant with PSR-3 standard (project)psr16
cache engines compliant with PSR-16 standard (project)
This configuration enables auto-instrumentation and the export of traces and logs using the otlp+protobuf protocol to a local backend:
# PHP injection
export OTEL_PHP_AUTOLOAD_ENABLED=true
# Export
export OTEL_LOG_LEVEL="info"
export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318/"
# Tracing
# export OTEL_TRACES_SAMPLER="parentbased_traceidratio"
# export OTEL_TRACES_SAMPLER_ARG="0.1"
export OTEL_PHP_DETECTORS="env,host,os,sdk"
export OTEL_RESOURCE_ATTRIBUTES="service.namespace=my-namespace"
export OTEL_SERVICE_NAME="my-service"
# Propagation
export OTEL_PROPAGATORS="tracecontext,baggage"
# Instrumentation
export OTEL_PHP_EXCLUDED_URLS="/status"
# export OTEL_PHP_DISABLED_INSTRUMENTATIONS="pdo"
# Log
# see: https://github.com/open-telemetry/opentelemetry-php-contrib/tree/main/src/Instrumentation/Psr3#mode
export OTEL_PHP_PSR3_MODE="export"