Docker安装Jaeger链路追踪平台

介绍

Jaeger 是一个开源的分布式追踪系统,最初由 Uber 开发并开源,现已成为云原生计算基金会(CNCF)的项目之一,它已经有 9 年的成功历史。它主要用于监控和诊断微服务架构中的请求链路,帮助开发者和运维人员理解系统中各个服务的调用关系。 Jaeger 通过为每个请求生成唯一的追踪 ID,记录请求在系统中的完整路径,包括经过的每个服务、调用的方法以及每个步骤的耗时。可以帮助分析系统中每个服务的性能,识别瓶颈和慢请求。通过可视化展示每个 Span 的耗时,开发人员可以快速定位问题所在。
主要优势

  • 开源免费:Jaeger 是开源软件,社区版免费使用。
  • 易于集成:提供多种语言的客户端库,支持 OpenTracing 标准。如:Go,Java,Python,Node.js,C++
  • 强大的可视化:提供直观的 Web UI,方便查看和分析追踪数据。
  • 可扩展性:支持多种存储后端,可以根据需求灵活选择。如:Cassandra、Elasticsearch、Kafka 等
    应用场景
  • 微服务架构:监控和诊断微服务之间的调用链路。
  • 性能优化:识别系统中的性能瓶颈。
  • 故障排查:快速定位和解决分布式系统中的问题。
  • 系统可观测性:提升系统的可观测性,帮助理解系统的运行状态。

Docker默认安装

bash 复制代码
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

相关推荐
牛奔2 分钟前
Docker Compose 两种安装与使用方式详解(适用于 Docker 19.03 版本)
运维·docker·云原生·容器·eureka
青州从事5216 小时前
20260108【mac】【brew】【docker】安装
macos·docker·eureka
菜鸟思维7 小时前
优化NextJs 项目的Docker 镜像 从3.62G 优化到 296.85M
docker
怣疯knight7 小时前
Docker Desktop 4.55.0版本安装成功教程
windows·docker
东方佑8 小时前
使用Docker Compose一键部署OnlyOffice:完整指南与配置解析
运维·docker·容器
赵文宇(温玉)8 小时前
Docker的价值、特点、创新与关键技术
运维·docker·容器
Coder码匠10 小时前
Docker Compose 部署 Spring Boot 应用完全指南
spring boot·docker·容器
可爱又迷人的反派角色“yang”10 小时前
k8s(二)
linux·运维·docker·云原生·容器·kubernetes·云计算
计算机小手11 小时前
内网穿透系列十六:使用 wg-easy 快速搭建基于 wireguard 的虚拟局域网,支持Docker部署
经验分享·网络协议·docker·开源软件
旧日之血_Hayter11 小时前
docker部署项目,/var/lib/docker/overlay2目录满了如何清理?
运维·docker·容器