我有Spring MVC Web应用程序,它在端点中使用各种服务。例如,一个端点具有以下结构:
public void endpointA() {
// ...
// call methodA
// ...
// call methodB and methodC in parallel using RxJava
// ...
// call methodD
// ...
}
方法可能会调用外部服务或数据库操作。我有一个想法,即在每个服务开始和结束时(例如在Chrome中的Dev Tools中)测量此类调用的时间,以便将整个端点调用的时间线与信息一起使用。每种跟踪方法都可以调用嵌套方法,也可以跟踪它。
我有Zipkin的经验,但它适用于分布式案例和跟踪整个端点调用(据我所知)。在这里,我有monolith应用程序,我希望能够跟踪我想要的任何方法。被跟踪的代码应该对其进行最小的更改。例如,我不想在跟踪类中创建一些成员或将任何参数传递给跟踪的方法。
通常,此工具可用于任何Java应用程序,以通过性能度量来跟踪其工作流程。我正在考虑在所需方法之前和之后使用System.currentTimeMillis()值的标准日志记录,然后分析日志文件,但决定它将带来许多相同的代码,并且它不会解决方法调用层次结构的跟踪:可以调用跟踪方法不是直接但使用非跟踪方法。
是否有用于此目的的工具?我不想发明一辆自行车。
答案 0 :(得分:0)
我认为一般来说,您可能对更典型的代理/分析器方法感兴趣。
由于您提到了zipkin,请注意spring spring sleuth允许您make "local spans"并代表您使用包括RxJava在内的某些integrated libraries。
希望这有帮助。