3种环境全覆盖:Jaeger分布式追踪系统部署实战指南
Jaeger是CNCF毕业的开源分布式追踪系统,专为云原生环境设计,可帮助开发和运维团队监控微服务架构中的请求流、诊断性能瓶颈和错误。本文将详细介绍在Docker、Kubernetes及云原生环境下部署Jaeger的完整流程,包含环境准备、配置优化和最佳实践,让你快速掌握分布式追踪系统的搭建技巧。
Jaeger架构概览
Jaeger采用微服务架构设计,主要包含以下核心组件:
graph TD
SDK["OpenTelemetry SDK"] --> |HTTP or gRPC| COLLECTOR
COLLECTOR["Jaeger Collector"] --> STORE[Storage]
COLLECTOR --> |gRPC| PLUGIN[Storage Plugin]
COLLECTOR --> |gRPC/sampling| SDK
PLUGIN --> STORE
QUERY[Jaeger Query Service] --> STORE
QUERY --> |gRPC| PLUGIN
UI[Jaeger UI] --> |HTTP| QUERY
subgraph Application Host
subgraph User Application
SDK
end
end
- Collector(收集器):接收追踪数据并进行处理,支持多种存储后端
- Query Service(查询服务):提供API接口供UI查询追踪数据
- UI(用户界面):可视化展示追踪数据和服务依赖关系
- Storage(存储):支持Elasticsearch、Cassandra等多种存储方案
完整架构文档可参考官方README。
1. Docker快速部署
Docker是体验Jaeger最简单的方式,适合开发和测试环境。Jaeger提供了"all-in-one"镜像,将所有组件打包在单个容器中,无需额外配置。
基础部署步骤
docker run \
--rm \
--name jaeger \
-p 4318:4318 \
-p 16686:16686 \
-p 14268:14268 \
jaegertracing/all-in-one:latest
参数说明:
-p 4318:4318:OTLP协议端口,接收应用发送的追踪数据-p 16686:16686:Jaeger UI端口-p 14268:14268:Jaeger客户端直接连接端口
启动后访问 http://localhost:16686 即可打开Jaeger UI。
带示例应用的部署
Jaeger提供了HotROD示例应用,可模拟真实微服务架构并生成追踪数据:
# 下载docker-compose配置
curl -O https://gitcode.com/GitHub_Trending/ja/jaeger/raw/main/examples/hotrod/docker-compose.yml
# 启动Jaeger和HotROD应用
docker compose up
该配置会启动Jaeger后端和HotROD应用,访问 http://localhost:8080 可打开示例应用界面,通过下单流程生成追踪数据,然后在Jaeger UI中查看详细追踪信息。示例应用完整说明见examples/hotrod/README.md。
2. Kubernetes生产部署
对于生产环境,Kubernetes提供了更好的可扩展性和管理能力。Jaeger官方提供了完整的Kubernetes部署方案,支持高可用配置和持久化存储。
使用Helm Chart部署
Jaeger提供官方Helm Chart,简化Kubernetes部署流程:
# 添加Helm仓库
helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
# 安装Jaeger
helm install jaeger jaegertracing/jaeger \
--set provisionDataStore.cassandra=false \
--set storage.type=elasticsearch \
--set elasticsearch.host=elasticsearch-host \
--set elasticsearch.port=9200
完整的Helm配置选项可参考官方文档。
自定义资源部署
对于更复杂的需求,可使用Jaeger Operator和自定义资源(CR)进行部署:
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: jaeger-production
spec:
strategy: production
collector:
replicas: 3
storage:
type: elasticsearch
options:
es:
server-urls: http://elasticsearch:9200
ingress:
enabled: true
hosts:
- jaeger.example.com
Kubernetes部署示例可参考examples/oci目录,包含完整的Ingress配置、TLS证书管理和监控集成方案。
验证部署
部署完成后,通过端口转发访问Jaeger UI:
kubectl port-forward svc/jaeger-query 16686:16686
访问 http://localhost:16686 确认系统正常运行。
3. 云原生环境部署
在AWS、GCP、Azure等云平台部署Jaeger时,可充分利用云服务提升性能和可靠性,如托管Elasticsearch服务、负载均衡和自动扩缩容。
云平台专属配置
以Oracle Cloud为例,使用云平台的负载均衡服务暴露Jaeger UI:
apiVersion: v1
kind: Service
metadata:
name: jaeger-query
spec:
type: LoadBalancer
selector:
app: jaeger-query
ports:
- port: 80
targetPort: 16686
完整的云平台部署方案可参考examples/oci/README.md,包含Ingress配置、TLS证书管理和监控集成。
多区域部署策略
对于跨区域部署,可采用以下架构:
graph TD
Client[应用] --> LB[负载均衡器]
LB --> C1[区域1 Collector]
LB --> C2[区域2 Collector]
C1 --> S3[共享存储]
C2 --> S3
Q1[区域1 Query] --> S3
Q2[区域2 Query] --> S3
UI1[区域1 UI] --> Q1
UI2[区域2 UI] --> Q2
这种架构确保追踪数据集中存储,同时允许跨区域查询,提高系统可用性。
部署验证与示例应用
部署完成后,可使用Jaeger提供的HotROD示例应用验证系统功能。HotROD是一个模拟的 ride-sharing 应用,包含多个微服务,可生成真实的追踪数据。
运行HotROD应用
docker run \
--rm \
--link jaeger \
--env OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4318 \
-p 8080-8083:8080-8083 \
jaegertracing/example-hotrod:latest \
all
访问 http://localhost:8080,通过界面下单测试,然后在Jaeger UI中查看生成的追踪数据。HotROD应用详细使用说明见examples/hotrod/README.md。
查看服务依赖图
在Jaeger UI的"System Architecture"页面,可查看自动生成的服务依赖图,直观了解系统架构和请求流向。
最佳实践与性能优化
存储后端选择
根据规模选择合适的存储后端:
| 存储方案 | 适用场景 | 优势 |
|---|---|---|
| 内存存储 | 开发测试 | 无需额外配置 |
| Elasticsearch | 中小规模生产 | 查询性能好,适合日志和追踪数据 |
| Cassandra | 大规模分布式 | 高可用,写入性能好 |
详细的存储配置可参考docker-compose目录下的各存储方案示例,如docker-compose/elasticsearch和docker-compose/cassandra。
性能调优参数
collector:
max-concurrent-spans: 10000
queue-size: 100000
num-workers: 10
sampling:
initial-sampling-probability: 0.01
target-samples-per-second: 10
采样策略配置可参考cmd/jaeger/sampling-strategies.json,根据业务需求调整采样率。
监控与告警
Jaeger暴露Prometheus指标,可集成Grafana进行监控:
scrape_configs:
- job_name: 'jaeger'
static_configs:
- targets: ['jaeger-collector:14269', 'jaeger-query:16687']
监控配置示例可参考monitoring/jaeger-mixin,包含预定义的告警规则和仪表盘。
总结与展望
本文介绍了Jaeger在三种主流环境下的部署方案:
- Docker:适合快速体验和开发测试
- Kubernetes:适合生产环境,提供高可用和弹性扩展
- 云原生:充分利用云服务提升性能和可靠性
Jaeger v2版本带来了多项改进,包括OpenTelemetry支持增强、存储插件架构和性能优化。未来Jaeger将继续深化与云原生生态的集成,提供更强大的分布式追踪能力。
如需进一步学习,建议参考:
关注项目更新,及时获取新功能和安全补丁。部署过程中遇到问题,可通过GitHub Issues或社区论坛寻求帮助。
如果你觉得本文有帮助,请点赞收藏,关注获取更多分布式系统部署实战指南!
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00