Open Telemetry#

AutoGen 原生支持 open telemetry。这允许您从应用程序收集遥测数据,并将其发送到您选择的遥测后端。

以下是当前已检测的组件

  • 运行时(单线程代理运行时、工作者代理运行时)

检测你的应用程序#

要检测你的应用程序,你需要一个 sdk 和一个导出器。如果你的应用程序已经使用 open telemetry 进行了检测,你可能已经拥有这些。

干净的检测#

如果你的应用程序中没有设置 open telemetry,你可以按照以下步骤检测你的应用程序。

pip install opentelemetry-sdk

根据你的 open telemetry 收集器,你可以使用 grpc 或 http 导出你的遥测数据。

# Pick one of the following

pip install opentelemetry-exporter-otlp-proto-http
pip install opentelemetry-exporter-otlp-proto-grpc

接下来,我们需要获取一个 tracer provider

from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor

def configure_oltp_tracing(endpoint: str = None) -> trace.TracerProvider:
    # Configure Tracing
    tracer_provider = TracerProvider(resource=Resource({"service.name": "my-service"}))
    processor = BatchSpanProcessor(OTLPSpanExporter())
    tracer_provider.add_span_processor(processor)
    trace.set_tracer_provider(tracer_provider)

    return tracer_provider

现在,你可以在创建运行时发送 trace_provider

# for single threaded runtime
single_threaded_runtime = SingleThreadedAgentRuntime(tracer_provider=tracer_provider)
# or for worker runtime
worker_runtime = GrpcWorkerAgentRuntime(tracer_provider=tracer_provider)

就是这样!你的应用程序现在已经使用 open telemetry 进行了检测。你现在可以在你的遥测后端查看你的遥测数据。

现有检测#

如果你的应用程序中已经设置了 open telemetry,你可以在创建运行时时将 tracer provider 传递给运行时

from opentelemetry import trace

# Get the tracer provider from your application
tracer_provider = trace.get_tracer_provider()

# for single threaded runtime
single_threaded_runtime = SingleThreadedAgentRuntime(tracer_provider=tracer_provider)
# or for worker runtime
worker_runtime = GrpcWorkerAgentRuntime(tracer_provider=tracer_provider)