警示
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啟用。 - 警示永遠不會觸發:降低閾值或確認所選指標列是數字。