随着微服务架构的流行,客户端发起的一次请求可能需要涉及到多个或N个服务,致使我们对服务之间的监控和排查变得更加复杂。
举个例子:
某条业务线的某个接口调用服务端时快时慢,这时就需要排查各个服务的日志进行分析,调动各个服务的开发人员联动排查,这种排查费时又费力。对于ToB的业务有时候还拿不到日志,难搞哦!
因此,就需要可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,那就是APM(ApplicationPerformanceMonitor)。目前流行的APM开源工具有很多,比如:Zipkin,Skywalking,Pinpoint、Jaeger等等,本文将主要介绍Jaeger。
Jaeger是Uber技术团队发布的开源分布式跟踪系统,它用于监控和故障排查基于微服务的分布式系统:
分布式上下文传播、事务监控
根本原因、服务依赖分析
性能/延迟优化
OpenTracing启发的数据模型
多个存储后端:Cassandra,Elasticsearch,memory.
系统拓扑图
服务性能监控(SPM)
自适应采样
Jaeger架构
如何在Rainbond上集成?
1.集成OpenTelemetryClient:
v1.6版本以前JaegerClient是基于OpenTracingAPI实现的客户端库,JaegerClient结合JaegerAgent一起使用,发送span到JaegerCollector。
v1.6版本以后被弃用。使用OpenTelemetry替代JaegerClientandJaegerAgent,详情见JaegerandOpenTelemetry。
OpenTelemetry是无侵入的,只需在Java进程启动时添加javaagent,例:java-javaagent:path/to/opentelemetry-javaagent.jar-jarmyapp.jar。
那么在Rainbond上就可以通过插件将OpenTelemetryjavaagent下载到组件中并修改启动命令。
2.连接到Jaeger-Collector:
将所有安装了OpenTelemetryjavaagent插件的微服务组件都通过依赖连接到JaegerCollector。
实践步骤
实践中将使用SpringCloudPig进行演示,Gitee: