OpenTelemetry发行版

为了让使用OpenTelemetry和自动插桩尽可能快速而灵活,OpenTelemetry发行版提供了一种机制,自动为用户配置一些常见选项。通过利用它们的强大功能,OpenTelemetry的用户可以根据需要配置组件。opentelemetry-distro软件包为希望入门的用户提供了一些默认配置,它配置了以下内容:

  • SDK TracerProvider
  • BatchSpanProcessor
  • OTLP SpanExporter,用于将数据发送到OpenTelemetry收集器

该软件包还为任何有兴趣制作替代发行版的人提供了一个起点。软件包实现的接口通过opentelemetry_distroopentelemetry_configurator入口点由自动插桩加载,以在执行任何其他代码之前配置应用程序。

为了自动将数据从OpenTelemetry导出到OpenTelemetry收集器,安装该软件包将设置所有所需的入口点。

pip install opentelemetry-distro[otlp] opentelemetry-instrumentation

启动本地的Collector以查看导出的数据。编写以下文件:

# /tmp/otel-collector-config.yaml
receivers:
  otlp:
    protocols:
      grpc:
      http:
exporters:
  # 注意:在v0.86.0版本之前,请使用“logging”而不是“debug”。
  debug:
    verbosity: detailed
processors:
  batch:
service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [debug]
      processors: [batch]

然后启动Docker容器:

docker run -p 4317:4317 \
    -v /tmp/otel-collector-config.yaml:/etc/otel-collector-config.yaml \
    otel/opentelemetry-collector:latest \
    --config=/etc/otel-collector-config.yaml

以下代码将创建一个没有配置的span。

# no_configuration.py
from opentelemetry import trace

with trace.get_tracer("my.tracer").start_as_current_span("foo"):
    with trace.get_tracer("my.tracer").start_as_current_span("bar"):
        print("baz")

最后,使用自动插桩运行no_configuration.py

opentelemetry-instrument python no_configuration.py

从收集器的输出中,结果span将显示如下:

Resource labels:
     -> telemetry.sdk.language: STRING(python)
     -> telemetry.sdk.name: STRING(opentelemetry)
     -> telemetry.sdk.version: STRING(1.1.0)
     -> service.name: STRING(unknown_service)
InstrumentationLibrarySpans #0
InstrumentationLibrary __main__
Span #0
    Trace ID       : db3c99e5bfc50ef8be1773c3765e8845
    Parent ID      : 0677126a4d110cb8
    ID             : 3163b3022808ed1b
    Name           : bar
    Kind           : SPAN_KIND_INTERNAL
    Start time     : 2021-05-06 22:54:51.23063 +0000 UTC
    End time       : 2021-05-06 22:54:51.230684 +0000 UTC
    Status code    : STATUS_CODE_UNSET
    Status message :
Span #1
    Trace ID       : db3c99e5bfc50ef8be1773c3765e8845
    Parent ID      :
    ID             : 0677126a4d110cb8
    Name           : foo
    Kind           : SPAN_KIND_INTERNAL
    Start time     : 2021-05-06 22:54:51.230549 +0000 UTC
    End time       : 2021-05-06 22:54:51.230706 +0000 UTC
    Status code    : STATUS_CODE_UNSET
    Status message :
最后修改 December 10, 2023: translate (a4350d6e)