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. resource detectors, 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-sdk
Refer to the official OpenTelemetry documentation for general usage of the OpenTelemetry API.
$resource = Resource::detect()
->merge(Resource::create(['foo' => 'bar']));
$tracerProvider = (new TracerProviderBuilder())
->addResource($resource)
->addSpanProcessor(new BatchSpanProcessor(new OtlpStreamSpanExporter(getStdout())))
->build($logger);
$meterProvider = (new MeterProviderBuilder())
->addResource($resource)
->addMetricReader(new PeriodicExportingMetricReader(new OtlpStreamMetricExporter(getStdout())))
->build($logger);
$loggerProvider = (new LoggerProviderBuilder())
->addResource($resource)
->addLogRecordProcessor(new BatchLogRecordProcessor(new OtlpStreamLogRecordExporter(getStdout())))
->build($logger);
awaitAll([
async($tracerProvider->shutdown(...)),
async($meterProvider->shutdown(...)),
async($loggerProvider->shutdown(...)),
]);
Initialization from configuration file
$result = Config::loadFile(__DIR__ . '/kitchen-sink.yaml');
Initialization from environment variables
See also PHP SDK configuration.
$result = Env::load();
Footnotes
-
It is highly recommended to install the
ext-protobuf
extension if using one of theOTLP
exporters due to its significantly better performance. ↩