2024-05-29 08:07:37 发布
网友
我发现了一个例子:https://medium.com/velotio-perspectives/a-comprehensive-tutorial-to-implementing-opentracing-with-jaeger-a01752e1a8ce
我有一个相当大的代码库,我真的不想通过添加像“with tracer.start_span('booking')这样的行作为span:'来修改每个函数。有什么办法吗
提前谢谢
Jaeger是一个分布式跟踪器,受Google's Dapper paper的启发,因此它主要用于跟踪微服务/分布式系统体系结构中不同进程之间的通信,而不是应用程序内部的部分代码
将Jaeger引入大多数应用程序的方式是将其集成到应用程序接收网络请求的部分。例如,如果您的Python应用程序使用Django或Flask接收HTTP请求,或者使用其他框架接收其他类型的请求(例如gRPC),那么internet上可能会有一个项目,允许您使用几行代码将Jaeger挂接到框架中。对于最流行的框架,Jaeger文档指出opentracing-contrib是这些“客户机库”的良好来源
虽然在应用程序内部进行额外的跟踪调用并不是闻所未闻或不鼓励使用d.tracers,但这并不是经常发生的事情,因为d.tracers通常用于组件之间的交互比组件内部发生的事情更重要的微服务环境中
如果您确实希望在应用程序中创建跟踪记录,那么对每个函数进行跟踪是非常不寻常的。相反,应用程序内部的跟踪通常在modular monolith中组件的边界处完成,即当一个组件调用另一个组件时
最后,如果您真正想要的是在每个函数级别对单个Python应用程序进行性能分析,而不关心它与系统中其他应用程序的交互(可能只有一个),那么Jaeger可能不是合适的工具。在这种情况下,您可能需要寻找一种应用程序性能监视或APM工具,该工具可以与Python一起工作并满足您的需要
Jaeger是一个分布式跟踪器,受Google's Dapper paper的启发,因此它主要用于跟踪微服务/分布式系统体系结构中不同进程之间的通信,而不是应用程序内部的部分代码
将Jaeger引入大多数应用程序的方式是将其集成到应用程序接收网络请求的部分。例如,如果您的Python应用程序使用Django或Flask接收HTTP请求,或者使用其他框架接收其他类型的请求(例如gRPC),那么internet上可能会有一个项目,允许您使用几行代码将Jaeger挂接到框架中。对于最流行的框架,Jaeger文档指出opentracing-contrib是这些“客户机库”的良好来源
虽然在应用程序内部进行额外的跟踪调用并不是闻所未闻或不鼓励使用d.tracers,但这并不是经常发生的事情,因为d.tracers通常用于组件之间的交互比组件内部发生的事情更重要的微服务环境中
如果您确实希望在应用程序中创建跟踪记录,那么对每个函数进行跟踪是非常不寻常的。相反,应用程序内部的跟踪通常在modular monolith中组件的边界处完成,即当一个组件调用另一个组件时
最后,如果您真正想要的是在每个函数级别对单个Python应用程序进行性能分析,而不关心它与系统中其他应用程序的交互(可能只有一个),那么Jaeger可能不是合适的工具。在这种情况下,您可能需要寻找一种应用程序性能监视或APM工具,该工具可以与Python一起工作并满足您的需要
相关问题 更多 >
编程相关推荐