イベント契約
クエリが期待するフィールド
| フィールド | 種類 | なぜ存在するのか |
|---|---|---|
| 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 |
合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。
例を再現する
パブリックフィクスチャをダウンロードする
JSON バンドルには、型付きイベント コントラクトが含まれています。 reproducible 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。
SQL の仕組み
- 1CASE 式は、同じグループ内の合計リクエスト数を保持しながら、5xx ステータスの応答のみをカウントします。
- 2NULLIF はゼロによる除算を防ぎます。 HAVING 句は、リクエストが 20 件未満のルートを除外します。このルートでは、1 つのエラーによって割合が不安定になります。
- 3識別子によって 1 つのエンドポイントが数千のグループに分割されないように、生の URL ではなくルート テンプレートを使用します。
決定すべきエッジケース
- トラフィックに一致する最小リクエストしきい値を選択します。 20 件のリクエストは例示的なものであり、普遍的なものではありません。
- API がワークフロー制御に意図的に使用する場合、予想される 5xx 応答をインフラストラクチャ障害から分離します。
- 環境ごとにセグメント化するため、トラフィックのステージングによって生産速度が変化することはありません。
推奨されるダッシュボード
- 棒グラフ: error_rate_pct by route_template
- 統計: 選択した期間内の合計 5xx 件の応答
- 表: request_id および error_type で失敗した最新のリクエスト
レシピを活用する
関連する機器とガイド
分析を続ける
実際のイベントで実行する
テーブルを作成し、フィールドを調整して、結果を保存します
無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。