商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > 分布式链路追踪Jaeger+微服务Pig在Rainbond上的实践分享

分布式链路追踪Jaeger+微服务Pig在Rainbond上的实践分享

  发布于2026-08-20 阅读(0)

扫一扫,手机访问

随着微服务架构的流行,客户端发起的一次请求可能需要涉及到多个或 N 个服务,致使我们对服务之间的监控和排查变得更加复杂。

分布式链路追踪Jaeger+微服务Pig在Rainbond上的实践分享

举个例子:

某条业务线的某个接口调用服务端时快时慢,这时就需要排查各个服务的日志进行分析,调动各个服务的开发人员联动排查,这种排查费时又费力。对于 ToB 的业务有时候还拿不到日志,难搞哦!

这时候,就需要一种能够帮助我们理解系统行为、分析性能问题的工具,以便在故障发生时迅速定位并解决问题,它就是APM(Application Performance Monitor,应用性能监控)。当下,流行的APM开源工具可谓琳琅满目,像Zipkin、Skywalking、Pinpoint、Jaeger等等。本文呢,将着重为大家介绍Jaeger。

Jaeger 是 Uber 技术团队发布的开源分布式跟踪系统,它用于监控和故障排查基于微服务的分布式系统:

  • 分布式上下文传播、事务监控
  • 根本原因、服务依赖分析
  • 性能/延迟优化
  • OpenTracing 启发的数据模型
  • 多个存储后端:Cassandra, Elasticsearch, memory.
  • 系统拓扑图
  • 服务性能监控(SPM)
  • 自适应采样

Jaeger 架构

ComponentDescriptionJaeger ClientJaeger Client SDKJaeger Agent收集 Client 数据Jaeger Collector收集 Jaeger Agent 数据,有 pull/push 两种方式DB StorageCollector 需要存储后端,Collector 拿到的数据将存在 Elasticsearch 或 Cassandra。Spark jobs用于生成拓扑图 UI 数据Jaeger Query Service & UI负责从 Storage 查询数据并提供 API 和 UI

如何在Rainbond上集成?

1.集成 OpenTelemetry Client:

v1.36 版本以前 Jaeger Client 是基于 OpenTracing API 实现的客户端库,Jaeger Client 结合 Jaeger Agent 一起使用,发送 span 到 Jaeger Collector。

v1.36 版本以后被弃用。使用 OpenTelemetry 替代 Jaeger Client and Jaeger Agent,详情见 Jaeger and OpenTelemetry。

OpenTelemetry 是无侵入的,只需在 Ja va 进程启动时添加 ja vaagent,例:ja va -ja vaagent:path/to/opentelemetry-ja vaagent.jar -jar myapp.jar

那么在 Rainbond 上就可以通过插件将 OpenTelemetry ja vaagent 下载到组件中并修改启动命令。

2.连接到 Jaeger-Collector:

将所有安装了 OpenTelemetry ja vaagent 插件的微服务组件都通过依赖连接到 Jaeger Collector

实践步骤

实践中将使用 Spring Cloud Pig 进行演示,Gitee:https://gitee.com/zhangbigqi/pig

Rainbond 部署请参阅文档 快速安装 。

1. Spring Cloud Pig 源码部署

通过源码部署 Spring Cloud Pig 微服务框架就不详细介绍部署了,请参阅:

  • Spring Cloud Pig 部署教程
  • Spring Cloud Pig 视频教程

2. OpenTelemetry 插件安装

从应用商店安装 opentelemetry-ja va-agent 初始化插件,该插件的作用是下载 opentelemetry-ja vaagent.jar 到微服务组件内,可以在 Ja va 启动项中指定。

  • 团队视图 -> 插件 -> 从应用商店安装插件 -> 搜索 opentelemetry-ja va-agent 并安装。

3. 部署 Jaeger

在开源应用商店中搜索 Jaeger 并安装到指定应用中。

4. OpenTelemetry Agent 插件配置

1.开通 OpenTelemetry Agent 插件

pig-gateway 为例,在组件 -> 插件中开通 opentelemetry-ja va-agent 插件并更新组件生效,微服务内的其他组件均需要开通插件并更新或重启组件生效。

2.配置环境变量

为所有微服务组件配置环境变量。

变量名变量值说明OTEL_TRACES_EXPORTERjaeger选择 Jaeger exporterOTEL_EXPORTER_JAEGER_ENDPOINThttp://127.0.0.1:14250Jaeger Collector gRPC endpointOTEL_EXPORTER_JAEGER_TIMEOUT10000超时时间(毫秒)OTEL_METRICS_EXPORTERnoneMetrics 导出器JA VA_OPTS-ja vaagent:/agent/opentelemetry-ja vaagent.jarJa va 启动参数

可使用 应用配置组 统一配置并应用到所有组件中。

3.配置组件服务名称

为所有微服务组件配置环境变量 OTEL_SERVICE_NAME ,配置组件的 Jaeger 服务名称,如:OTEL_SERVICE_NAME=pig-gatewayOTEL_SERVICE_NAME=pig-auth

5.建立依赖关系

将所有微服务组件添加依赖连接到 Jaeger Collector

Jaeger 部署在另外一个应用,需要进入 组件 -> 依赖 -> 添加 Jaeger Collector 依赖,就可以在当前应用的拓扑图看到 Jaeger Collector 组件,剩下的组件都可通过拓扑图编辑模式进行依赖连接。更新或重启所有微服务组件使依赖关系生效。

6. Jaeger 快速使用

  1. 访问 Spring Cloud Pig UI 进行登录,使其产生数据。

  2. 访问 Jaeger-Query16686 端口,打开对外服务即可访问 Jaeger UI

  3. 在 Jaeger Search 页面中搜索微服务 Pig-gateway 的 Traces

    • Service:选择微服务的组件

    • Operation:选择操作类型,例:GET POST、接口、类.....

    • Tags:根据响应头筛选,例:http.status_code=200 error=true

    • Lookback:选择时间

    • Max Duration:最大持续时间;Min Duration:最小持续时间。

    • Limit Results:限制返回结果数量。

  1. 找到 Pig-gateway HTTP POST 的 Traces 并包含了 pig-auth Span并进入,可看到很清晰的展示了服务之间一层一层的调用以及接口的响应时间,这样我们就可以排查到底是哪个服务调用的慢或者调用有问题。

Jaeger 拓扑图生成

拓扑图并非默认生成,而是通过spark-dependencies组件来生成拓扑图数据。这是一项Spark作业,它会从存储中收集span,分析服务间的链接,并将其存储起来,以便日后在UI中展示。详细内容请查看Jaeger Spark dependencies。

spark-dependencies 组件占用资源较大,不使用时可关闭,需要生成拓扑图数据时将其启动即可。

最后

有了 APM 系统后,使我们可以更好的分析业务性能、排查故障等。

结合 Rainbond 作为基座不管是 Spring Cloud还是 Jaeger 或其他 APM 都可以很方便、快捷的部署使用,从繁琐的部署、配置中解放出来,让我们更多的关注于业务层。

本文转载于:https://apiv1.oschina.net/oschinapi/blog/detail?id=5562015 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注