Kubernetes生产实践系列之十三:在Kubernetes部署Jaeger并进行trace管理

三种trace的结构及包提取(根据师兄论文整理) 1.CERNET trace的文件结构 Trace文件中有多个Packet data,其中每一个Packet data的格式 CERNET的trace文件中每一个报文的长度都固定为52字节,1——4这4个字节为每一个报文的采集时间精确到秒。5——8这4个字节为每一个报文的采集时间精确到毫秒。9——28这20个字节为报文的固定头部,就是IP头部的固定20个字节,采自网络中报文的头部1——20字节... 阅读详情

一、前言

在云原生的生产环境中,大量微服务和中间件的部署以及微服务之间复杂的调用关系会将业务系统排查的难度提高一个数量级,而一个优秀的APM系统是复杂的分布式业务系统进行问题排查最强大的帮手之一,一个好的APM系统可以更直观的反应系统内部的业务流,帮你快速将问题锁定在几个相关的上下游模块。

Uber开源的分布式系统调用链跟踪方案Jaeger能够在云原生快速部署的情况下,支持大规模、分布式、近实时的APM。根据Jaeger网站的描述,Uber现在每天使用Jaeger处理好几十亿的span。

转载自https://blog.youkuaiyun.com/cloudvtech

二、Jaeger系统方案

2.1 Jaegr的功能特点

根据Jaeger的官网描述,Jager具有以下的功能:

  • 分布式上下文传递
  • 分布式业务监控
  • RCA
  • 服务依赖分析
  • 性能调优

它的优秀的能力包括:

  • 可扩展
  • 对OpenTracing的原生支持
  • 多后端存储的支持(Cassandra/ES/InfluxDB/DynamoDB etc.)
  • 优秀的UI
  • 云原生的部署
  • 可观测性(和Prometheus的高度集成)
  • 兼容Zipkin

同时,由于Jaeger是一款入侵性的APM,所以Jaeger还提供了多种客户端lib的支持。

2.2 Jaeger的架构方案

由于APM系统面对的通常是业务系统3~5倍甚至更多的TPS,所以APM面临的接入、存储、聚合和查询的压力是非常大的,一个好的APM系统必定是一个分布式可扩展的高性能系统。

根据不同的业务情况,需要选择不同的Jaeger架构进行部署实时。对于一些低TPS的CRM、BI、OA等业务系统,可以使用如下的架构快速部署:

基于Jaeger的低TPS系统APM方案

在这一架构中,Jaeger Clooector会直接将client/agent上报的Span存储到es或者ca这样的存储中,这一的架构可以快速进行改造和实施,缺点是无法低于高TPS系统的请求。而针对高TPS的业务流,需要使用kafka进行压力缓冲,具体架构如下:

基于Jaeger的高TPS系统APM方案

在这一架构中,kafka将业务接入和业务存储进行分离,可以提供业务压力缓存并增加系统可用性;而es可以提供强大的存储、聚合和查询功能,为最终的分析提供强大的后端支持;同时可以在es开启时间清理特性,保证trace数据的总存储量可控。

与此同时,Jaeger还提供了灵活的采样配置项以控制trace数据的tps:

  • const,全量采集,采样率设置0/1 分别对应打开和关闭
  • probabilistic ,概率采集,0~1之间取值,
  • rateLimiting ,限速采集,每秒只能采集一定量的数据
  • remote ,一种动态采集策略,根据当前系统的访问量调节采集策略

同时Jaeger还提供了一些tuning tip来提高Jaeger系统的性能:

https://www.jaegertracing.io/docs/1.17/performance-tuning/

转载自https://blog.youkuaiyun.com/cloudvtech

三、快速部署Jaeger系统

3.1 获取代码

git clone https://github.com/jaegertracing/jaeger-kubernetes.git

3.2 部署

kubectl create ns jaeger

修改production/cassandra.yml选择使用合适的存储:

