# 开放遥测 AutoGen 原生支持[开放遥测](https://opentelemetry.io/)。这使您能够从应用程序收集遥测数据,并将其发送到您选择的遥测后端。 当前已实现遥测的组件包括: - 运行时(单线程 Agent 运行时,Worker Agent 运行时) ## 为应用程序添加遥测功能 要为应用程序添加遥测功能,您需要一个 SDK 和一个导出器。如果您的应用程序已经配置了开放遥测,您可能已经拥有这些组件。 ## 全新遥测配置 如果您的应用程序尚未设置开放遥测,可以按照以下步骤进行配置。 ```bash pip install opentelemetry-sdk ``` 根据您使用的开放遥测收集器,可以选择使用 gRPC 或 HTTP 协议导出遥测数据。 ```bash # 选择安装以下其中一个 pip install opentelemetry-exporter-otlp-proto-http pip install opentelemetry-exporter-otlp-proto-grpc ``` 接下来,我们需要获取一个追踪提供者: ```python 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: # 配置追踪 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: ```python # 单线程运行时配置 single_threaded_runtime = SingleThreadedAgentRuntime(tracer_provider=tracer_provider) ``` # 或用于 worker 运行时 worker_runtime = GrpcWorkerAgentRuntime(tracer_provider=tracer_provider) ``` 就这样!您的应用程序现在已通过 OpenTelemetry 实现了遥测功能。您现在可以在遥测后端查看遥测数据。 ### 现有遥测配置 如果您的应用程序中已经设置了 OpenTelemetry,可以在创建运行时传入 tracer provider: ```python from opentelemetry import trace # 从您的应用程序获取 tracer provider tracer_provider = trace.get_tracer_provider() # 用于单线程运行时 single_threaded_runtime = SingleThreadedAgentRuntime(tracer_provider=tracer_provider) # 或用于 worker 运行时 worker_runtime = GrpcWorkerAgentRuntime(tracer_provider=tracer_provider) ```