活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| timestamp_utc | Timestamp | 請求完成後,標準化為 UTC。 |
| route_template | Utf8 | 穩定的路由形狀,例如 /api/projects/:id。 |
| status_code | Int64 | HTTP 回應狀態程式碼。 |
| latency_ms | Float64 | 請求持續時間(以毫秒為單位)。 |
DataFusion SQL
複製查詢
sql
SELECT
route_template,
COUNT(*) AS requests,
SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END) AS errors,
100.0 * SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS error_rate_pct
FROM api_requests
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY route_template
HAVING COUNT(*) >= 20
ORDER BY error_rate_pct DESC
LIMIT 10;此只讀查詢是針對空型別資料表計劃和執行的 阿帕奇 DataFusion 45.2.0。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。
查詢結果
5xx 路由錯誤率
儘管搜尋的總流量更多,但結帳路線是最明顯的可靠性風險。
/api/checkout
20%
/api/search
4%
/api/profile
0%
| route_template | requests | errors | error_rate_pct |
|---|---|---|---|
| /api/checkout | 25 | 5 | 20 |
| /api/search | 25 | 1 | 4 |
| /api/profile | 20 | 0 | 0 |
綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。
SQL 是如何工作的
- 1CASE 表示式僅對狀態為 5xx 的回應進行計數,同時保留同一組中的總請求計數。
- 2NULLIF 防止被零除。 HAVING 子句排除請求數少於 20 個的路由,其中一個錯誤就會產生不穩定的百分比。
- 3使用路由範本而不是原始 URL,這樣識別符號就不會將一個端點分成數千組。
需要決定的邊緣情況
- 選擇與您的流量相匹配的最低請求閾值。二十個請求只是說明性的,並不具有普遍性。
- 如果您的 API 有意將預期 5xx 回應用於工作流程控制,則將預期的 5xx 回應與基礎設施故障分開。
- 按環境進行細分,因此分段流量不會改變生產率。
推薦儀表板
- 條形圖:error_rate_pct by route_template
- 統計:所選時間段內總共 5xx 條回覆
- 資料表:request_id 和 error_type 的最新失敗請求
讓查詢範例發揮作用
相關埋點和指南
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。