当前位置: 首页 > news >正文

Istio笔记04-基于Jaeger的分布式链路追踪

介绍

在微服务网格场景下,服务调用拓扑复杂,故障定位、时延分析难度大幅提升。Istio 原生支持分布式追踪标准,可将调用跨度数据上报至链路追踪系统。本文基于Jaeger完整落地 Istio 网格内服务调用链路采集、可视化,覆盖部署、网格配置、流量验证、生产选型等核心环节。

部署验证

环境说明

K8S 版本:1.32
Istio 版本:1.22.8
追踪组件:all-in-one:1.76.0
追踪协议:OpenTelemetry
可以参考 Istio笔记01–快速体验Istio 快速部署k8s+istio基础环境。

部署 Jaeger

  1. 安装了istio后,直接用jaeger.yaml的all-in-one快速验证
    1.1 部署jaeger
    $ kubectl apply-fistio-1.22.8/samples/addons/jaeger.yaml
    1.2 配置gw & vs
    gw yaml
    apiVersion:networking.istio.io/v1kind:Gatewaymetadata:annotations:{}name:trace-gatewaynamespace:istio-systemspec:selector:istio:ingressgatewayservers:-hosts:-prometheus.xg.com-grafana.xg.com-jaeger.xg.comport:name:httpnumber:80protocol:HTTP
    vs yaml
    apiVersion:networking.istio.io/v1kind:VirtualServicemetadata:annotations:{}name:jaegernamespace:istio-systemspec:gateways:-istio-system/trace-gatewayhosts:-jaeger.xg.comhttp:-route:-destination:host:tracingport:number:80
    gw + vs 就绪后,通过本地域名 http://jaeger.xg.com:31480/ 访问确保jaeger就绪
  2. 配置 Istio 开启链路追踪
    2.1 在集群istio 的configmap istio中新增 extensionProviders -> jaeger
    ...extensionProviders:-name:jaegeropentelemetry:port:4317service:jaeger-collector.istio-system.svc.cluster.local...
    2.2 在 kube-system 命名空间新增一个默认的Telemetry
    # tracing.yamlapiVersion:telemetry.istio.io/v1alpha1kind:Telemetrymetadata:name:defaultnamespace:istio-systemspec:tracing:-providers:-name:"jaeger"randomSamplingPercentage:100.0# 按需设置采集比率customTags:cluster:literal:value:"k8s-bj-xx-1-yy"# 可以按需更改为需要的集群request_method:header:name:":method"request_path:header:name:":path"

验证

  1. 相关测试服务域名
    按需准备如下测试域名,当前没有接入LB,直接指向gw svc对应的31480端口
    http://test-nginx.xg.com:31480/
    http://bookinfo.xg.com:31480/
    http://jaeger.xg.com:31480/

  2. 快速产生测试数据
    按需快速产生一些数据

    1) 在外部快速访问 bookinfoforiin$(seq1100);docurl-s-o/dev/null"http://bookinfo.xg.com:31480/productpage";done2) 在外部快速访问 http://test-nginx.xg.com:31480/$iforiin$(seq1100);docurl--connect-timeout2-s-o/dev/null"http://test-nginx.xg.com:31480/$i";done3)在nginx 里面访问该服务:foriin$(seq1100);docurl-s-o/dev/null"http://productpage.default:9080/productpage";done
  3. 前端展示
    上述3种测试都可以正常看到其请求链路和对应的耗时、接口信息,能查看服务-服务的链路信息
    3.1 从 外部访问bookinfo

    3.2 从外部访问nginx

    3.3 从内部 nginx pod 直接访问 productpage.default

