4. 风险指标设计:KPI与KRI的定义、风险阈值设定、指标聚合与计算逻辑

说到风险仪表盘,最核心的就是指标设计。我见过太多团队,一上来就堆数据,结果仪表盘变成了「数据垃圾场」——啥都有,啥都看不明白。

今天咱们就聊聊,怎么把风险指标设计得既专业又实用。

4.1 KPI 与 KRI:两个概念,一个目标

先搞清楚这两个东西的区别。

KPI(Key Performance Indicator),关键绩效指标。说白了就是「你干得怎么样」。比如系统可用性 99.9%、交易成功率 99.5%。这些都是衡量业务健康度的指标。

KRI(Key Risk Indicator),关键风险指标。这是「你可能会出什么问题」。比如 CPU 使用率超过 80%、错误日志每分钟超过 100 条。这些是预警信号。

我个人的习惯是:KPI 看结果,KRI 看过程。KPI 告诉你已经出问题了,KRI 告诉你快要出问题了。

核心原则: 每个 KPI 背后,至少对应 2-3 个 KRI。这样你才能从「发现异常」到「定位根因」。

举个例子:

指标类型 指标名称 说明
KPI 支付成功率 过去 1 小时支付成功的比例
KRI 支付接口超时率 支付请求超时的比例,超过 5% 触发预警
KRI 数据库连接池使用率 超过 70% 需要扩容,超过 90% 立即告警
KRI 支付网关响应时间 P99 超过 2 秒说明网关可能出问题

你看,一个「支付成功率」的 KPI,背后有三个 KRI 在支撑。这样当支付成功率下降时,你马上就能知道是接口超时了,还是数据库扛不住了,还是网关慢了。

4.2 风险阈值设定:别拍脑袋

阈值怎么设?我见过最离谱的是「我觉得 80% 比较好看」——这哪行啊。

阈值设定有四个层次:

  1. 静态阈值:固定值,比如 CPU 超过 90% 告警。适合稳定、可预期的场景。
  2. 动态阈值:基于历史数据自动计算。比如过去 7 天同时间段的平均值 ± 3 个标准差。适合有周期性波动的指标。
  3. 复合阈值:多个条件组合。比如「错误率 > 5% 且持续 5 分钟」才告警,避免毛刺干扰。
  4. 趋势阈值:看变化率。比如「连续 3 个周期上升超过 20%」就预警,哪怕还没到绝对阈值。
我的经验: 刚开始做的时候,先用静态阈值。跑一个月数据后,再切换到动态阈值。别一上来就搞复杂的,容易翻车。

我曾经在一个项目中,给「登录失败次数」设了静态阈值 100 次/小时。结果某天凌晨被告警吵醒,一看是爬虫在扫接口。后来加了「来源 IP 去重」的复合条件,才消停。

4.3 指标聚合与计算逻辑

指标不是简单地从数据库拉个数就完事了。你得想清楚:

  • 时间窗口:1 分钟?5 分钟?1 小时?窗口越小,反应越快,但噪声也越多。
  • 聚合方式:求和、平均、最大值、P99、计数?不同场景用不同方式。
  • 计算频率:实时计算还是定时批处理?实时成本高,批处理有延迟。

我一般这样设计:

-- 示例:计算过去 5 分钟的错误率
WITH error_stats AS (
  SELECT
    COUNT(*) AS total_requests,
    SUM(CASE WHEN status = 'error' THEN 1 ELSE 0 END) AS error_count
  FROM api_logs
  WHERE timestamp >= NOW() - INTERVAL '5 minutes'
)
SELECT
  total_requests,
  error_count,
  ROUND(error_count::numeric / NULLIF(total_requests, 0) * 100, 2) AS error_rate
FROM error_stats;

这段 SQL 看起来简单,但有几个坑:

  • NULLIF 防止除零错误——这个我吃过亏,仪表盘直接崩了
  • ROUND(..., 2) 控制精度,别显示一堆小数点
  • 时间窗口用 NOW() - INTERVAL '5 minutes',保证每次查询都是最近 5 分钟
注意: 实时计算要考虑性能。如果每秒几万条日志,别在数据库里直接算。用流处理引擎(如 Flink、Kafka Streams)做预聚合,再写入结果表。

4.4 知识体系总览

下面这张图,是我做风险指标设计时的核心框架。你可以照着这个思路来搭建自己的指标体系。

风险指标设计核心框架 业务目标 KPI 关键绩效指标(结果指标) KRI 关键风险指标(过程指标) 阈值设定 静态 / 动态 / 复合 / 趋势 聚合计算 时间窗口 / 聚合方式 / 频率 告警策略 级别 / 通知 / 升级机制 实时风险仪表盘

这张图的核心逻辑是:从业务目标出发,拆解出 KPI,再细化到 KRI。每个 KRI 都要配套阈值、聚合逻辑和告警策略。最后汇总到仪表盘上。

4.5 避坑指南

做指标设计这几年,我踩过不少坑。挑几个典型的说说:

  • 指标太多:我曾经给一个仪表盘塞了 50 多个指标,结果没人看。后来砍到 8 个核心指标,反而成了团队每天必看的工具。
  • 阈值太死:静态阈值设得太低,天天告警,大家就麻木了。设得太高,出了事才发现。建议初期用「温和阈值」+「人工复核」的方式过渡。
  • 忽略数据质量:指标算出来是 99.9%,但数据源本身就有 5% 的缺失。那这个指标就是垃圾。一定要在计算前做数据质量校验。
  • 没有上下文:光显示「错误率 3.2%」没用。要加上「相比昨天上升 15%」「高于 95% 的同类服务」这样的对比信息。
一个小技巧: 每个指标旁边加一个「趋势箭头」。上升用红色向上箭头,下降用绿色向下箭头(如果是正向指标)。这样一眼就能看出好坏,不用看具体数字。

嗯,指标设计这块,说白了就是「少即是多」。把最关键的几个指标盯住了,比搞一堆花里胡哨的图表管用得多。下次咱们聊聊怎么把这些指标用图表展示出来——那又是另一门学问了。


公众号:蓝海资料掘金营,微信deep3321