logo

Jaeger单机安装部署全指南:从环境准备到实战配置

作者:十万个为什么2025.08.20 21:22浏览量:2

简介:本文详细介绍了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运行需要以下依赖组件:

  1. Docker:Jaeger官方提供Docker镜像,推荐使用Docker方式部署

    1. # Ubuntu安装Docker
    2. sudo apt-get update
    3. sudo apt-get install docker.io
    4. sudo systemctl start docker
    5. sudo systemctl enable docker
  2. Docker Compose(可选):方便管理多容器部署

    1. sudo apt-get install docker-compose
  3. Jaeger客户端库:根据您的开发语言选择对应的客户端

第二部分:Jaeger单机安装

2.1 使用Docker快速启动

最简单的方式是使用官方提供的all-in-one镜像,该镜像包含了Jaeger的所有组件:

  1. docker run -d --name jaeger \
  2. -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
  3. -e COLLECTOR_OTLP_ENABLED=true \
  4. -p 6831:6831/udp \
  5. -p 6832:6832/udp \
  6. -p 5778:5778 \
  7. -p 16686:16686 \
  8. -p 4317:4317 \
  9. -p 4318:4318 \
  10. -p 14250:14250 \
  11. -p 14268:14268 \
  12. -p 14269:14269 \
  13. -p 9411:9411 \
  14. jaegertracing/all-in-one:1.42

2.2 验证安装

  1. 检查容器运行状态:

    1. docker ps | grep jaeger
  2. 访问Web UI(默认端口16686):

    1. http://localhost:16686

第三部分:组件详解与配置

3.1 Jaeger核心组件

即使在单机模式下,Jaeger也由多个组件构成:

  1. Agent:负责接收客户端发送的Span数据
  2. Collector:收集Agent发送的数据,处理后写入存储
  3. Query:提供查询接口和Web UI
  4. Storage:数据存储(all-in-one使用内存存储)

3.2 关键配置参数

可以通过环境变量调整Jaeger行为,常用配置包括:

  1. # 存储类型(内存、Cassandra、Elasticsearch等)
  2. -e SPAN_STORAGE_TYPE=memory
  3. # 采样配置
  4. -e SAMPLING_STRATEGIES_FILE=/etc/jaeger/sampling.json
  5. # 日志级别
  6. -e LOG_LEVEL=debug

第四部分:数据持久化方案

默认all-in-one使用内存存储,重启后数据会丢失。要实现数据持久化:

4.1 使用Elasticsearch作为存储后端

  1. 先启动Elasticsearch容器:

    1. docker run -d --name elasticsearch \
    2. -p 9200:9200 -p 9300:9300 \
    3. -e "discovery.type=single-node" \
    4. docker.elastic.co/elasticsearch/elasticsearch:7.14.0
  2. 启动配置了Elasticsearch的Jaeger:

    1. docker run -d --name jaeger \
    2. --link elasticsearch \
    3. -e SPAN_STORAGE_TYPE=elasticsearch \
    4. -e ES_SERVER_URLS=http://elasticsearch:9200 \
    5. -p 16686:16686 \
    6. jaegertracing/all-in-one:1.42

第五部分:客户端集成

5.1 Go语言客户端示例

  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "io"
  6. "time"
  7. "github.com/opentracing/opentracing-go"
  8. "github.com/uber/jaeger-client-go"
  9. "github.com/uber/jaeger-client-go/config"
  10. )
  11. func initTracer() (opentracing.Tracer, io.Closer) {
  12. cfg := &config.Configuration{
  13. ServiceName: "your-service-name",
  14. Sampler: &config.SamplerConfig{
  15. Type: jaeger.SamplerTypeConst,
  16. Param: 1,
  17. },
  18. Reporter: &config.ReporterConfig{
  19. LogSpans: true,
  20. LocalAgentHostPort: "localhost:6831",
  21. },
  22. }
  23. tracer, closer, err := cfg.NewTracer()
  24. if err != nil {
  25. panic(fmt.Sprintf("ERROR: cannot init Jaeger: %v\n", err))
  26. }
  27. return tracer, closer
  28. }
  29. func main() {
  30. tracer, closer := initTracer()
  31. defer closer.Close()
  32. opentracing.SetGlobalTracer(tracer)
  33. span := tracer.StartSpan("say-hello")
  34. defer span.Finish()
  35. span.SetTag("hello-to", "world")
  36. time.Sleep(500 * time.Millisecond)
  37. ctx := opentracing.ContextWithSpan(context.Background(), span)
  38. spanChild := tracer.StartSpan("format", opentracing.ChildOf(span.Context()))
  39. defer spanChild.Finish()
  40. }

第六部分:常见问题排查

6.1 端口冲突问题

如果端口已被占用,可以修改映射端口:

  1. -p 16686:16686 改为 -p 16687:16686

6.2 存储性能优化

对于生产环境,建议:

  1. 使用SSD存储
  2. 调整Elasticsearch的索引配置
  3. 合理设置采样率

结语

本文详细介绍了Jaeger单机安装部署的全流程。通过Docker方式可以快速搭建开发测试环境,而通过配置外部存储可以实现数据的持久化。Jaeger作为分布式追踪系统,能够有效帮助开发者诊断微服务架构中的性能问题,是云原生时代不可或缺的运维工具。

相关文章推荐

发表评论