14.5从Traces到KPI

分类: KPI 定义和量化指标

从 Traces 到 KPI

欢迎回到第 14 章的学习。在上一节,我们学习了业务 KPI 设计。现在我们要学习从 Traces 到 KPI。

本节将学习:延迟分布分析、错误率计算、吞吐量统计、以及 KPI 映射方法。

延迟分布分析

从 Traces 到 KPI 的作用是什么? 从分布式追踪数据中提取关键绩效指标,量化系统性能。

延迟分布分析的作用是什么? 分析请求延迟的分布情况,评估系统响应性能。

如何进行延迟分布分析? 从 Traces 中提取:

  • Span 持续时间
  • 请求延迟分布
  • 百分位数计算(P50、P95、P99)
  • 延迟趋势分析

TraceQL 查询示例:

# 查询特定服务的 Traces
{ resource.service.name = "order-service" }

# 计算 P95 延迟
{ resource.service.name = "order-service" } | 
  quantile_over_time(0.95, duration) by (resource.service.name)

# 延迟分布分析
{ resource.service.name = "order-service" } | 
  histogram_over_time(duration) by (resource.service.name)

错误率计算

错误率计算的作用是什么? 从 Traces 中计算错误率,评估系统可靠性。

如何进行错误率计算? 从 Traces 中提取:

  • 错误 Span 数量
  • 总 Span 数量
  • 错误率 = 错误 Span 数 / 总 Span 数
  • 错误类型分布

TraceQL 查询示例:

# 查询错误 Traces
{ resource.service.name = "order-service" && status = error }

# 计算错误率
count({ resource.service.name = "order-service" && status = error }) 
/ 
count({ resource.service.name = "order-service" })

# 错误类型分布
{ resource.service.name = "order-service" && status = error } | 
  count() by (status.code, status.message)

吞吐量统计

吞吐量统计的作用是什么? 从 Traces 中统计吞吐量,评估系统处理能力。

如何进行吞吐量统计? 从 Traces 中提取:

  • 请求总数
  • 时间窗口
  • QPS = 请求总数 / 时间窗口
  • 吞吐量趋势

TraceQL 查询示例:

# 统计请求总数
count({ resource.service.name = "order-service" })

# 计算 QPS(每秒请求数)
rate(count({ resource.service.name = "order-service" })[1m])

# 吞吐量趋势
count_over_time({ resource.service.name = "order-service" }[5m])

KPI 映射方法

KPI 映射方法的作用是什么? 将 Traces 数据映射到 KPI,建立数据关联。

如何进行 KPI 映射? 建立映射关系:

  • Traces → 延迟 KPI
  • Traces → 错误率 KPI
  • Traces → 吞吐量 KPI
  • Traces → 可用性 KPI

KPI 映射示例:

Traces 数据KPI
Span 持续时间P95 延迟 < 200ms
错误 Span 数错误率 < 0.1%
请求总数QPS > 1000
成功 Span 数可用性 > 99.9%

Grafana Dashboard 配置示例:

{
  "panels": [
    {
      "title": "P95 postponements",
      "targets": [
        {
          "expr": "{ resource.service.name = \"order-service\" } | quantile_over_time(0.95, duration)"
        }
      ]
    },
    {
      "title": "error rate",
      "targets": [
        {
          "expr": "count({ resource.service.name = \"order-service\" && status = error }) / count({ resource.service.name = \"order-service\" })"
        }
      ]
    },
    {
      "title": "QPS",
      "targets": [
        {
          "expr": "rate(count({ resource.service.name = \"order-service\" })[1m])"
        }
      ]
    }
  ]
}

本节小结

在本节中,我们学习了从 Traces 到 KPI:

第一个是延迟分布分析。 从 Traces 中分析请求延迟分布,计算百分位数。

第二个是错误率计算。 从 Traces 中计算错误率,评估系统可靠性。

第三个是吞吐量统计。 从 Traces 中统计吞吐量,评估系统处理能力。

第四个是 KPI 映射方法。 将 Traces 数据映射到 KPI,建立数据关联。

从 Traces 到 KPI 流程: 收集 Traces → 分析数据 → 计算 KPI → 映射指标 → 追踪监控。

这就是从 Traces 到 KPI。通过从 Traces 到 KPI,我们能够从分布式追踪数据中提取关键绩效指标。

在下一节,我们将学习从 Metrics 到 KPI。学习如何从 Metrics 中提取 KPI。