活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| timestamp_utc | Timestamp | 生命週期事件時間(UTC)。 |
| incident_id | Utf8 | 穩定的事件識別符號。 |
| service | Utf8 | 主要受影響的服務。 |
| event_name | Utf8 | impact_started,已檢測到或已解決。 |
| severity | Utf8 | 審查了事件的嚴重性。 |
| environment | Utf8 | 部署環境。 |
DataFusion SQL
複製查詢
sql
WITH incident_times AS (
SELECT
incident_id,
service,
MIN(CASE WHEN event_name = 'impact_started' THEN timestamp_utc END)
AS impact_started_at,
MIN(CASE WHEN event_name = 'detected' THEN timestamp_utc END)
AS detected_at,
MAX(CASE WHEN event_name = 'resolved' THEN timestamp_utc END)
AS resolved_at
FROM incident_lifecycle_events
WHERE timestamp_utc >= now() - INTERVAL '90 days'
AND environment = 'production'
GROUP BY incident_id, service
)
SELECT
service,
COUNT(*) AS incidents,
AVG(date_part('epoch', detected_at - impact_started_at) / 60.0)
AS average_detection_minutes,
AVG(date_part('epoch', resolved_at - detected_at) / 60.0)
AS average_recovery_minutes
FROM incident_times
WHERE impact_started_at IS NOT NULL
AND detected_at IS NOT NULL
AND resolved_at IS NOT NULL
GROUP BY service
ORDER BY average_recovery_minutes DESC, service;此只讀查詢是針對空型別資料表計劃和執行的 阿帕奇 DataFusion 45.2.0。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。
查詢結果
事件檢測和恢復時間
Billing-worker 的觀察到的檢測和恢復間隔較長。
billing-worker
60 min
comparison 15 min
checkout-api
32.5 min
comparison 7.5 min
| service | incidents | average_detection_minutes | average_recovery_minutes |
|---|---|---|---|
| billing-worker | 1 | 15 | 60 |
| checkout-api | 2 | 7.5 | 32.5 |
綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。
SQL 是如何工作的
- 1在計算持續時間之前,生命週期事件將轉為每個事件一行。
- 2檢測措施影響檢測開始;恢復措施檢測到解決。
- 3不完整的事件不包括在完成持續時間平均值中,並且應單獨報告。
需要決定的邊緣情況
- 定義恢復是在緩解、完全恢復還是事件結束時結束,並一致地使用一項規則。
- 重新開啟的事件可能需要多個影響間隔,而不是一個最長解決時間。
- 平均值是說明性的;當事件量足夠時報告中位數和百分位數。
推薦儀表板
- 條形圖:按服務劃分的平均檢測和恢復分鐘數
- 趨勢:按月列出的已完成事件持續時間
- 資料表:缺少已解決事件的開放事件
讓查詢範例發揮作用
相關埋點和指南
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。