Asynchronous OpenTelemetry SDK based on Revolt.
This metapackage contains the basic components that are required for creating traces/metrics/logs through the
official OpenTelemetry API and sending them to an OTLP/HTTP
compatible collector1. Additional components (e.g. non-OTLP exporters) can be installed as separate packages.
Projects using ReactPHP libraries can use this SDK together with revolt/event-loop-adapter-react.
composer require tbachert/otel-sdkRefer to the official OpenTelemetry documentation for general usage of the OpenTelemetry API.
Initialization from configuration file
$config = Config::loadFile(__DIR__ . '/sdk-config.yaml');The OTEL_EXPERIMENTAL_CONFIG_FILE environment
variable can be set to initialize the Global instances on startup.
Initialization from environment variables
$config = Config::loadFromEnv();The OTEL_PHP_AUTOLOAD_ENABLED environment variable
can be set to true to initialize the Global instances on startup.
$resource = Resource::create(['foo' => 'bar']);
$tracerProvider = (new TracerProviderBuilder())
->setResource($resource)
->addSpanProcessor(new BatchSpanProcessor(new OtlpStreamSpanExporter(getStdout())))
->build($logger);
$meterProvider = (new MeterProviderBuilder())
->setResource($resource)
->addMetricReader(new PeriodicExportingMetricReader(new OtlpStreamMetricExporter(getStdout())))
->build($logger);
$loggerProvider = (new LoggerProviderBuilder())
->setResource($resource)
->addLogRecordProcessor(new BatchLogRecordProcessor(new OtlpStreamLogRecordExporter(getStdout())))
->build($logger);$cancellation = new TimeoutCancellation(10);
await([
async($tracerProvider->shutdown(...), $cancellation),
async($meterProvider->shutdown(...), $cancellation),
async($loggerProvider->shutdown(...), $cancellation),
]);Footnotes
-
It is highly recommended to install the
ext-protobufextension if using one of theOTLPexporters due to its significantly better performance. ↩