2. Errors 指标基础:什么是 Errors 指标、错误率、错误计数、错误码分类

在可观测性体系中,Errors 指标是衡量系统健康度的核心信号之一。它直接反映用户请求失败、业务逻辑异常或基础设施故障的频率与分布。要构建有效的告警降噪策略,首先必须准确理解 Errors 指标的定义、计算方式与分类体系。

2.1 什么是 Errors 指标

Errors 指标是对系统失败行为的量化描述。它通常以计数或比率的形式出现,用于回答以下问题:

  • 当前有多少请求失败了?
  • 失败请求占总请求的比例是多少?
  • 失败是否集中在特定接口、服务或错误码上?
关键认知: Errors 指标不是单一数值,而是一组多维度的度量集合。仅看“错误数”往往无法定位根因,必须结合错误率、错误码分布和上下文标签(如服务名、端点、版本)才能形成有效判断。

2.2 错误计数(Error Count)

错误计数是最基础的 Errors 指标,表示在特定时间窗口内发生的失败请求总数。它通常由服务端中间件或客户端 SDK 直接采集,例如 HTTP 500 响应次数、RPC 调用超时次数、数据库查询失败次数等。

指标名称 典型 PromQL 示例 说明
http_requests_total{status=~"5.."} sum(rate(http_requests_total{status=~"5.."}[5m])) 5xx 错误请求的速率
grpc_server_handled_total{grpc_code!="OK"} sum(rate(grpc_server_handled_total{grpc_code!="OK"}[5m])) gRPC 非 OK 状态码计数
db_query_errors_total sum(rate(db_query_errors_total[5m])) 数据库查询失败次数
注意: 错误计数容易受流量波动影响。在流量高峰期,即使错误率不变,错误计数也会自然升高。因此,错误计数不适合直接用于告警阈值,更适合作为趋势分析的原始数据。

2.3 错误率(Error Rate)

错误率是错误计数与总请求数的比值,通常以百分比表示。它消除了流量规模的影响,能更真实地反映系统质量。常见的错误率定义包括:

  • 请求错误率:失败请求数 / 总请求数 × 100%
  • 业务错误率:业务逻辑失败数 / 业务总调用数 × 100%
  • 资源错误率:资源操作失败数 / 资源操作总数 × 100%
实践建议: 在 SLO 定义中,错误率通常使用“良好窗口”方式计算(如 5 分钟滑动窗口内的错误率),而非瞬时值。这能有效过滤毛刺,避免告警风暴。

错误率的计算公式在 PromQL 中通常表示为:

# 5 分钟滑动窗口内的 HTTP 5xx 错误率
sum(rate(http_requests_total{status=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))
* 100

2.4 错误码分类体系

错误码是 Errors 指标的核心维度。合理的错误码分类能帮助 SRE 团队快速区分客户端错误、服务端错误和业务逻辑错误,从而制定差异化的告警策略。

错误码分类体系 错误码分类 客户端错误 (4xx) 服务端错误 (5xx) 业务错误 (自定义) 400 Bad Request 401 Unauthorized 403 Forbidden 500 Internal 502 Bad Gateway 503 Service Unavailable 库存不足 余额不足 分类策略说明 • 客户端错误:由请求方引起,通常不需要服务端修复(如参数错误、鉴权失败) • 服务端错误:由服务端内部故障引起,需要立即响应(如代码异常、依赖超时) • 业务错误:业务规则校验失败,需根据业务影响决定告警级别 • 混合场景:部分 4xx 错误(如 429 Too Many Requests)也可能需要服务端扩容

2.5 错误码分类与告警策略的对应关系

不同的错误码分类对应不同的告警响应策略。下表总结了常见错误码的告警建议:

错误码范围 分类 典型原因 告警建议
400 – 499 客户端错误 参数校验失败、鉴权过期、请求频率过高 低优先级告警,或仅记录日志;429 可触发限流告警
500 – 599 服务端错误 代码异常、数据库超时、依赖服务故障 高优先级告警,需立即响应;结合错误率触发
业务 1001 – 1999 业务逻辑错误 库存不足、重复下单、风控拦截 中优先级告警,按业务影响面决定是否通知
超时 / 熔断 基础设施错误 网络延迟、连接池耗尽、熔断器打开 高优先级告警,通常伴随服务端错误

2.6 错误率与错误计数的联合分析

在实际可观测性实践中,错误率和错误计数需要联合使用才能准确判断故障严重程度。以下是一个典型的联合分析矩阵:

错误率 × 错误计数 联合分析矩阵 低错误率 + 低错误计数 系统健康,无需告警 可进行常规巡检 建议:维持现状 低错误率 + 高错误计数 流量高峰导致错误数上升 但比例仍在可接受范围 建议:观察趋势,暂不告警 高错误率 + 低错误计数 小流量接口或边缘场景故障 可能影响特定用户群体 建议:中优先级告警,排查根因 高错误率 + 高错误计数 大规模故障,影响面广 需要立即响应和止损 建议:P0 级告警,立即介入 错误率 错误计数

2.7 本章小结

  • Errors 指标是衡量系统失败行为的量化工具,包含错误计数和错误率两个核心维度。
  • 错误计数受流量影响大,适合趋势分析;错误率消除流量影响,适合告警阈值设定。
  • 错误码分类(客户端错误、服务端错误、业务错误)是告警降噪的基础,不同分类对应不同的响应策略。
  • 联合分析矩阵帮助 SRE 团队快速判断故障严重程度,避免误告警和漏告警。
下一阶段预告: 在掌握 Errors 指标基础后,第 3 章将深入讲解 错误率聚合策略,包括全局聚合、分维度聚合和滑动窗口聚合,为告警降噪提供更精细的数学基础。