搭建链路追踪系统 Jaeger
架构
架构图

架构设计
在设计以 Jaeger 为中心的链路追踪系统时,我们采用微服务架构模式。
Jaeger作为核心追踪系统,负责收集、存储和展示分布式追踪数据。Elasticsearch作为后端存储,提供数据的持久化和高效的搜索能力。- 系统还包括
Jaeger Agent、Collector、Query服务和UI界面、Kibana。
各服务功能
Jaeger Client:集成在应用程序中,自动收集追踪数据并发送给Agent。Jaeger Agent:运行在每个服务节点上,接收来自Client的Span数据,并批量发送到Collector。Jaeger Collector:接收处理来自Agent的数据,并存储到Elasticsearch。Elasticsearch:存储追踪数据,提供数据索引和搜索能力。Jaeger Query:查询Elasticsearch中的追踪数据,供UI展示。Jaeger UI:提供用户界面,使用户能够查询和分析追踪数据。Kibana: 提供数据可视化能力,支持多种图表展示。
流程概述
流程包括:
- 服务发起调用,
Jaeger Client在服务端自动创建Span。 Jaeger Agent收集Span并批量发送给Jaeger Collector。Jaeger Collector处理接收到的Span并存储到Elasticsearch。Jaeger Query服务从Elasticsearch获取数据,提供给Jaeger UI展示。Jaeger UI展示Span数据,用户可以查询和分析。Kibana查看,过滤日志数据,提供数据可视化能力。
部署
部署策略
使用 Docker 部署 Jaeger 及相关服务。利用 Docker Compose 定义服务,实现一键部署和管理。Docker 镜像包括 Jaeger 的 all-in-one 镜像和 Elasticsearch 镜像。Compose 文件配置服务间的网络和端口映射。
docker-compose.yaml
services:
#jaeger链路追踪 — Jaeger for tracing
jaeger:
image: jaegertracing/all-in-one:1.42.0
container_name: jaeger
restart: always
ports:
- "5775:5775/udp"
- "6831:6831/udp"
- "6832:6832/udp"
- "5778:5778"
- "16686:16686"
- "14268:14268"
- "9411:9411"
environment:
- SPAN_STORAGE_TYPE=elasticsearch
- ES_SERVER_URLS=http://root:passwd@elasticsearch:9200
- LOG_LEVEL=debug
networks:
- default
networks:
default:
external:
name: log-collect_looklook_net
Jaeger-ui

kibana-index

jaeger-log

优劣势分析
使用 Jaeger 和 Elasticsearch 的优势包括:
- 高效性
:Elasticsearch提供快速的数据索引和查询能力。 - 可扩展性:
Jaeger和Elasticsearch都能水平扩展,适应大规模分布式系统。 - 易用性:
Docker部署简化了环境配置和管理。 - 可视化:
Jaeger UI提供直观的追踪数据展示。
然而,也存在一些劣势:
- 资源消耗:
Elasticsearch作为存储解决方案,可能会占用较多的存储和计算资源。 - 复杂性:
Docker容器管理和服务编排增加了系统的复杂性。 - 性能调优:需要对
Jaeger和Elasticsearch进行适当的配置和调优,以满足性能要求。
综上所述,以 Jaeger 为中心,结合 Elasticsearch 存储的链路追踪系统,提供了一套完整的追踪解决方案,适用于需要高性能和可扩展性的分布式系统。通过 Docker 部署,我们能够实现快速、灵活的系统搭建和管理。
项目地址
Log-Collect
openui-svelte-build
openui-backend-go


















