CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页/开源项目/Jaeger/配置
文档目录
配置前端/UI 配置在 Kubernetes 上部署保护 Jaeger 安装安全Windows 服务部署

Jaeger

配置

> Warning > > 我们目前正在扩展本节内容以提供更多详细信息。可运行的配置文件示例可以在 Jaeger 仓库中找到。未来,所有配置属性的文档将会自动生成。 Jaeger 可以通过 YAML 配置文件进行配置,该文件使用与 OpenTelemetry Collector 相同的格式。配置定义了主要的数据摄取管道,包含一组接收器 (receivers)、处理器...

Warning

我们目前正在扩展本节内容以提供更多详细信息。可运行的配置文件示例可以在 Jaeger 仓库中找到。未来,所有配置属性的文档将会自动生成。

介绍

Jaeger 可以通过 YAML 配置文件进行配置,该文件使用与 OpenTelemetry Collector 相同的格式。配置定义了主要的数据摄取管道,包含一组接收器 (receivers)、处理器 (processors)、连接器 (connectors) 和导出器 (exporters)。Jaeger 实现了其中许多组件,同时也提供了一些扩展 (extensions) 来实现 Jaeger 独有的功能。

jaeger --config config.yaml

配置示例

可运行的配置文件示例可以在 Jaeger GitHub 仓库中找到:

  • config-{storage}.yaml 是使用不同存储后端以 collector 角色运行 Jaeger 的示例。
  • config-query.yaml 是以独立 query 角色(带 UI)运行 Jaeger 的示例。
  • cmd/jaeger/internal/all-in-one.yaml 打包在 Jaeger 二进制文件中,用于 all-in-one 角色。
  • 其他示例展示了 SPM、尾部采样、自适应采样等附加功能。

环境变量

Jaeger v2 只能通过配置文件进行配置,它不像 Jaeger v1 那样识别环境变量。然而,YAML 配置文件格式允许引用环境变量,在需要时提供了一些额外的灵活性。例如,在下面的配置片段中,主机名默认为 localhost,但可以通过 JAEGER_LISTEN_HOST 环境变量覆盖,这在容器中运行 Jaeger 且需要使用 0.0.0.0 时非常有用:

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: "${env:JAEGER_LISTEN_HOST:-localhost}:4317"
      http:
        endpoint: "${env:JAEGER_LISTEN_HOST:-localhost}:4318"

Jaeger v2 能够自动识别的一类环境变量是那些控制 OpenTelemetry Go SDK 行为的变量,例如 OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4318。

配置覆盖

另一种覆盖某些配置值的方式是通过 --set 命令行标志传递:

--set=receivers.otlp.protocols.grpc.endpoint=0.0.0.0:4317

这在运行依赖内置配置的 all-in-one 角色时非常方便。

扩展

Jaeger 存储

jaeger_storage 扩展负责配置 Jaeger 其他部分使用的所有存储后端。考虑到 OpenTelemetry Collector 中的典型模式是为每个特定目标设置不同的导出器,这个设计可能看起来有些奇怪。然而,OpenTelemetry Collector 主要关注写入数据,而 Jaeger 还允许通过 UI 和查询 API 读取数据,因此我们需要一种机制在不同组件之间共享存储配置。jaeger_storage 扩展实现了这一点。

以下是配置该扩展的示例:

jaeger_storage:
  backends:
    some_trace_storage:
      memory:
        max_traces: 100000
  metric_backends:
    some_metrics_storage:
      prometheus:
        endpoint: http://prometheus:9090
        normalize_calls: true
        normalize_duration: true

在这个示例中:

  • backends 是用于链路追踪数据的后端字典
  • metric_backends 是用于指标的后端字典
  • some_storage 和 some_metrics_storage 是赋予特定后端的名称,可以从其他组件中引用
  • memory 是后端类型,在这种情况下是内存存储
  • prometheus 是后端类型,在这种情况下是 Prometheus 兼容的远程服务器

Jaeger 查询

jaeger_query 扩展负责运行 HTTP 和 gRPC 服务器,这些服务器暴露链路追踪查询 API 和 UI 前端。未来配置文档将从模式自动生成。在此之前,请参考 config.go 作为权威来源。

以下是配置该扩展的示例:

jaeger_query:
  storage:
    traces: some_trace_storage
    metrics: some_metrics_storage
  base_path: /
  ui:
    config_file: /etc/jaeger/ui-config.json
    log_access: true
  grpc:
    endpoint: 0.0.0.0:16685
  http:
    endpoint: 0.0.0.0:16686

这里需要注意的是 storage 部分,它通过名称引用了在 jaeger_storage 扩展中配置的存储后端。

时钟偏差调整

Jaeger 后端合并来自通常运行在不同主机上的应用程序的链路追踪数据。这些主机上的硬件时钟经常会出现相对漂移,即时钟偏差效应。时钟偏差可能使链路追踪难以理解,例如,服务端 span 可能看起来比客户端 span 更早开始,而这在正常情况下是不可能的。jaeger_query 扩展实现了一个时钟偏差调整算法(代码),利用 span 之间的因果关系来修正时钟漂移。所有被调整的 span 都会在 UI 中显示一个警告,说明应用于其时间戳的确切时钟偏差增量。

有时这些调整本身也会使链路追踪难以理解。例如,当将服务端 span 重新定位到其父 span 的范围内时,Jaeger 不知道请求和响应延迟之间的确切关系,因此它假设它们相等,并将子 span 放在父 span 的中间位置(参见 issue #961)。

jaeger_query 扩展支持一个配置属性来控制允许多大的时钟偏差调整。

extensions:
  jaeger_query:
    max_clock_skew_adjust: 30s

将此参数设置为零(0s)将完全禁用时钟偏差调整。此设置适用于从给定查询服务检索的所有链路追踪。有一个未解决的 ticket #197 支持直接在 UI 中切换调整的开关。

UI 基础路径

jaeger_query 扩展所有 HTTP 路由的基础路径可以设置为非根值,例如 /jaeger 将使所有 UI URL 以 /jaeger 开头。当在反向代理后面运行 Jaeger 时这非常有用。以下是设置基础路径的示例代码。

extensions:
  jaeger_query:
    base_path: /
    ui:
      config_file: /etc/jaeger/ui-config.json
    grpc:
    http:

UI 自定义

UI 的多个方面可以自定义。请参阅专门的用户界面页面。

远程采样

remote_sampling 扩展负责运行 HTTP/gRPC 服务器,暴露远程采样 API。

remote_sampling:
  # You can either use file or adaptive sampling strategy in remote_sampling
  # file:
  #   path: ./cmd/jaeger/sampling-strategies.json
  adaptive:
    sampling_store: some_store
    initial_sampling_probability: 0.1
  http:
  grpc:

导出器

Jaeger 存储

jaeger_storage_exporter 是一个通用导出器,可用于将数据发送到在 jaeger_storage 扩展中注册的任何存储后端。示例配置:

jaeger_storage_exporter:
  trace_storage: some_trace_storage
  queue:
    num_consumers: 10
    queue_size: 100

处理器

自适应采样

adaptive_sampling 处理器观察 Jaeger 收集的所有链路追踪,并动态计算不同服务和端点的采样概率,以满足特定的吞吐量目标(每秒链路追踪数)。

文章大纲