我正在使用Jaeger跟踪python函数。我是否必须在每个函数中手动创建跨度?



我发现了一个例子:https://medium.com/velotio-perspectives/a-comprehensive-tutorial-to-implementing-opentracing-with-jaeger-a01752e1a8ce

我有一个相当大的代码库,我真的不想通过添加一行类似"withtracer.start_span"("booking"(作为span:'来修改每个函数。有什么办法吗?

提前谢谢。

Jaeger是一个分布式跟踪器,其灵感来自谷歌的Dapper论文,因此它主要用于跟踪微服务/分布式系统架构中不同进程之间的通信,而不是应用程序中的部分代码。

将Jaeger引入大多数应用程序的方式是将其集成到从网络接收请求的应用程序部分。例如,如果您的Python应用程序正在使用Django或Flask接收HTTP请求,或者使用其他框架接收其他类型的请求(例如gRPC(,那么互联网上可能会有一个项目,让您用几行代码将Jaeger连接到您的框架中。对于最流行的框架,Jaeger文档指出opentrackingcontrib是这些";客户端库";。

虽然在应用程序内部进行额外的跟踪调用并不是闻所未闻或不鼓励使用d.tracers,但这并不是经常发生的事情,因为d.tracers通常用于微服务环境,在微服务环境中,组件之间的交互比组件内部发生的事情更重要。

如果您确实想在应用程序中创建跟踪记录,那么对每个函数进行跟踪是非常不寻常的。相反,应用程序内部的跟踪通常在模块化整体中组件的边界处进行,即当一个组件调用另一个组件时。

最后,如果你真正想要的是在每个函数的级别上对单个Python应用程序进行性能分析,而你不关心它与系统中其他应用程序的交互(也许你只有一个?(,那么Jaeger可能不是合适的工具。在这种情况下,您可能希望寻找一个与Python配合使用并适合您需求的应用程序性能监控或APM工具。

最新更新