修改文件jaeger-production-template.yml:

最后为Jaeger UI增加Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: jaeger-ui
  namespace: jaeger
spec:
  rules:
  - host: jaeger.test.com
    http:
      paths:
      - path: /
        backend:
          serviceName: jaeger-query
          servicePort: 80

最新的版本还可以通过Operator的方式进行部署(https://www.jaegertracing.io/docs/1.17/operator/),支持如下几种业务方式:

  • AllInOne (Default) strategy
  • Production strategy
  • Streaming strategy

转载自https://blog.youkuaiyun.com/cloudvtech

四、使用Jaeger进行APM demo

在Jaeger的官网,提供了一个例子进行APM的demo:

https://www.jaegertracing.io/docs/1.17/getting-started/#sample-app-hotrod

这个例子里面的调用关系如下:

 这个例子模拟了微服务之间的调用,微服务对中间件的调用,以及各种调用的成功和失败的情况,可以比较直接的反应jaeger的APM能力。

进行部署之后,可以进行访问:

并进行如下分析:

转载自https://blog.youkuaiyun.com/cloudvtech

 

 

基于kubernetes的jaeger 链路追踪部署 基于kubernetes的jaeger 链路追踪部署jaeger的相关知识介绍架构图对OpenTracing的原生支持多个存储后端jaeger-agent(代理)jaeger-collectorjaeger-queryhotrod基于k8s的jaeger安装1.configmap 部署: jaeger-config.yaml2. jaeger-query 部署安装: jaeger-query-deployment.yml3.jaeger query service的安装:jaeger-query-servi 阅读详情

相关推荐

Kubernetes生产环境Jaeger分布式追踪实战指南

分布式追踪是微服务可观测性的核心能力,其本质是通过唯一Trace ID贯穿跨服务请求链路,实现调用路径、耗时、错误与上下文的自动串联。其技术原理依赖OpenTelemetry(OTel)标准协议、进程间上下文透传(如traceparent头)、采样策略与后端存储协同。该能力直接支撑故障快速定位、性能瓶颈分析与SLA保障,广泛应用于电商下单、支付清结算、实时推荐等高并发分布式场景。本文聚焦Kubernetes环境下Jaeger的生产级落地——涵盖All-in-One陷阱规避、Sidecar与DaemonSet

weixin_34161032的博客 662

k8s Sidecar filebeat 收集容器中的trace日志和app日志

将容器中服务的trace日志和应用日志收集到KAFKA,需要注意的是 trace 日志和app 日志需要存放在中。分别为APP_TOPIC和TRACE_TOPIC。

不忘初心,方得始终 1283

Kubernetes生产环境Jaeger分布式追踪落地实战

分布式追踪是微服务可观测性的核心能力,其本质是通过跨服务请求链路的Span采集、传播与聚合,实现延迟分析、故障定位与依赖拓扑可视化。技术原理上依赖OpenTracing/OpenTelemetry标准、上下文透传(如B3/TraceContext)、采样策略与后端存储协同。在Kubernetes环境中,它不再只是客户端埋点,更涉及Agent部署模型(Sidecar/DaemonSet)、网络策略兼容性、Collector资源调优及ES/Kafka等存储选型。尤其当面临高吞吐Span写入、NetworkPol

weixin_33984032的博客 422

K8S环境部署jaeger-all-in-one

Jaeger all in one,K8S环境部署

Arthur Guo 的专栏 2874

生产级Jaeger部署与Trace管理:从存储选型到采样策略

分布式系统中,一次请求往往横跨多个服务,传统日志难以串联完整调用链,链路追踪技术由此成为排查慢请求、定位跨服务故障的关键基础设施。OpenTelemetry作为可观测性领域的标准协议,统一了trace数据的产生与上报方式,而Jaeger作为CNCF孵化的主流链路追踪系统,凭借成熟的存储生态和灵活的策略配置,被广泛用于生产环境。在Kubernetes集群中部署Jaeger并非简单的all-in-one,需重点考虑Elasticsearch等存储后端选型、组件拓扑设计以及采样策略。合理的索引生命周期管理能避免存

weixin_29587015的博客 188

K8s实战:5分钟搞定OpenTelemetry+Jaeger全链路监控(附Java示例)

本文详细介绍了如何在Kubernetes环境中快速部署OpenTelemetry和Jaeger Operator实现全链路监控。通过Java示例演示自动埋点配置,帮助开发者5分钟内搭建完整的监控系统,有效解决微服务架构下的跨服务问题追踪难题。

h6j7k8l9p0的博客 757

链路跟踪工具zipkin——k8s从入门到高并发系列教程(十四)

使用zipkin 链路跟踪工具,找出时间都消耗在哪了

fanghailiang2016的博客 1640

jaeger-kubernetes:支持将Jaeger部署到Kubernetes中

Jaeger Kubernetes模板 该存储库已弃用! 在生产Kubernetes集群中推荐的安装和管理Jaeger的方法是通过 。 Jaeger操作员提供了一个从Jaeger CR Kubernetes清单。 可以将其视为普通Kubernetes清单文件的替代来源。 Jaeger生态系统还提供了作为部署Jaeger的替代方法。 如何贡献 请参阅 开发设置 该模板使用内存存储,功能有限,用于本地测试和开发。 图像使用默认为最新版本。 不要在生产环境中使用此模板。 请注意,功能可能与用于生产的固定Docker版本不同。 在当前名称空间中安装所有内容: kubectl create -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/all-in-one/jaeger-all-in-one-template.yml 一切准备就绪后, kubectl get service jaeger-query告诉您在哪里可以找到Jaeger URL。 如果您使用minikube设置Kube

Kubernetes生产实践系列之十四:使用Jaeger和kafka构建健壮的APM系统的案例

一、前言 文章《Kubernetes生产实践系列之十三:在Kubernetes部署Jaeger并进行trace管理》介绍了使用Jaeger进行APM的基本架构和测试案例,并且提及了使用Kafka和ES构建更健壮和高能力的Jaeger APM系统的架构方案: 在文章《Fault Tolerance in Distributed Systems: Tracing with Apache Kaf...

cloudvtech的博客 2338

Moveit Servo学习

MoveIt Servo功能与配置指南 摘要:本文介绍了MoveIt Servo的功能特性,包括支持关节速度、末端执行器速度和位置控制,以及安全功能如奇点检查、碰撞检测等。通过示例展示了如何运行伺服控制demo,详细解析了关键节点和话题。最后以睿尔曼rml_63机器人为例,讲解了如何自定义伺服配置文件,包括环境设置、输入输出参数配置、平滑滤波器和规划场景监控等关键配置项。文章提供了从基础使用到自定义机器人配置的完整指导,帮助开发者实现高效的实时运动控制。

Fisher的博客 1173

【物联网原理与应用】实验三:RFID低频卡实验——门禁系统

【物联网原理与应用】实验三:RFID低频卡实验——门禁系统

m0_74164458的博客 3999

5 分钟上手 vanitygen:手把手生成带自定义前缀的比特币地址

想让比特币地址以自己的名字、团队名或某个关键词开头,而不是接受钱包随机分配的字符?vanitygen 就是一个运行在终端里的 vanity 地址生成器:你给出前缀,它在 CPU 上高速遍历密钥直到地址命中,同等硬件下出地址的速度是同类工具的十倍起步,而且边跑边刷新难度、速度和命中概率。 ## 先看结果:一个 1Love 开头的地址 双核机器上等待约 45 秒,终端会输出: ``` Diffi

gitblog_00109的博客 70

手把手教你用vivado2018.3为复旦微JFMQL15T打IP补丁(含环境变量配置技巧)

本文详细介绍了在Vivado 2018.3环境中为复旦微JFMQL15T开发板打IP补丁的全流程,包括环境变量配置、IP缓存管理等关键步骤。通过实战验证的解决方案,帮助工程师快速搭建开发环境,解决国产芯片开发中的常见问题,提升开发效率。

weixin_30374009的博客 723

Kubernetes部署Jaeger实战:微服务链路追踪与生产实践

微服务架构下,一次用户请求往往跨越多个服务节点,传统日志排查难以还原完整调用链路,分布式追踪成为可观测性体系的关键支柱。Jaeger作为CNCF孵化的链路追踪系统,通过Trace与Span模型记录请求路径和耗时分布,帮助运维人员快速定位性能瓶颈与异常根因。在Kubernetes集群中,借助Jaeger Operator实现声明式部署,配合Elasticsearch持久化存储与合理的采样策略,可构建生产级追踪基础设施。通过OpenTelemetry SDK接入业务应用,将Span数据上报至Collector,

weixin_29913663的博客 219

突发环境事件怎么模拟?用Python+GIS实现高斯烟团模型(附完整代码)

本文详细介绍了如何利用Python与GIS技术实现高斯烟团模型,用于模拟化工泄漏等突发环境事件的动态扩散过程。通过核心原理讲解、参数快速获取方案、Python代码实现及GIS可视化集成,为环境应急人员提供了一套完整的解决方案。特别适合危险品运输事故等瞬态污染场景的应急决策支持。

weixin_33692284的博客 485

一文速学数模-K-means聚类算法实战:信用卡用户画像聚类分析

该项目算是非常经典的金融业务用户画像的基础分析了,主要根据用户信用卡使用行为数据进行分析,根据收集到的不同字段信息,对每个用户划分类别。这里需要说明一下的是,聚类模型只是将具有相似行为的大部分用户聚集到一个类别里面,这点并不会考虑到每个字段的含义,也就是分成的类别并不是用户价值等级,此类别仅仅是这个类别大体相同的信用卡用户行为对象,并不能给每个用户价值打上标签,那是评价模型做的事,这里要注意不要搞混淆了,用户价值评价是评价模型决定的,而画像是聚类模型分析的。

master_hunter的博客 1万+

OpenTelemetry+Jaeger生产级部署(从SDK集成到Trace分析全流程)

解决跨语言微服务追踪难题,本文详解基于Jaeger与OpenTelemetry的生产级分布式追踪方案。涵盖SDK集成、数据采集、链路分析全流程,支持多语言环境与云原生架构,提升系统可观测性。跨语言微服务的分布式追踪(Jaeger+OpenTelemetry)最佳实践,值得收藏。

LogicShoal的博客 545

数据挖掘实战-基于随机森林算法的交通事故预测模型

本实验数据集来源于Kaggle,原始数据集共有209306条,该数据集包含不同地区和时间段的交通事故详细信息。它包括各种指标,例如事故日期、天气状况、照明条件、碰撞类型、受伤人数和车辆参与情况。数据涵盖多个地点和事故类型,可全面了解交通事故及其原因。具体包括:crash_date:事故发生的日期。Traffic_control_device:所涉及的交通控制设备的类型(例如交通灯、标志)。weather_condition:事故发生时的天气状况。

m0_64336780的博客 1万+

Mortar生产部署:Docker容器化与Kubernetes编排完整指南

Mortar是一个功能强大的GO框架/库,专为构建gRPC(和REST)Web服务设计。它提供了开箱即用的配置管理、应用指标、日志记录、分布式追踪、性能分析和依赖注入等功能,帮助开发者快速构建可靠的微服务。本文将详细介绍如何将Mortar应用进行Docker容器化并通过Kubernetes实现高效编排,让你的微服务部署更加简单、可靠和可扩展。 ## 📦 准备工作:环境与依赖检查 在开始容器化

gitblog_01136的博客 916

Lumerical 教程,包含作者个人理解及相关设计案例 (目前共计184篇,持续更新中)

4138。

u011699626的博客 1608

【面试系列】软件架构师 高频面试题及详细解答

本文介绍了软件架构师岗位的初级、中级和高级面试题及详细解答,涵盖了系统设计、面向对象设计、分布式系统、云计算技术、性能优化等关键领域。通过这些问题和解答,候选人可以深入理解软件架构师的核心职责和技能要求。此外,文章总结了在面试中需要掌握的常考知识点,包括架构模式、分布式系统管理、安全性、数据管理和DevOps实践。通过掌握这些知识点,软件架构师能够有效设计和指导复杂系统的结构,确保系统的可扩展性、性能和维护性。

在路上的专栏 850

云原生技术14-OpenTelemetry + Jaeger:云原生可观测性的新标配

摘要: Jaeger是CNCF孵化的开源分布式链路追踪工具,专为解决微服务架构中的性能瓶颈定位难题。文章系统讲解了Jaeger的核心概念(Trace/Span/Baggage)、分层架构(Agent-Collector-Query-UI)、存储选型(Cassandra/ES/Badger)及标准化采集方案OpenTelemetry。重点解析了采样策略(头部/尾部/自适应)的权衡,以及如何与Prometheus/Grafana联动实现Metrics+Traces一体化分析。通过Docker和K8s部署示例,展

weitingfu的博客 293

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Kubernetes上Jaeger链路追踪生产部署指南

在微服务架构中,排查跨服务接口慢、偶发超时等问题,单靠日志和监控指标往往难以定位真实瓶颈。分布式链路追踪通过将一次请求拆分为多个Span并串联成完整Trace,成为生产环境必备的可观测性手段。作为CNCF毕业项目,Jaeger凭借对OpenTelemetry标准的原生支持,以及灵活的存储后端(如Elasticsearch、Badger),在Kubernetes环境中具备部署成本低、演进路径清晰的独特优势。从环境评估、组件选型到Helm/Operator/裸Manifest三种部署方式,再到采样策略、存储调优

weixin_32430941的博客 114

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

kubernetes-handbook 分布式追踪实战:从 OpenTracing 标准到 Jaeger/Zipkin 落地

在将单体应用拆分为微服务之后,服务可能分布在上千台服务器、不同的数据中心和可用区中,服务之间的调用关系错综复杂。本文以 kubernetes-handbook 仓库中 [分布式追踪](https://link.gitcode.com/i/a78efa190453b913d3450c147e786ecd) 一文为主线,系统讲解分布式追踪(Distributed Tracing)的核心概念、OpenT

gitblog_01111的博客 12

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Olares 集群 OpenTelemetry 自动注入与 Jaeger 链路追踪实战指南

在 Olares(Terminus)个人云系统中,服务以 Kubernetes 工作负载的形式运行在集群内。本指南以官方中间件文档 [mw-view-otel-data.md](https://link.gitcode.com/i/030ed12d205fda4d25e0142fc9b06fb5) 为主线,完整讲解如何为集群中的服务启用 OpenTelemetry 自动注入(Auto-instru

gitblog_00280的博客 221

Grafana Mimir 分布式链路追踪配置指南:OpenTelemetry 与 Jaeger 环境变量实战

> 本文基于 Grafana Mimir 官方文档 [configure-tracing](https://link.gitcode.com/i/a41d08c031cce01112dc3b6adc787c1d) 整理而成,并结合仓库源码(入口 [cmd/mimir/main.go](https://link.gitcode.com/i/9f8258798742d5872ce67d1e6faa2e

gitblog_00891的博客 913
上一篇: Kubernetes生产实践系列之十二:在Kubernetes部署和运维Presslabs MySQL
下一篇: Kubernetes生产实践系列之十四:使用Jaeger和kafka构建健壮的APM系统的案例
cloudvtech
博客等级 码龄9年 533粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值