ifcastle / open-telemetry
OpenTelemetry 简化库。
dev-main
2024-08-19 08:04 UTC
Requires
- php: >=8.3
- psr/log: ^3.0
This package is auto-updated.
Last update: 2024-09-19 08:06:41 UTC
README
这是 OpenTelemetry 标准在 PHP 上的库的替代版本。
为什么需要这个?
原始的 OpenTelemetry 库具有复杂的跟踪构建架构,导致支持代码的增加。这个库提供了一个更简单、更扁平的界面来生成遥测数据。
安装
示例
<?php declare(strict_types=1); require_once __DIR__ . '/vendor/autoload.php'; use IfCastle\OpenTelemetry\Tracer; $tracer = new Tracer(...); $span = $tracer->createSpan('example-span', SpanKindEnum::INTERNAL); try { $span->addEvent('event-name', ['key' => 'value']) ->setStatus(StatusCodeEnum::OK); } catch (Throwable $exception) { $span->registerException($exception); throw $e; } finally { $span->end(); }
简化图示
简化图示显示了创建跟踪所使用的结构。
-
TracerInterface负责在应用程序中聚合遥测数据。它是一个工厂类,用于创建Trace。 -
TraceInterface和SpanInterface分别表示Trace和Span结构,根据OpenTelemetry定义。它们允许以方便的方式操作实体内的数据。 -
要记录遥测数据,您可以使用
TracerInterface,或者结合使用SpanInterface。
@startuml class-diagram interface "TracerInterface" as TracerInterface { +newTelemetryContext() +createTrace() +endTrace(trace) +createSpan(spanName, spanKind, instrumentationScope, attributes) +endSpan(span) +registerLog(instrumentationScope, level, body, attributes) +registerException(throwable, attributes) } interface "SpanInterface" as SpanInterface { +addEvent(name, attributes, timestamp) +recordException(exception, attributes) +end(endEpochNanos) +addLink(link) } interface "TraceInterface" as TraceInterface { +newSpanId() +getTraceId() +getCurrentSpanId() +getCurrentSpan() +createSpan(spanName, spanKind, instrumentationScope, attributes) +endSpan(span) +end() } TraceInterface ..> SpanInterface TracerInterface ..> SpanInterface TracerInterface ..> TraceInterface @enduml