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

Docker安装Jaeger链路追踪平台

介绍

Jaeger 是一个开源的分布式追踪系统,最初由 Uber 开发并开源,现已成为云原生计算基金会(CNCF)的项目之一,它已经有 9 年的成功历史。它主要用于监控和诊断微服务架构中的请求链路,帮助开发者和运维人员理解系统中各个服务的调用关系。 Jaeger 通过为每个请求生成唯一的追踪 ID,记录请求在系统中的完整路径,包括经过的每个服务、调用的方法以及每个步骤的耗时。可以帮助分析系统中每个服务的性能,识别瓶颈和慢请求。通过可视化展示每个 Span 的耗时,开发人员可以快速定位问题所在
主要优势
  • 开源免费:Jaeger 是开源软件,社区版免费使用。
  • 易于集成:提供多种语言的客户端库,支持 OpenTracing 标准。如:Go,Java,Python,Node.js,C++
  • 强大的可视化:提供直观的 Web UI,方便查看和分析追踪数据。
  • 可扩展性:支持多种存储后端,可以根据需求灵活选择。如:Cassandra、Elasticsearch、Kafka 等
应用场景
  • 微服务架构:监控和诊断微服务之间的调用链路。
  • 性能优化:识别系统中的性能瓶颈。
  • 故障排查:快速定位和解决分布式系统中的问题。
  • 系统可观测性:提升系统的可观测性,帮助理解系统的运行状态。

Docker默认安装

docker run --rm --name jaeger \
  -p 16686:16686 \
  -p 4317:4317 \
  -p 4318:4318 \
  -p 5778:5778 \
  -p 9411:9411 \
  jaegertracing/jaeger-query:latest

注意:jaeger可以由多种可用服务组成,jaeger-query是一个支持OpenTelemetry标准(OTLP协议)用来查询OpenTarcing跟踪链路跨度引用轨迹的可视化WebUI服务,默认只提供查询后端存储功能与WebUI;如需使用完整Jaeger功能,请下载Jaeger一体式版本(包含WebUI、收集器、查询、代理功能):all-in-one 或 使用 v2 版本,下载请参见官网:Jaeger – Download Jaeger

Portainer平台安装

在Pull image》Image中输入: jaegertracing/jaeger-query:latest,点击"Pull the image"拉取仓库镜像文件;稍等片刻拉取完毕后,Images列表中将会显示镜像信息;
确认镜像已拉取完毕,同样左侧Containers菜单中进入到容器管理面页,点击"Add container"进入添加容器配置界面;
需要注意的是jaeger-query有多个端口映射,设置docker容器映射端口Port mapping,如下:
  • 4317 =》4317:基于OTLP协议上传专用的rpc模式端口;
  • 4318 =》4318:基于OTLP协议上传专用的http模式端口;
  • 16686 =》16686:访问jaeger-ui平台的http端口
jaeger有多个端口规则,其它参见jaeger官方文档端口说明: APIs — Jaeger documentation
由于安装的是jaeger-query版本,只提供日志跟踪数据查询功能,默认需要依赖后端数据存储;jaeger-query向后端存储发起查询traces和metrics数据,并进行可视化展示;
Jaeger支持多种后端存储数据库,如下:
  • Memory:将接收到的跟踪数据存储在内存中,受内存空间限制,一旦进程退出,数据丢失;
  • Badger:是一个可嵌入式的持久键值数据库,类似于RocksDB; (在发布的Jaeger-collector版本中已经将Badger嵌入,做为默认后端存储用),但只适合单节点部署;
  • Cassandra:是一个开源的分布式NoSQL持久化数据库系统,Jaeger可以使用Cassandra做为集群的存储后端使用;
  • ElasticSearch:是一个是一个分布式、高扩展、高实时的搜索与数据分析引擎、文档型存储系统,Jaeger使用兼容的索引映射和Elasticsearch REST API,从而存储和查询后端数据;
  • Kafka:消息队列服务,可用作收集器和实际存储之间的中间缓冲区。Jaeger既可以配置为收集器(将跟踪数据导出到 Kafka 主题),也可以配置为摄取器(从Kafka读取数据并将其写入存储后端)
  • OpenSearch:是一款开源的分布式搜索和分析套件,衍生自 Elasticsearch,同样是一个高性能、分布式后端存储与分析引擎(对于大规模生产部署,官方推荐OpenSearch做为后端分布式存储)
除上述官方直接技术支持的后端存储外,还支持集于远程gRPC访问的自定义存储后端,用于扩展Jaeger存储生态系统;
详情参见官方文档描述: Storage Backends — Jaeger documentation
在Env中添加环境变量: SPAN_STORAGE_TYPE=grpc,GRPC_STORAGE_SERVER=192.168.1.3:7281,指向后端数据存储服务,当前GRPC_STORAGE_SERVER参数指向的是本地已安装的Quickwit日志搜索引擎docker容器IP和端口,并且Quickwit默认已开启自身跟踪链路和指标功能(Quickwit是一款可配合Jaeger做为后端存储的日志搜索引擎);
在Runtime&resources中分配docker容器运行所需要的cpu、内存、内存交接空间等,此处根据实际硬件条件分配即可;
完成上述配置后,点击Deploy the container按钮发布docker容器并启动Jeager-query服务,稍等片刻没有错误消息提示,即容器运行正常服务启动成功,如有错误提示,可在Containers列表中点击容器日志进行排查;

访问Jaeger-UI

在浏览器中输入:http://docker_ip:16686,进入到Jaeger-UI主页,此时在Service中已经能看到集成的Quickwit后端存储服务名,点击Find Traces查询,在列表中展示后端存储中已记录的跟踪链路数据;
只需要点击Traces列表中的跨度记录,并还可以进一步按层级展示跨度详情与指标可视化视图;
参考:
Getting Started — Jaeger documentation

http://www.kler.cn/a/571353.html

相关文章:

  • 家禽(驴、鸭、猪)-图像分类数据集
  • 1分钟,实现传感器通过串口服务器接入ZWS云
  • golang编程思考(1)——作用域
  • 【金融量化】Ptrade中如何获取各类回测数据?
  • 初始提示词(Prompting)
  • 009---基于Verilog HDL的单比特信号边沿检测
  • C语言文件操作学习笔记:从基础到实践
  • Spring WebFlux WebSocket 连接保持策略
  • 深入探索像ChatGPT这样的大语言模型-02-POST training supervised finetuning
  • ioday2----->标准io函数
  • python二级考试中会考到的第三方库
  • LeetCode 1745.分割回文串 IV:动态规划(用III或II能直接秒)
  • 对于基于RuleOS的DApp,如何进行安全的权限管理和访问控制?
  • 文本挖掘+情感分析+主题建模+K-Meas聚类+词频统计+词云(景区游客评论情感分析)
  • 项目升级golang版本
  • 初探WebAssembly
  • PyTorch 源码学习:GPU 内存管理之初步探索 expandable_segments
  • Hutool一个类型转换工具类 `Convert`,
  • 轻量服务器与普通云服务器区别是什么
  • Rust 面向对象特性解析:对象、封装与继承