open-telemetry/opentracing-shim

OpenTelemetry 的 OpenTracing 桥接器

0.0.2 2023-08-23 22:02 UTC

This package is auto-updated.

Last update: 2024-09-08 03:28:15 UTC


README

此包旨在帮助 OpenTracing 用户迁移到 OpenTelemetry。OpenTelemetry 文档提供了有关如何迁移到 OpenTelemetry 的指导:https://opentelemetry.io/docs/migration/opentracing/

安装

API + SDK

此包依赖于 OpenTelemetry API,但还需要提供一个 OpenTelemetry SDK 和一个导出器,以启用导出跨度。

通常需要提供 PSR-7 和 PSR-18 实现,因为大多数导出器使用 HTTP 来传输遥测数据(gRPC 是例外)。

OTLP 导出器

通常日志通过 http 或 gRPC 使用 protobuf 格式中的 otlp 协议导出到某些接收器。

这需要

  • protobuf 实现;要么是 protobuf 扩展,要么是 google/protobuf
  • open-telemetry/exporter-otlp
  • 如果使用 gRPC 传输,则需要 open-telemetry/transport-grpc
  • 如果使用 HTTP 传输,则需要 PSR-7 和 PSR-18 实现

Zipkin 导出器

OpenTelemetry 支持通过 zipkin 协议导出,这需要 open-telemetry/exporter-zipkin 包。跟踪可以直接导出到 zipkin 实例,或者导出到任何支持 zipkin 协议的其他服务。

设置

要使用此包,您需要创建一个 OpenTelemetry tracer provider,这是桥接器跟踪器使用的唯一参数

$tracerProvider = new OpenTelemetry\SDK\Trace\TracerProvider(/*params*/);
OpenTelemetry\SDK\Common\Util\ShutdownHandler::register([$tracerProvider, 'shutdown']);
$tracer = new OpenTelemetry\Contrib\Shim\OpenTracing\Tracer($tracerProvider);

有几种设置跟踪器提供者的方法,请参阅 官方文档示例

注意

  • OpenTelemetry 不支持在创建跨度后设置跨度类型,因此添加 span.kind 标签不会设置跨度的类型。尽管如此,属性仍会被发出。
  • Span::log([/*$fields*/]) 将使用 event 字段作为日志名称,否则为 log
  • 可以通过 Span::log 使用键 exception 来记录错误。字段值应该是 Throwable,但也可以接受字符串,并将将其转换为异常