活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 当观察到心跳时。 |
| service_name | Utf8 | 稳定的来源或服务名称。 |
| environment | Utf8 | 制作、演出或开发。 |
| status | Utf8 | 在心跳时健康或退化。 |
DataFusion SQL
复制查询
sql
SELECT
service_name,
environment,
MAX(timestamp_utc) AS last_seen_at,
COUNT(*) AS heartbeats_in_window
FROM service_heartbeats
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'production'
GROUP BY service_name, environment
HAVING MAX(timestamp_utc) < now() - INTERVAL '10 minutes'
ORDER BY last_seen_at ASC;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
生产来源已超过心跳期限
应首先调查最旧的 last_seen_at 值。
| service_name | environment | last_seen_at | heartbeats_in_window |
|---|---|---|---|
| billing_sync | production | 2026-07-27 15:04:00Z | 132 |
| email_worker | production | 2026-07-27 15:11:00Z | 139 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1MAX(timestamp_utc) 返回每个源的最新观察到的心跳。
- 2HAVING 分组后进行过滤,仅保留最新事件早于允许的静默窗口的服务。
- 3该计数提供了有用的上下文:在整个回溯窗口中没有事件的源可能需要预期源表,而不是此仅事件查询。
需要决定的边缘情况
- 从未发出过心跳的源不会出现。当完整覆盖很重要时,维护预期的源注册表。
- 将阈值设置为高于正常间隔加上摄取和调度抖动。
- 将计划的维护人员或残疾工人分开,以避免吵闹的警报。
推荐仪表板
- 统计:超过截止日期的来源数量
- 表:last_seen_at by service_name
- 折线图:按来源划分的心跳量
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。