菜单
开源

从 Span 生成指标

Span 指标允许你自动从追踪数据生成指标。Span 指标聚合了 Span 数据中的请求、错误和持续时间 (RED) 指标。指标以 Prometheus 格式导出。

导出指标有两种可用选项:使用 remote write 发送到兼容 Prometheus 的后端,或在本地提供指标并抓取它们。

Span 指标生成两种指标:计算请求的计数器,以及计算操作持续时间的直方图。

如果你的系统尚未使用指标监控,但已实现了分布式追踪,那么 Span 指标尤其有用。你可以从追踪流水线中直接获得指标。

即使你已有指标,Span 指标也能提供系统的深度监控。生成的指标显示了应用程序级别的监控洞察,取决于追踪在你应用中的传播范围。

要在 Grafana Alloy 中生成 Span 指标,可以使用 otelcol.connector.spanmetrics 组件。以下示例

  • http.method(默认值为 GET)和 http.target Span 属性作为 Prometheus 标签添加到生成的 Span 指标中
  • 设置一组明确的直方图桶间隔。
  • 指定指标的刷新周期为 15 秒。
  • 使用 traces_spanmetrics 命名空间作为所有生成指标的前缀。然后将指标写入 Grafana OTLP 网关。接收到的追踪 Span 会立即写入 OTLP 网关。
alloy
otelcol.receiver.otlp "default" {
  http {}
  grpc {}

  output {
    traces  = [
        otelcol.connector.spanmetrics.default.input,
        otelcol.exporter.otlp.default.input
    ]
  }
}

otelcol.connector.spanmetrics "default" {
  dimension {
    name = "http.method"
    default = "GET"
  }

  dimension {
    name = "http.target"
  }

  aggregation_temporality = "DELTA"

  histogram {
    explicit {
      buckets = ["50ms", "100ms", "250ms", "1s", "5s", "10s"]
    }
  }

  metrics_flush_interval = "15s"

  namespace = "traces_spanmetrics"

  output {
    metrics = [otelcol.exporter.otlp.default.input]
  }
}

otelcol.exporter.otlp "default" {
  client {
    endpoint = env("OTLP_ENDPOINT")
  }
}

Span 指标也用于服务图视图。有关更多信息,请参阅服务图视图

要查看所有可用的配置选项,请参阅组件参考

服务器端指标

同样的 Span 指标也可以由 Tempo 中的 metrics-generator 生成。这更有效率,并推荐用于大型安装。有关更多信息,请参阅 Span 指标 文档。

示例

Span metrics overview