イベント契約
クエリが期待するフィールド
| フィールド | 種類 | なぜ存在するのか |
|---|---|---|
| timestamp_utc | Timestamp | 試行完了時刻 (UTC)。 |
| route_template | Utf8 | 安定したルート テンプレート。 |
| request_id | Utf8 | 最初の試行と再試行で共有される識別子。 |
| attempt_number | Int64 | 1 ベースの試行シーケンス。 |
| status_code | Int64 | 試行に対して HTTP ステータスが返されました。 |
| retry_after_ms | Int64 | 適用される再試行遅延 (ミリ秒単位)。 |
| environment | Utf8 | 導入環境。 |
クエリをコピーする
WITH request_outcomes AS (
SELECT
route_template,
request_id,
COUNT(*) AS attempts,
MAX(CASE WHEN status_code = 429 THEN 1 ELSE 0 END) AS was_rate_limited,
MAX(CASE WHEN status_code BETWEEN 200 AND 299 THEN 1 ELSE 0 END) AS succeeded
FROM api_attempt_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'production'
GROUP BY route_template, request_id
)
SELECT
route_template,
COUNT(*) AS requests,
SUM(was_rate_limited) AS rate_limited_requests,
SUM(CASE
WHEN was_rate_limited = 1 AND succeeded = 1 THEN 1
ELSE 0
END) AS recovered_requests,
100.0 * SUM(CASE
WHEN was_rate_limited = 1 AND succeeded = 1 THEN 1
ELSE 0
END) / NULLIF(SUM(was_rate_limited), 0) AS recovery_rate_pct
FROM request_outcomes
GROUP BY route_template
ORDER BY rate_limited_requests DESC, route_template;この読み取り専用クエリは、空の型付きテーブルに対して計画され、実行されます。 アパッチ DataFusion 45.2.0。決定論的なサンプル出力は合成され、個別にレビューされます。フィールド タイプ、しきい値、ビジネス定義を独自のデータと照合して検証します。 テスト方法を読んでください。
クエリ結果
レート制限されたリクエストの回復
検索では、レート制限された 3 つのリクエストのうち 2 つが回復されます。エクスポートは、観察されたウィンドウ内では回復しません。
| route_template | requests | rate_limited_requests | recovered_requests | recovery_rate_pct |
|---|---|---|---|---|
| /api/search | 4 | 3 | 2 | 66.67 |
| /api/export | 2 | 1 | 0 | 0 |
合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。
例を再現する
パブリックフィクスチャをダウンロードする
JSON バンドルには、型付きイベント コントラクトが含まれています。 reproducible 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。
SQL の仕組み
- 1最初の CTE は論理リクエストごとに 1 つのレコードを作成し、再試行によるリクエスト量の増大を防ぎます。
- 2リクエストは、429 試行と成功した試行の両方が含まれている場合にのみ、回復されたものとしてカウントされます。
- 3レート制限されたリクエスト数をパーセンテージの横に維持すると、少量の結果が表示されます。
決定すべきエッジケース
- 再試行後も存続する冪等性または論理リクエスト識別子を使用してください。
- レポートウィンドウの後に完了したリクエストに永続的に「失敗」というラベルが付けられないように、再試行シーケンスを制限しました。
- クライアントのキャンセルを再試行の枯渇とは別に記録します。
推奨されるダッシュボード
- バー: ルート別 recovery_rate_pct
- トレンド: rate_limited_requests および recovered_requests
- 表: 試行回数と再試行遅延を含む枯渇したリクエスト
レシピを活用する
関連する機器とガイド
分析を続ける
実際のイベントで実行する
テーブルを作成し、フィールドを調整して、結果を保存します
無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。