SDK(软件开发工具包)
OpenTelemetry SDK(软件开发工具包)提供了一个可工作的API实现,并可以以多种方式设置和配置。
手动设置
手动设置SDK可以最大程度地控制SDK的配置:
<?php
$exporter = new InMemoryExporter();
$meterProvider = new NoopMeterProvider();
$tracerProvider = new TracerProvider(
new BatchSpanProcessor(
$exporter,
ClockFactory::getDefault(),
2048, //最大队列大小
5000, //导出超时时间
1024, //最大批处理大小
true, //自动刷新
$meterProvider
)
);
SDK Builder(构建器)
SDK Builder提供了一个方便的接口来配置SDK的部分功能。但是,它不支持手动设置的所有功能。
<?php
$spanExporter = new InMemoryExporter(); //用于演示的模拟导出器
$meterProvider = MeterProvider::builder()
->addReader(
new ExportingReader(new MetricExporter((new StreamTransportFactory())->create(STDOUT, 'application/x-ndjson'), /*Temporality::CUMULATIVE*/))
)
->build();
$tracerProvider = TracerProvider::builder()
->addSpanProcessor(
(new BatchSpanProcessorBuilder($spanExporter))
->setMeterProvider($meterProvider)
->build()
)
->build();
$loggerProvider = LoggerProvider::builder()
->addLogRecordProcessor(
new SimpleLogsProcessor(
(new ConsoleExporterFactory())->create()
)
)
->setResource(ResourceInfo::create(Attributes::create(['foo' => 'bar'])))
->build();
Sdk::builder()
->setTracerProvider($tracerProvider)
->setLoggerProvider($loggerProvider)
->setMeterProvider($meterProvider)
->setPropagator(TraceContextPropagator::getInstance())
->setAutoShutdown(true)
->buildAndRegisterGlobal();
自动加载
如果所有的配置都来自环境变量(或php.ini
),您可以使用SDK的自动加载来自动配置并全局注册SDK。唯一的要求是您设置OTEL_PHP_AUTOLOAD_ENABLED=true
,并按照sdk-configuration中的说明提供任何需要的/非标准的配置。
例如:
OTEL_PHP_AUTOLOAD_ENABLED=true \
OTEL_EXPORTER_OTLP_PROTOCOL=grpc \
OTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4317 \
php example.php
<?php
require 'vendor/autoload.php'; // SDK的自动加载发生在composer初始化的一部分
$tracer = OpenTelemetry\API\Common\Instrumentation\Globals::tracerProvider()->getTracer('name', 'version', 'schema.url', [/*attributes*/]);
$meter = OpenTelemetry\API\Common\Instrumentation\Globals::meterProvider()->getMeter('name', 'version', 'schema.url', [/*attributes*/]);
SDK的自动加载发生在composer的自动加载器的一部分。
配置
PHP SDK支持大多数可用的配置。我们对规范的符合性列在了spec compliance matrix中。
此外,还有一些特定于PHP的配置:
名称 | 默认值 | 可选值或示例 | 描述 |
---|---|---|---|
OTEL_PHP_TRACES_PROCESSOR |
batch |
batch , simple |
选择Span处理器 |
OTEL_PHP_DETECTORS |
all |
env , host , os , process , process_runtime , sdk , sdk_provided , container |
选择资源检测器 |
OTEL_PHP_AUTOLOAD_ENABLED |
false |
true , false |
启用/禁用SDK的自动加载 |
OTEL_PHP_LOG_DESTINATION |
default |
error_log , stderr , stdout , psr3 , none |
内部错误和警告的输出位置 |
OTEL_PHP_INTERNAL_METRICS_ENABLED |
false |
true , false |
是否SDK应该发出有关其内部状态(例如批处理处理器)的度量信息 |
OTEL_PHP_DISABLED_INSTRUMENTATIONS |
[] |
自动仪表化的名称 | 禁用一个或多个已安装的自动仪表化 |
配置可以通过环境变量或php.ini
(或php.ini
包含的文件)提供。
最后修改 December 13, 2023: improve glossary translation (46f8201b)