当前位置:

首页 > 系统应用 > 分布式链路追踪Jaeger+微服务Pig在Rainbond上的实践分享

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

本文目录

    随着微服务架构的流行,客户端发起的一次请求可能需要涉及到多个或 N 个服务,致使我们对服务之间的监控和排查变得更加复杂。举个例子:某条业务线的某个接口调用服务端时快时慢,这时就需要排查各个服务的日志进行分析,调动各个服务的开发人员联动排查,这种排查费时又费力。对于 ToB 的业务有时候还拿不到日志,

    随着微服务架构的流行,客户端发起的一次请求可能需要涉及到多个或 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-Query 的 16686 端口,打开对外服务即可访问 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 都可以很方便、快捷的部署使用,从繁琐的部署、配置中解放出来,让我们更多的关注于业务层。

    本文内容来源于网友投稿,如有侵权请联系删除。
    作者最新文章
    系统应用
    相关文章 更多
    win10升级新版本后取消开机密码失效怎么修复
    win10升级新版本后取消开机密码失效怎么修复

    Windows 10更新后开机突然要求输入密码?本文解析自动登录失效的真实原因,提供通过netplwiz重新保存凭据、关闭Windows Hello干扰及排查账户策略的完整步骤,助你恢复免密进入桌面。

    win10更新没下载完反复重试该怎么停止任务
    win10更新没下载完反复重试该怎么停止任务

    Windows 10更新下载失败反复重试怎么办?不要直接停用服务。本文教你通过设置页面暂停更新、启用按流量计费连接以及调整活动时间,安全地暂时停止下载任务并避免意外重启。

    win10怎么取消系统准备强制升级新版本
    win10怎么取消系统准备强制升级新版本

    面对Win10强制升级新版本的提示,本文解析家庭版与专业版的应对差异。介绍如何通过暂停更新、设置活动时间临时避让,以及利用组策略控制功能版本。强调Windows 10支持终止后的安全风险,避免使用高风险的禁用服务手段。

    win10组策略找不到更新选项该怎么处理
    win10组策略找不到更新选项该怎么处理

    Win10组策略编辑器中找不到Windows Update选项怎么办?本文分析家庭版与专业版的权限差异,厘清本地策略与域策略的区别,提供设置页替代方案及企业环境排查思路,避免盲目修改注册表或安装非官方补丁。

    win10取消开机密码会影响电脑里的文件安全吗?
    win10取消开机密码会影响电脑里的文件安全吗?

    很多人为了便捷选择取消 Win10 开机密码,这会导致文件丢失吗?本文详解取消密码后文件访问权限的变化、BitLocker 加密的有效性以及更安全的替代方案,帮助用户在便利与数据安全之间做出正确选择。

    win10弹出立即重启更新怎么延后这个操作
    win10弹出立即重启更新怎么延后这个操作

    Win10弹出立即重启更新会打断工作?本文介绍如何通过Windows Update页面安排重启时间、设置活动时段以及暂停后续更新,有效延后重启操作,保护未保存的工作成果。

    win10自动更新在夜间偷偷运行怎么限制
    win10自动更新在夜间偷偷运行怎么限制

    Win10晚上自动下载或重启怎么办?不要直接禁用服务。本文教你通过设置活动时间、安排指定重启时间及短期暂停更新,精准控制Windows Update行为,避免夜间网络占用和意外重启,同时保留系统安全性。

    win10本地账户取消开机密码有哪些简单方法
    win10本地账户取消开机密码有哪些简单方法

    想跳过Win10开机输入密码?本文详解本地账户清空密码、netplwiz自动登录及PIN设置的步骤与区别,同时提醒Microsoft账户和域策略下的限制与风险。

    win10更新重启倒计时怎么取消不让电脑重启
    win10更新重启倒计时怎么取消不让电脑重启

    面对Win10更新重启倒计时,如何通过设置界面取消或延后?本文详解活动时间、安排重启及暂停更新的位置与作用,帮助你在不影响工作的前提下管理系统重启。

    win10取消开机密码重启后还要输密码怎么办?
    win10取消开机密码重启后还要输密码怎么办?

    Win10设置取消密码后重启依然要求输入?这通常不是系统故障,而是自动登录配置错误或睡眠唤醒验证未关闭。本文教你区分本地账户与微软账户,正确设置netplwiz自动登录,并检查锁屏策略,彻底解决开机免密问题。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    macOS软件
    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    Mac软件 更多
    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

    灵活计算器
    灵活计算器
    macOS/iOS/Android

    灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    WINDOWS 更多
    3dmax(3ds max)
    3dmax(3ds max)
    Windows

    Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。