负载生成器

负载生成器是基于Python负载测试框架Locust开发的。默认情况下,它会模拟用户从前端请求多个不同的路由。

负载生成器源代码

链路追踪

初始化追踪

由于这个服务是一个locustfile文件,所以在导入语句之后初始化OpenTelemetry SDK。以下代码将创建一个追踪器提供程序,并建立一个使用的Span处理器。导出端点、资源属性和服务名称均使用OpenTelemetry环境变量进行自动设置。

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

添加仪表库

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

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

在使用库之前,需要调用instrument()来初始化Instrumentor。

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

一旦初始化完成,此负载生成器中的每个Locust请求都会有自己的追踪,其中包含RequestsURLLib3库的跨度。

指标

待定

日志

待定

Baggage

负载生成器使用OpenTelemetry Baggage来指示追踪是合成生成的。在on_start函数中,通过创建一个包含Baggage项的上下文对象,并将该上下文与负载生成器的所有任务关联,来实现这一点。

ctx = baggage.set_baggage("synthetic_request", "true")
context.attach(ctx)
最后修改 December 10, 2023: translate (a4350d6e)