注意事项

  1. 如何单独根据traceid查询?
    直接在上面输入框内输入traceid即可检索

  2. 如何根据x-request-id查询?
    用户获取请求id(从日志或者istio sidecar里面查询), 然后在Search那里选中目标服务,在Tags那里输入 guid:x-request-id=4f05f59b-83d9-9c1f-9e45-604a5019853a 即可查看指定x-request-id的请求链路信息

  3. 生产环境怎么部署?
    可以使用官方的helm chart部署,后端按需选择为 Elasticsearch 或者 Cassandra。
    选型结论:
    3.1 选择 Elasticsearch
    业务需要依据自定义标签(X-Request-ID、错误码、接口名)检索链路;排查方式多样化。 代价:做好分片规划、ILM 冷热索引、控制写入压力。
    3.2 选择 Cassandra
    只有一个查询方式:已知 TraceID 查链路;不需要任何标签检索;集群 Span 量级极大,优先保障写入稳定。

    对比项CassandraElasticsearch
    写入性能极高。顺序时序写入,高吞吐、低写入抖动,适合大规模微服务海量 Span。写入低于 Cassandra;存在段合并压力,流量极高需精细调优(分片、刷新间隔)。
    检索能力短板。仅主键 TraceID 高效查询;Tag / 自定义字段过滤无索引,全表扫描,基本不可用。强项。支持 Span Tag、http.x_request_id 等标签过滤、模糊检索、聚合统计,满足业务按 X-Request-ID、接口名检索需求。
    存储成本压缩优秀;冷数据 TTL 清理友好。同等数据量磁盘占用更高;开启多字段索引会进一步放大存储。
    扩缩容横向扩容简单;重平衡数据流可控,但运维门槛高(修复未压实分区、GC 调优)。分片扩容、重建索引成本高;大规模集群运维复杂度更高。
    故障恢复节点宕机数据依赖副本,修复周期较长。分片副本机制;容易出现分片不可用、unassigned 分片问题。
    典型适用场景只通过TraceID 查询链路;追求超高写入吞吐量;几乎不用标签检索。需要按 Tag、RequestID、接口、状态码检索链路;经常模糊排查问题(你的业务场景首选)。
    TTL 清理原生支持按时间分区,过期数据删除轻量化。依靠索引生命周期 ILM,定期删除整个索引,粒度为索引级别,无法单条删除 Span。
  4. 采样率不要长期保持 100%,线上根据流量规模灵活调整为 5%~50%.

参考文档

  1. www.jaegertracing.io
  2. www.jaegertracing.io/demo
  3. istio doc -> 分布式追踪的常见问题
  4. Jaeger存储后端选择:Elasticsearch与Cassandra对比分析
http://www.jsqmd.com/news/1245256/

相关文章:

  • TM4C123BH6ZRB PWM故障保护与QEI编码器接口实战配置详解
  • 生成式 AI 赋能 WebDAV 目录劫持钓鱼攻击链与检测防御研究
  • 关于配置mcp服务端sse-message-endpoint和sse-endpoint的注意点
  • 5. CPPM和SCMP可以一起考吗 - 众智商学院cppm官方
  • Spring Boot 3 + Vue 3 + MySQL 仓储物流管理系统源码 前后端分离实战
  • 七月二十二日
  • 2026 年新发布:西市评价高的山地圈山双边丝围栏生产厂家有哪些,颠覆认知:别再用传统围栏了!山地圈山双边丝围栏的秘密 - 企业推荐官【认证】
  • 光速虚拟机:轻量级虚拟化技术的实践指南
  • 【Bug已解决】[BUG] FastFileWriter leaks one fd per save, causing orphan inodes and filesystem ENOSPC on c
  • 芝柏售后服务中心完整网点地址与热线实地考察报告_多信源验证(2026年7月最新) - 亨得利官方服务中心
  • 2026 年 7 月新发布:大祥热门的锈钢板幕墙优质厂家哪个好,别再用玻璃了!这套幕墙如何省下30%预算? - 品质体验官
  • 从瑞德克斯隐私保护表达来看,会更安心吗?
  • Unity游戏实时汉化实战:XUnity自动翻译器原理、配置与疑难排错
  • OpenAI Function Calling API 详解:从原理到Python实战
  • 数据中心CDU阀门选型硬指标:品牌排名与实测数据
  • PDMS设计模块IDF文件导出全流程解析与优化
  • 帝舵香港售后2026年7月最新通知:网点地址热线电话全开 - 帝舵中国官方服务中心
  • 亲身到店探访深圳欧米茄售后服务中心|全新服务热线及详细维修地址(2026年7月最新) - 欧米茄服务中心
  • 2026年7月最新雅典厦门大悦城维修保养服务电话 - 亨得利钟表维修中心
  • 2026 年当下,黎川口碑好的油炸机生产商选哪家,别再买!这台小电器颠覆你的厨房油炸体验 - 实业推荐官【官方】
  • 不止于填充,法国菲欧曼的全维度抗衰布局
  • 粉笔刷题App 与华图在线题库对比:客观评测与选型参考
  • 程序源码 OSS 上传 bug
  • 2026年7月广州不锈钢回收/越秀区不锈钢回收公司推荐_广州鑫惠再生资源有限公司 - 品牌宣传支持者
  • AI写开题报告工具哪个好?2026年主流工具对比与推荐
  • Tiva™ ADC采样序列与数字比较器硬件联动实现实时监控
  • TM4C123 GPIO寄存器配置实战:中断、复用与驱动配置详解
  • 实习必备:3个高效PDF处理技巧(Word编辑/合并/页面提取)
  • VMware Workstation 8虚拟机环境搭建与优化指南
  • 2026年7月最新爱彼重庆时代天街维修保养服务电话 - 爱彼中国官方服务中心