跳转到内容
Telemetry
结构化事件 SQL查询示例

使用滚动基线检测错误率峰值

将每小时 API 错误率与滚动七桶平均值进行比较,而不是依赖一个永久阈值。

高级api_requests已审核 2026-07-27测试用 阿帕奇 DataFusion 45.2.0

审阅者 Telemetry产品团队 . SQL 兼容性、事件契约、合成输出和操作注意事项. 审查标准和所有权

问题已回答

哪些每小时错误率远高于其最近的基线?

固定阈值会错过不同正常级别的服务。滚动基线使相对变化可见,同时保留原始速率和数量。

活动合约

查询期望的字段

字段类型为什么存在
timestamp_utcTimestamp请求完成时间。
status_codeInt64HTTP 响应状态代码。
DataFusion SQL

复制查询

sql
WITH hourly AS (
  SELECT
    date_trunc('hour', timestamp_utc) AS hour,
    COUNT(*) AS requests,
    100.0 * SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END)
      / NULLIF(COUNT(*), 0) AS error_rate_pct
  FROM api_requests
  WHERE timestamp_utc >= now() - INTERVAL '72 hours'
  GROUP BY date_trunc('hour', timestamp_utc)
),
baseline AS (
  SELECT
    hour,
    requests,
    error_rate_pct,
    AVG(error_rate_pct) OVER (
      ORDER BY hour ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING
    ) AS previous_seven_avg_pct
  FROM hourly
)
SELECT
  hour,
  requests,
  error_rate_pct,
  previous_seven_avg_pct,
  error_rate_pct - previous_seven_avg_pct AS increase_pct_points
FROM baseline
WHERE previous_seven_avg_pct IS NOT NULL
ORDER BY hour;

此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。

查询结果

每小时错误率增加超过基线

13:00 时段是与近期滚动平均值唯一明显的正偏差。

hourrequestserror_rate_pctprevious_seven_avg_pctincrease_pct_points
12:0018,4200.310.280.03
13:0019,1101.420.31.12
14:0018,7800.480.460.02

综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。

Hourly error-rate increase above baseline:来自 Detect Error-Rate Spikes With a Rolling Baseline 示例结果的合成 increase_pct_points 值的静态图表
确定性示例输出的可索引 SVG。下载它以获取带有归属的文章、操作手册或设计评论。

重现示例

下载公共装置

JSON 包包含类型化事件契约, illustrative 输入行、确切的 SQL、预期输出、审阅注释和引擎版本。 CSV 包含显示的结果。

SQL 是如何工作的

  1. 1每小时 CTE 计算与其分母的比率。
  2. 2该窗口在前一个窗口结束,因此当前尖峰无法提高其自己的基线。
  3. 3最终的差异是百分点,而不是百分比变化。

需要决定的边缘情况

  • 七小时基线并不模拟每日季节性。
  • 缺失的时间段依然缺失;不要默默地将丢失的流量视为零错误。
  • 要求最小请求量并将相对变化与绝对影响阈值相结合。

推荐仪表板

  • 趋势:观察到的错误率和滚动错误率
  • 条形图:增加至基线以上
  • 表:异常桶中的路由

警报指导

仅当增量和绝对错误率均超过有意义量的阈值时才发出警报。

读取警报设置

让查询示例发挥作用

相关埋点和指南

继续分析

在真实事件中运行它

创建表,调整字段并保存结果

免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。

获取 API 密钥