活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 请求完成时间(UTC)。 |
| route_template | Utf8 | 有界路由模板,而不是原始 URL。 |
| status_code | Int64 | HTTP 响应状态。 |
| environment | Utf8 | 部署环境。 |
DataFusion SQL
复制查询
sql
SELECT
route_template,
COUNT(*) AS requests,
SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END) AS errors,
60.0 * COUNT(*) / NULLIF(
date_part('epoch', MAX(timestamp_utc) - MIN(timestamp_utc)),
0
) AS requests_per_minute
FROM api_throughput_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'production'
GROUP BY route_template
ORDER BY requests_per_minute DESC, route_template;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
按路由观察的请求吞吐量
搜索具有最高的观察到的请求率,并且还有 5xx 响应需要调查。
/api/search
0.2 RPM
comparison 1 RPM
/api/checkout
0.13 RPM
comparison 0 RPM
| route_template | requests | errors | requests_per_minute |
|---|---|---|---|
| /api/search | 6 | 1 | 0.2 |
| /api/checkout | 4 | 0 | 0.13 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1对受控路由模板进行分组可避免每个资源标识符或查询字符串有一个系列。
- 2分母使用每条路由的观察到的跨度,这对于稀疏路由来说比除以整个回溯窗口更安全。
- 3错误计数保留在结果中,因此可以将流量激增与相同粒度的可靠性进行比较。
需要决定的边缘情况
- 对于生产图表,汇总到完整的固定时间段中,以便相邻期间可以直接比较。
- 具有一个请求的路由没有观察到的跨度; NULLIF 返回 null 而不是发明比率。
- 如果内部健康检查和合成流量会扭曲客户需求,则将其分开。
推荐仪表板
- 趋势:完整五分钟桶中每分钟的请求数
- 酒吧:requests_per_minute by route_template
- 叠加:错误率和部署标记
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。