活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 依赖调用完成时间。 |
| dependency_name | Utf8 | 稳定的逻辑依赖名称。 |
| operation | Utf8 | 规范化操作或路线。 |
| status | Utf8 | 成功、失败或超时。 |
| latency_ms | Float64 | 依赖持续时间(以毫秒为单位)。 |
DataFusion SQL
复制查询
sql
SELECT
dependency_name,
operation,
COUNT(*) AS calls,
approx_percentile_cont(latency_ms, 0.50) AS p50_ms,
approx_percentile_cont(latency_ms, 0.95) AS p95_ms,
100.0 * SUM(CASE WHEN status <> 'success' THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS failure_rate_pct
FROM dependency_calls
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY dependency_name, operation
HAVING COUNT(*) >= 50
ORDER BY p95_ms DESC
LIMIT 20;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
依赖 p95 延迟
尽管中位数可以接受,但发票历史记录仍存在严重的长尾现象。
billing_database
1,820 ms
comparison 84 ms
search_provider
760 ms
comparison 132 ms
redis
12 ms
comparison 3 ms
| dependency_name | operation | calls | p50_ms | p95_ms | failure_rate_pct |
|---|---|---|---|---|---|
| billing_database | invoice_history | 1,840 | 84 | 1,820 | 0.49 |
| search_provider | document_search | 6,220 | 132 | 760 | 1.21 |
| redis | session_lookup | 44,100 | 3 | 12 | 0.02 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1按逻辑依赖性和操作进行分组可以使结果具有可操作性。
- 2p50 和 p95 之间的差距将持续缓慢的服务与间歇性的尾部行为区分开来。
- 3失败率会阻止快速失败的依赖关系显得健康。
需要决定的边缘情况
- 避免在操作名称中使用原始 SQL 文本、完整 URL 或客户标识符。
- 并行依赖调用不会线性增加请求持续时间。
- 如果跟踪已包含此计时,则仅记录连接结果所需的业务上下文。
推荐仪表板
- 分组条:按依赖性划分的 p50_ms 和 p95_ms
- 趋势:p95 延迟和故障率
- 表:具有路由、发布和跟踪 ID 的慢速依赖项调用
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。