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

CnOps 智能运维与可观测社区

愿景

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

内容社区

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

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

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

Copyright © 2026 CnOps 社区. All rights reserved.

首页/开源项目/Jaeger/监控 Jaeger
文档目录
监控 Jaeger性能调优指南工具故障排查

Jaeger

监控 Jaeger

Jaeger 本身是一个分布式的微服务系统。如果在生产环境中运行,你可能需要为不同的组件设置适当的监控,例如确保后端不会因过多的追踪数据而饱和。 请参阅 OpenTelemetry Collector 文档了解配置内部遥测的详细信息。 以下是获取指标的 curl 调用示例: 以下指标值得特别关注: 前两个指标描述了 Jaeger 接收了多少 Span。后两个指标表示有多少 Span...

Jaeger 本身是一个分布式的微服务系统。如果在生产环境中运行,你可能需要为不同的组件设置适当的监控,例如确保后端不会因过多的追踪数据而饱和。

请参阅 OpenTelemetry Collector 文档了解配置内部遥测的详细信息。

指标

以下是获取指标的 curl 调用示例:

curl -s http://jaeger-collector:8888/metrics

以下指标值得特别关注:

otelcol_receiver_accepted_spans
otelcol_receiver_refused_spans

otelcol_exporter_sent_spans
otelcol_exporter_send_failed_spans

前两个指标描述了 Jaeger 接收了多少 Span。后两个指标表示有多少 Span 被发送到了存储。在正常情况下,accepted 和 sent_spans 计数器应该非常接近。

指标上的标签允许区分不同的接收器和导出器。例如,第一个指标带上所有标签可能如下所示(为可读性进行了格式化):

otelcol_receiver_accepted_spans{
    receiver="otlp",
    service_instance_id="f91d66c2-0445-42bf-a062-32aaed09facf",
    service_name="jaeger",
    service_version="2.0.0",
    transport="http"
} 44

日志

默认情况下,日志以纯文本格式输出到 stderr。对于生产部署,建议使用 info 或 warning 的日志级别。

链路追踪

Jaeger 具有追踪自身某些组件的能力,即对查询服务的请求。例如,如果你按照快速开始中的描述启动 all-in-one,并多次刷新 UI 界面,你将在服务下拉菜单中看到 jaeger 已填充。

可以通过设置 OTEL_TRACES_SAMPLER=always_off 环境变量来禁用自追踪。

监控最佳实践

在生产环境中运行 Jaeger 时,全面的监控对于确保最佳性能和可靠性至关重要。本节涵盖关键指标和监控策略。

进程级指标

为所有 Jaeger 组件监控以下基本系统指标:

系统资源

  • CPU 使用率:监控 CPU 利用率以检测性能瓶颈
  • 内存使用:跟踪 RSS 和虚拟内存消耗
  • 文件描述符:监控已打开的文件描述符数量
  • 网络使用:监控数据摄入和存储操作的网络 I/O

磁盘 I/O(适用于具有本地存储的组件)

  • 磁盘使用:监控磁盘空间利用率
  • 磁盘 I/O:跟踪每秒的读/写操作及延迟

Go 运行时指标

Jaeger v2 组件基于 OpenTelemetry Collector 构建,它暴露了标准的 Go 运行时指标:

垃圾回收

  • GC 持续时间:监控垃圾回收暂停时间
  • GC 频率:跟踪垃圾回收发生的频率

Goroutine

  • Goroutine 数量:监控活跃 Goroutine 的数量
  • Goroutine 增长:关注可能表示泄漏的异常增长

内存统计

  • 堆使用:监控 Go 堆内存使用量
  • 内存分配:跟踪分配模式

OpenTelemetry Collector 指标

Jaeger v2 基于 OpenTelemetry Collector 构建。需要监控的关键指标包括:

Span 处理

  • Span 摄入:监控接收的 Span
    • otelcol_receiver_accepted_spans:接收器接受的 Span 总数
    • otelcol_receiver_refused_spans:被拒绝的 Span(表示数据丢失)
  • Span 导出:监控发送到存储的 Span
    • otelcol_exporter_sent_spans:成功导出的 Span
    • otelcol_exporter_send_failed_spans:失败的导出尝试

组件健康

  • 接收器健康:按接收器类型监控数据摄入组件
  • 导出器健康:按存储后端监控存储导出组件

查询性能

监控 Jaeger 查询服务性能:

响应时间

  • 查询延迟:监控 UI 和 API 查询响应时间
  • 查询量:跟踪查询模式和频率

存储后端

  • 根据其文档监控你的特定存储后端(Elasticsearch、Cassandra 等)

Prometheus 告警

Jaeger 仓库包含一组 Prometheus 告警规则示例。这些经过生产验证的告警涵盖:

  • 服务可用性:当 Jaeger 组件宕机时的告警
  • 性能下降:高延迟和高错误率的告警
  • 容量问题:资源耗尽和队列饱和的告警
  • 数据丢失:Span 丢弃和存储故障的告警

有关详细的设置说明,请参阅监控 mixin 文档。

监控工具集成

Prometheus 配置

Jaeger v2 的 Prometheus 抓取配置示例:

scrape_configs:
  - job_name: 'jaeger-v2'
    static_configs:
      - targets: ['jaeger:8888']  # Internal telemetry port
    scrape_interval: 15s
    metrics_path: /metrics

健康检查

为以下项目实施健康检查:

应用健康

  • 验证 OpenTelemetry Collector 管道健康状态
  • 检查存储连接性
  • 验证接收器端点可用性

依赖健康

  • 根据存储系统的文档监控存储后端健康状况
  • 检查组件之间的网络连接

故障排查

需要调查的常见场景:

高资源使用率

  • 检查 Goroutine 数量和内存使用模式
  • 检查 OpenTelemetry Collector 配置

数据丢失(被拒绝/失败的 Span)

  • 检查存储后端健康状况和连接性
  • 验证导出器配置
  • 检查接收器容量设置

查询性能差

  • 监控存储后端性能
  • 检查资源竞争情况
  • 检查查询模式

文章大纲