Jaeger单机安装部署全指南:从环境准备到实战配置
2025.08.20 21:22浏览量:85简介:本文详细介绍了Jaeger单机安装部署的全过程,包括环境准备、安装步骤、配置优化以及常见问题解决方案,帮助开发者快速搭建高效的分布式追踪系统。
Jaeger单机安装部署全指南:从环境准备到实战配置
引言
Jaeger是Uber开源的分布式追踪系统,用于监控和排查微服务架构中的性能问题。单机安装部署是Jaeger使用的最基础场景,适合开发者快速搭建测试环境或小规模生产环境。本文将全面讲解Jaeger单机安装部署的完整流程,涵盖环境准备、安装步骤、配置优化以及常见问题解决方案。
第一部分:环境准备
1.1 系统要求
Jaeger支持在多种操作系统上运行,包括Linux、macOS和Windows。推荐使用Linux系统进行部署,以下是最小系统要求:
- CPU:2核以上
- 内存:4GB以上
- 磁盘空间:10GB以上
- 操作系统:Ubuntu 18.04+/CentOS 7+
1.2 依赖组件安装
Jaeger运行需要以下依赖组件:
Docker:Jaeger官方提供Docker镜像,推荐使用Docker方式部署
# Ubuntu安装Dockersudo apt-get updatesudo apt-get install docker.iosudo systemctl start dockersudo systemctl enable docker
Docker Compose(可选):方便管理多容器部署
sudo apt-get install docker-compose
Jaeger客户端库:根据您的开发语言选择对应的客户端
第二部分:Jaeger单机安装
2.1 使用Docker快速启动
最简单的方式是使用官方提供的all-in-one镜像,该镜像包含了Jaeger的所有组件:
docker run -d --name jaeger \-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \-e COLLECTOR_OTLP_ENABLED=true \-p 6831:6831/udp \-p 6832:6832/udp \-p 5778:5778 \-p 16686:16686 \-p 4317:4317 \-p 4318:4318 \-p 14250:14250 \-p 14268:14268 \-p 14269:14269 \-p 9411:9411 \jaegertracing/all-in-one:1.42
2.2 验证安装
检查容器运行状态:
docker ps | grep jaeger
访问Web UI(默认端口16686):
http://localhost:16686
第三部分:组件详解与配置
3.1 Jaeger核心组件
即使在单机模式下,Jaeger也由多个组件构成:
- Agent:负责接收客户端发送的Span数据
- Collector:收集Agent发送的数据,处理后写入存储
- Query:提供查询接口和Web UI
- Storage:数据存储(all-in-one使用内存存储)
3.2 关键配置参数
可以通过环境变量调整Jaeger行为,常用配置包括:
# 存储类型(内存、Cassandra、Elasticsearch等)-e SPAN_STORAGE_TYPE=memory# 采样配置-e SAMPLING_STRATEGIES_FILE=/etc/jaeger/sampling.json# 日志级别-e LOG_LEVEL=debug
第四部分:数据持久化方案
默认all-in-one使用内存存储,重启后数据会丢失。要实现数据持久化:
4.1 使用Elasticsearch作为存储后端
先启动Elasticsearch容器:
docker run -d --name elasticsearch \-p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \docker.elastic.co/elasticsearch/elasticsearch:7.14.0
启动配置了Elasticsearch的Jaeger:
docker run -d --name jaeger \--link elasticsearch \-e SPAN_STORAGE_TYPE=elasticsearch \-e ES_SERVER_URLS=http://elasticsearch:9200 \-p 16686:16686 \jaegertracing/all-in-one:1.42
第五部分:客户端集成
5.1 Go语言客户端示例
package mainimport ("context""fmt""io""time""github.com/opentracing/opentracing-go""github.com/uber/jaeger-client-go""github.com/uber/jaeger-client-go/config")func initTracer() (opentracing.Tracer, io.Closer) {cfg := &config.Configuration{ServiceName: "your-service-name",Sampler: &config.SamplerConfig{Type: jaeger.SamplerTypeConst,Param: 1,},Reporter: &config.ReporterConfig{LogSpans: true,LocalAgentHostPort: "localhost:6831",},}tracer, closer, err := cfg.NewTracer()if err != nil {panic(fmt.Sprintf("ERROR: cannot init Jaeger: %v\n", err))}return tracer, closer}func main() {tracer, closer := initTracer()defer closer.Close()opentracing.SetGlobalTracer(tracer)span := tracer.StartSpan("say-hello")defer span.Finish()span.SetTag("hello-to", "world")time.Sleep(500 * time.Millisecond)ctx := opentracing.ContextWithSpan(context.Background(), span)spanChild := tracer.StartSpan("format", opentracing.ChildOf(span.Context()))defer spanChild.Finish()}
第六部分:常见问题排查
6.1 端口冲突问题
如果端口已被占用,可以修改映射端口:
-p 16686:16686 改为 -p 16687:16686
6.2 存储性能优化
对于生产环境,建议:
- 使用SSD存储
- 调整Elasticsearch的索引配置
- 合理设置采样率
结语
本文详细介绍了Jaeger单机安装部署的全流程。通过Docker方式可以快速搭建开发测试环境,而通过配置外部存储可以实现数据的持久化。Jaeger作为分布式追踪系统,能够有效帮助开发者诊断微服务架构中的性能问题,是云原生时代不可或缺的运维工具。

发表评论
登录后可评论,请前往 登录 或 注册