14.6、从Metrics到KPI
分类: KPI 定义和量化指标
从 Metrics 到 KPI
欢迎回到第 14 章的学习。在上一节,我们学习了从 Traces 到 KPI。现在我们要学习从 Metrics 到 KPI。
本节将学习:指标聚合、时间窗口选择、百分位数计算、以及趋势分析。
指标聚合
从 Metrics 到 KPI 的作用是什么? 从监控指标中提取关键绩效指标,量化系统性能。
指标聚合的作用是什么? 将多个指标聚合为单一 KPI,简化监控和决策。
如何进行指标聚合? 使用聚合函数:
- sum:求和
- avg:平均值
- max:最大值
- min:最小值
- count:计数
PromQL 聚合示例:
# 求和:总请求数 sum(http_requests_total) # 平均值:平均响应时间 avg(http_request_duration_seconds) # 最大值:最大响应时间 max(http_request_duration_seconds) # 最小值:最小响应时间 min(http_request_duration_seconds) # 计数:服务数量 count(http_requests_total) by (service) # 按服务聚合 sum(http_requests_total) by (service)
时间窗口选择
时间窗口选择的作用是什么? 选择合适的时间窗口,平衡实时性和稳定性。
如何选择时间窗口? 根据需求选择:
- 短期窗口(1m、5m):实时监控
- 中期窗口(15m、1h):趋势分析
- 长期窗口(1d、1w):历史对比
时间窗口示例:
# 短期窗口:5 分钟平均 avg_over_time(http_request_duration_seconds[5m]) # 中期窗口:1 小时平均 avg_over_time(http_request_duration_seconds[1h]) # 长期窗口:1 天平均 avg_over_time(http_request_duration_seconds[1d]) # 变化率(5 分钟窗口) rate(http_requests_total[5m]) # 变化率(15 分钟窗口,更平滑) rate(http_requests_total[15m])
百分位数计算
百分位数计算的作用是什么? 计算百分位数,更好地反映用户体验。
如何计算百分位数? 使用 PromQL:
- histogram_quantile(0.50, ...):P50
- histogram_quantile(0.95, ...):P95
- histogram_quantile(0.99, ...):P99
百分位数计算示例:
# P50(中位数) histogram_quantile(0.50, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service) ) # P95(95 百分位数) histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service) ) # P99(99 百分位数) histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service) ) # 多个百分位数对比 histogram_quantile(0.50, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)), histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)), histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
趋势分析
趋势分析的作用是什么? 分析指标变化趋势,预测未来表现。
如何进行趋势分析? 使用趋势分析函数:
- rate:变化率
- increase:增长量
- delta:差值
- predict_linear:线性预测
趋势分析示例:
# 变化率(每秒) rate(http_requests_total[5m]) # 增长量(5 分钟内) increase(http_requests_total[5m]) # 差值(当前值 - 5 分钟前的值) delta(http_requests_total[5m]) # 线性预测(预测 1 小时后的值) predict_linear(http_requests_total[5m], 3600) # 趋势方向(上升/下降) rate(http_requests_total[5m]) > 0
本节小结
在本节中,我们学习了从 Metrics 到 KPI:
第一个是指标聚合。 将多个指标聚合为单一 KPI,简化监控和决策。
第二个是时间窗口选择。 选择合适的时间窗口,平衡实时性和稳定性。
第三个是百分位数计算。 计算百分位数,更好地反映用户体验。
第四个是趋势分析。 分析指标变化趋势,预测未来表现。
从 Metrics 到 KPI 流程: 收集 Metrics → 指标聚合 → 时间窗口选择 → 百分位数计算 → 趋势分析 → 映射 KPI。
这就是从 Metrics 到 KPI。通过从 Metrics 到 KPI,我们能够从监控指标中提取关键绩效指标。
在下一节,我们将学习从 Logs 到 KPI。学习如何从 Logs 中提取 KPI。