KPI基础设施和药房
为什么需要它
基础设施的KPI将稳定性的"感觉"转换为可测量的目标,并管理工作的风险和重点。正确的指标将技术SLI与业务成果(转换,时间到钱包,LTV)联系起来,并允许计划开发,负载和创新份额与可靠性。
基本概念: SLI、SLO、SLA和错误预算
SLI(服务级别指标)-可测量的质量指标:成功查询的百分比、p95延迟、每间隔药房。
SLO(服务级别目标)是SLI(例如"成功≥ 99的目标。在30天内达到9%")。
SLA(协议)是带有罚款/贷款的外部承诺。始终是SLO的派生,但不等于SLO。
错误预算='1 − SLO'。这是度量窗口中"不间断"的最大允许比例。用于风险发布和实验决策。
- SLO可用99。30天内95%→预算错误0。05% ≈ 21.6分钟"不间断"在日历月。
四个"黄金"信号和其他信号
1.潜伏期(p50/p90/p95/p99,尾巴比平均水平更重要)。
2.错误(5 xx/timeout/业务错误)。
3.流量/吞吐量(RPS/QPS,MBps)。
4.饱和度(CPU/RAM/IO/FD/连接/GC/配额)。
另外:冷启动,队列/beclog,调度时间,SLO合规性。
针对不同服务类型的SLI模型
HTTP/API
可用性: "(成功的2xx/3xx −逻辑错误)/(所有查询)"
潜伏期:成功查询的"p95";热点路线的目标。
质量:具有"audience/scope"的查询比例正确(没有authZ错误)。
队列/asinchron
消息处理时间:p95端到端≤ N秒。
Backlog: 中位数 交付错误:≤ Z ppm。 操作的潜在性:p95 get/put/commit。 Hit Ratio:目标级别≥;降解→起源负荷增加。 Time-to-Wallet p 95,存款/提款成功率%,PSP故障率。 可用性和"aptime"计算" 服务的可用性="成功查询/所有查询"(最好不是"药房分钟")。 Gateway API: 可用性≥ 99。95%/30d;p95 latency ≤ 120毫秒;错误≤ 0。2%. Checkout/Payments: 存款成功≥ 98.5%/30d;Time-to-Wallet p95 ≤ 90 с;PSP-timeouts ≤ 0.3%. 数据库: p95读≤ 10毫秒;p95 write ≤ 25毫秒;replica lag p95 ≤ 150 мс. 现金: 命中率≥ 85%;eviction storms = 0/30д. 付款: p95处理≤ 5枚地雷;frod falls阳性≤ 0。3%. 如果错误预算在窗口中间之前耗尽了50%+-将引入"冻结"间距/发布,重点放在稳定上。 Alerting: 如何不"晚上打电话"是徒劳的 Alerta仅通过SLO降解和生命症状,而不取决于每个指标。 SLO面板:服务合规性,剩余预算,依赖图。 Headroom:目标资源储备(例如,CPU <70% p95, RAM <75% p95)。 1)按请求可用 其中'error_requests'=5xx+timeouts+业务错误(可配置)。 2)错误预算(分钟) 示例:30天(43 200分钟),SLO 99。95% → 21.6分钟。 3) Burn rate 如果SLO 99。9%(预算0)。1%),错误1%→ burn_rate=10 ×。 4)复合可用性 小跌幅乘以整体A。 计划外窗口(事件)-计入。 KQL/PromQL(想法) p95 latency по route: Burn rate 5m/1h: 团队之间的SLO合同:gateway↔auth↔wallet↔PSP。 Shchomes。RPS/MBps趋势和事件(锦标赛,比赛,股票)的预测。 1.从客户的角度定义关键的用户路径并谈判SLI。 典型的错误 通过忽略应用程序错误来测量"按指针计时"。 时间表高峰:比赛/活动/促销活动-提前提高能力,加热缓存/CDN,包括特殊的限制配置文件。 是否需要从SLO中减去计划工作? 通常不是:SLO反映了用户体验。对于SLA,可以规定例外。 为什么p95而不是平均? 一个单个SLO可以用于整个产品吗? 需要SLO树:按产品分组,按关键路径/组件分组。 强大的基础架构KPI系统是定制SLI,现实的SLO,错误预算作为变更管理杠杆,智能警报和事件纪律以及RCA。将技术指标与业务指标联系起来,自动化收集和可视化-即使是在高峰时段,基础架构也将变得可预测且可控制。DB/缓存
饱和:连接池使用,高速缓存的命中率。
错误:timeouts,deadlocks,eviction storms。CDN/静态
POP可用性:Anycast布局,故障由邻居补偿。付款(业务SLI)
基础架构节点的替代方桉:"处于绿色状态的时间/窗口时间"。
日历窗口:28-31天,滚动窗口:过去30/90天。
工作时间/关键窗口:对于backoffice,可以按计划视为aptime(例如,当地时间08:00-22:00)。
SLO集示例(样本)
错误预算和变更管理
如果预算支出缓慢,则可以加速实验/金丝雀。
预算消耗通过"release_id"链接到特定的发布/事件。
多窗口、多燃烧率:短窗口(5-15分钟)+长窗口(1-6小时)。
示例:"Burn rate 14 × 5分钟6 × 1小时"→呼叫页面。
非P1信号的安静时钟;责任路由(ownership)。Dashbords和可视化实践
Latency面板:p50/p90/p95/p99,路线/tenant/国家/ASN分解。
错误面板:代码/原因,与版本/fichflags相关。
Capacity面板:CPU/RAM/IO/network/FD/连接、趋势和预测。
业务面板:转换,时间到钱包,存款/结算,保护影响(WAF/antibot)。事件、MTTR和验尸程序
反应KPI:
性能、饱和度和降解
热点:分析关键路线;"p99"比平均值更重要。
Degradation modes:仅缓存,仅读取,对不重要的查询进行滴答作响,"利率限制"/配额。公式和示例计算
availability = (total_requests - error_requests) / total_requests
error_budget_minutes = window_minutes (1 - SLO)
burn_rate = observed_error_ratio / (1 - SLO)
A_total ≈ A_gw × A_auth × A_db × A_psp测量和排除策略
计划服务窗口-仅在SLA如此明确的情况下才考虑在内;对于SLO,通常不会减去(或单独标记为"planned_downtime")。
合成vs真实用户:具有两个通道(RUM+合成检查)非常有用。工件示例
promql sum(rate(http_requests_total{status=~"5.. timeout"}[5m]))
/
sum(rate(http_requests_total[5m]))promql histogram_quantile(0. 95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, route))promql
(
sum(rate(errors_total[5m])) / sum(rate(requests_total[5m]))
) / (1 - 0. 999)SQL(支付业务SLI)
sql
SELECT date_trunc('minute', finished_at) AS ts,
100. 0 sum((status='SUCCESS')::int)::float / count() AS payment_success_pct,
percentile_cont(0. 95) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (finished_at - started_at))) AS ttw_p95_sec
FROM payments
WHERE finished_at > now() - interval '30 days'
GROUP BY 1 ORDER BY 1;管理依赖项和级联
Degradation policies:当依赖性下降时,服务进入"简化模式"。
功能横幅:关闭非关键功能,"灰色释放"以减少尾巴。能力规划与预测
通过"黄金路径"进行负载测试,分别针对PSP/付款进行测试。
高峰期股票:目标系数1。3×–2.0 ×预期负载。SLO/KPI实施支票
2.选择SLO目标和窗口(30/90天);计算错误的预算。
3.将指标收集嵌入网关/服务中,规范代码/原因。
4.自定义burn-rate alerta(短+长窗口)、路由和呼叫。
5.可视化SLO合规性,与版本/fichflags相关联。
6.发起"预算与变革"政策和冻结过程。
7.回顾和RCA针对每个过量,回归测试。
8.每季度审查SLO的实际预算使用和业务目标。
SLO标有"pro pok"(99。999%),但无法实现,无法解决任何问题。
Alerts通过低级别指标代替自定义症状。
没有成瘾图→不清楚燃烧的地方。
SLO与发行版没有关联→目前尚不清楚是谁"吃掉"了预算。
忽略尾巴p99 →中位数好,但UX VIP用户差。iGaming/fintech的细节
业务SLI:时间到钱包,存款/提款成功,"付款速度"p95;在dashbords的根部。
PSP/合作伙伴:单独的SLO/dashbords按供应商,自动路由切换。
Antibot/antifrod:不要吃掉错误预算-将"合法块"与"技术错误"分开。
监管:日志存储,SLO/SLA计算的可重复性,事件报告。FAQ
中间掩盖了尾巴;UX定义尾巴(p95/p99)。底线