告警
Telemetry 告警可让您监控查询输出,并在指标超过阈值时通过电子邮件收到通知。
使用 告警 API 以编程方式列出、创建、更新或删除这些告警定义。
为什么告警从一条时间序列线开始
Telemetry 有意使创建告警可用于狭窄的结果形状:x 轴上带有时间的折线图,y 轴上有一个数字指标,并且没有 分组依据或分割依据 维度。这是告警模型的一部分,而不仅仅是图表限制。
单个时间序列线为告警提供了人们可以解释和查看的定义:
- 每个点都针对连续的时间段提出相同的问题。
- 每个值都具有相同的指标、单位、过滤器和总体。
- “最后 N 个数据点”映射到最近存储桶的有序集合。
- 阈值产生一种状态:信号要么在预期范围内,要么不在预期范围内。
多系列图表对于调查很有用,但它使重要的告警行为未定义。告警应该在任何线路超过阈值时触发还是仅在每条线路都超过阈值时触发?每个路线、客户、区域或版本是否应该有单独的状态和通知?当一系列消失、出现新值或一个阈值不适合每个组时会发生什么? Telemetry不会默默地为你选择那些语义。
仪表板可以保留多行比较和广泛的上下文。告警应该是一个小的、确定性的断言,有一个所有者和一个响应。该行后面的查询仍然可以包含连接、过滤器、比率、最小量保护或其他复杂逻辑;它的最终结果应该将该逻辑简化为一个有序信号。
将分组图表变成告警
如果有用的仪表板图表有几行:
- 将多系列版本保留在仪表板上以进行比较和诊断。
- 选择具有所有者和响应的特定条件。
- 过滤到一个总体或在 SQL 中故意聚合这些组。
- 返回一个明确的时间段和每个时间段的一个数值。
- 选择 折线图表并删除分组依据或分割依据。
- 当不同的组需要不同的阈值、所有者或响应程序时,创建单独的告警。
如果创建告警不可见,请首先检查结果形状。在探索中,使用不带 分割依据的折线图。对于 SQL 结果,使用折线图,选择 x 轴的时间列和 y 轴的数值,并将分组依据设置为无。
告警如何工作
每个告警评估都遵循相同的流程:
- 运行保存的查询(来自“探索”或 SQL 查询)。
- 按时间戳对行进行排序(最新的在前)。
- 如需跳过最新行,请启用
Ignore the last data point。 - 取最后一个
N数据点。 - 计算聚合(
avg、sum、p95等)。 - 将该值与您的阈值进行比较。
- 当状态发生变化(触发或解决)时发送通知。
从“探索”创建告警
- 打开
/team/{team}/table/{table}?tab=explore。 - 选择一个折线图表、一个指标、一个时间范围和任何过滤器。
- 将 Split by 留空,这样结果就是一行。
- 单击运行。
- 在图表上方的结果工具栏中,单击“创建告警”。
- 配置条件、间隔和收件人。
- 单击“创建告警”进行保存。
运行“探索”查询后,告警按钮将显示在结果工具栏右侧的添加到仪表板旁边:
流程示意图:点击“运行”、审核结果,然后在结果工具栏中选择“创建告警”。
创建后,您将登陆/team/{team}/alert/{alertSlug},您可以在其中检查状态和事件历史记录。
根据 SQL 查询结果创建告警
- 打开一个保存的查询,该查询返回一个时间列和一个数字信号。
- 运行查询并切换到 图表 选项卡。
- 选择 折线图表,将时间列设置为 x 轴,将数字信号设置为 y 轴,并将分组依据保留为无。
- 从“结果”或“图表”选项卡中单击“创建告警”。
- 选择聚合和阈值逻辑。
- 保存并验证告警详细信息页面。
告警条件字段
| 领域 | 含义 |
|---|---|
| 聚合 | 值如何减少(avg、max、p95 等) |
| 最后 N 个数据点 | 评估窗口大小 |
| 忽略最后一个数据点 | 跳过最新行以避免不完整的存储桶 |
| 比较 | >, >=, <, <= |
| 阈值 | 比较的数字目标 |
| 检查间隔 | 评估器运行的频率 |
| 收件人 | 用于通知的电子邮件地址 |
交互式内嵌示例
示例 1:API 延迟回归 (p95)
打开此探索 URL 模板并替换占位符:
/team/{team}/table/{table}?tab=explore&graphType=line&agg=p95&metric=latency_ms&time=7d
然后使用以下命令创建告警:
- 聚合:
p95 - 最后N点:
5 - 比较:
Greater than - 阈值:
850 - 间隔:
Every minute
示例 2:错误浪涌检测器
在 SQL 编辑器中运行此查询:
SELECT
date_trunc('minute', timestamp_utc) AS time_bucket,
COUNT(*) AS errors
FROM
http_logs
WHERE
status_code >= 500
AND timestamp_utc >= now() - INTERVAL '2 hours'
GROUP BY
time_bucket
ORDER BY
time_bucket DESC;
创建告警:
- 指标:
errors - 聚合:
avg - 最后N点:
3 - 比较:
Greater than - 阈值:
20
示例 3:丢失交通检测器
当事件量意外下降时使用此方法:
- 构建一个图表或查询来返回随时间变化的事件计数。
- 使用创建告警
sum在过去10点。 - 将比较设置为
Less than和阈值50.
如果触发,请检查摄取服务、队列和 cron 工作线程。
故障排除
- 无通知:验证收件人电子邮件是否有效并启用告警。
- 误报:增加
Last N data points或保持Ignore last data point启用。 - 告警永远不会触发:降低阈值或确认所选指标列是数字。