负载生成器
Load generator 基于 Python load testing framework Locust。默认情况下,它将模拟用户从前端请求几个不同的路由。
追踪
初始化追踪
由于此服务是一个 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 使用 Requests 和 URLLib3 库,因此我们将导入它们的 Instrumentors。
from opentelemetry.instrumentation.requests import RequestsInstrumentor
from opentelemetry.instrumentation.urllib3 import URLLib3Instrumentor
在代码中,在利用该库之前,需要通过调用 instrument() 来初始化 Instrumentor。
RequestsInstrumentor().instrument()
URLLib3Instrumentor().instrument()
初始化后,此 load generator 的每个 Locust 请求都将拥有自己的 trace,其中每个 Requests 和 URLLib3 库都有一个 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)