活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| timestamp_utc | Timestamp | 執行完成或失敗時。 |
| job_name | Utf8 | 穩定的邏輯作業名稱。 |
| status | Utf8 | 成功或失敗。 |
| attempt | Int64 | 基於一的執行嘗試。 |
| duration_ms | Float64 | 嘗試的持續時間。 |
DataFusion SQL
複製查詢
sql
SELECT
job_name,
COUNT(*) AS attempts,
SUM(CASE WHEN attempt > 1 THEN 1 ELSE 0 END) AS retries,
SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failures,
100.0 * SUM(CASE WHEN attempt > 1 THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS retry_rate_pct,
approx_percentile_cont(duration_ms, 0.95) AS p95_duration_ms
FROM job_runs
WHERE timestamp_utc >= now() - INTERVAL '7 days'
GROUP BY job_name
ORDER BY retry_rate_pct DESC, failures DESC;此只讀查詢是針對空型別資料表計劃和執行的 阿帕奇 DataFusion 45.2.0。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。
查詢結果
按作業重試率
儘管電子郵件有更多的絕對重試嘗試,但訂閱同步值得關注。
sync_subscription
30%
generate_report
12.5%
send_email
0%
| job_name | attempts | retries | failures | retry_rate_pct | p95_duration_ms |
|---|---|---|---|---|---|
| sync_subscription | 10 | 3 | 2 | 30 | 8,000 |
| generate_report | 8 | 1 | 1 | 12.5 | 12,000 |
| send_email | 10 | 0 | 0 | 0 | 900 |
綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。
SQL 是如何工作的
- 1計算嘗試次數而不是邏輯作業有意暴露了重試造成的額外執行負載。
- 2重試率分母是所有嘗試。如果您更喜歡邏輯作業分母,請包含 job_id 並計算不同的作業 ID。
- 3p95 持續時間有助於區分快速瞬時重試和消耗工作執行緒容量的昂貴執行。
需要決定的邊緣情況
- 計劃的重試可能是預期的行為;在更改重試策略之前按 error_type 進行分段。
- 如果多次嘗試屬於一個邏輯工作單元,請使用穩定的 job_id。
- 死信事件應單獨報告,因為它們代表耗盡恢復。
推薦儀表板
- 條形圖:retry_rate_pct by job_name
- 折線圖:每日故障和 job_name
- 資料表:最新的最終故障以及客戶和錯誤上下文
讓查詢範例發揮作用
相關埋點和指南
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。