活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 请求完成时间(UTC)。 |
| route_template | Utf8 | 稳定的路线模板。 |
| latency_ms | Float64 | 请求持续时间(以毫秒为单位)。 |
| status_code | Int64 | HTTP 响应状态代码。 |
DataFusion SQL
复制查询
sql
SELECT
route_template,
COUNT(*) AS requests,
approx_percentile_cont(latency_ms, 0.50) AS p50_ms,
approx_percentile_cont(latency_ms, 0.95) AS p95_ms,
approx_percentile_cont(latency_ms, 0.99) AS p99_ms
FROM api_requests
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND status_code < 500
GROUP BY route_template
HAVING COUNT(*) >= 50
ORDER BY p95_ms DESC
LIMIT 10;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
按路线划分的 p95 延迟
导出请求的尾部最慢,典型情况和最坏情况性能之间的差距最大。
/api/reports/export
800 ms
comparison 800 ms
/api/projects/:id/sync
320 ms
comparison 320 ms
/api/search
120 ms
comparison 120 ms
| route_template | requests | p50_ms | p95_ms | p99_ms |
|---|---|---|---|---|
| /api/reports/export | 50 | 800 | 800 | 800 |
| /api/projects/:id/sync | 50 | 320 | 320 | 320 |
| /api/search | 50 | 120 | 120 | 120 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1approx_percentile_cont 使用 DataFusion 的 t-digest 实现,这对于大型事件表非常有效。
- 2过滤掉 5xx 响应使其成为成功请求延迟视图。当失败持续时间很重要时,创建单独的失败请求视图。
- 3p50 和 p95 之间的差异通常比单独的任何一个数字更有用:较大的差距表明间歇性的慢速路径。
需要决定的边缘情况
- 在不保留路由上下文的情况下,不要将端点与根本不同的工作进行比较。
- 流媒体路由和长期运行的导出可能需要单独的服务级别目标。
- 将延迟保持在一致的单位并使用数字字段。
推荐仪表板
- 分组条:p50_ms 和 p95_ms by route_template
- 折线图:最慢路线随时间变化的 p95_ms
- 表:路线 p99 以上的个人请求
让查询示例发挥作用
相关埋点和指南
定义源数据
此分析的事件模式
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。