负载生成器

Load generator 基于 Python load testing framework Locust。默认情况下,它将模拟用户从前端请求几个不同的路由。

Load generator 源代码

追踪

初始化追踪

由于此服务是一个 locustfile,OpenTelemetry SDK 会在导入语句之后初始化。此代码将创建一个 tracer provider,并建立一个 Span Processor 来使用。导出端点、资源属性和服务名称会自动使用 OpenTelemetry 环境变量 进行设置。

tracer_provider = TracerProvider()
trace.set_tracer_provider(tracer_provider)
tracer_provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))

添加仪器库

要添加仪器库,您需要在 Python 代码中导入每个库的 Instrumentors。Locust 使用 RequestsURLLib3 库,因此我们将导入它们的 Instrumentors。

from opentelemetry.instrumentation.requests import RequestsInstrumentor
from opentelemetry.instrumentation.urllib3 import URLLib3Instrumentor

在代码中,在利用该库之前,需要通过调用 instrument() 来初始化 Instrumentor。

RequestsInstrumentor().instrument()
URLLib3Instrumentor().instrument()

初始化后,此 load generator 的每个 Locust 请求都将拥有自己的 trace,其中每个 RequestsURLLib3 库都有一个 span。

指标

待定

日志

待定

Baggage

Load generator 使用 OpenTelemetry Baggage 来指示 traces 是合成生成的。这在 on_start 函数中完成,通过创建一个包含 baggage 项的 context 对象,并为 load generator 的所有 tasks 关联该 context。

ctx = baggage.set_baggage("synthetic_request", "true")
context.attach(ctx)

最后修改于 2025 年 3 月 4 日: [demo] 重命名 demo 服务 (#6438) (ae417344)