APIリクエストのログとトレースが重要な理由
完全な記事
1) iGamingでログとトレースさえする理由
お金と評判。決済の損失/2倍は直接損失です。操作が一度行われたことを証明する必要があります。
規制。報道、紛争、調査-雑誌なしであなたは「盲目」です。
SLOとインシデント。レイテンシーは増加していますか?デポジットの変換が落ちますか?トレイルはボトルネックを表示します。
セキュリティと詐欺。テレメトリーでは、異常なパターン、リプレイ、スクリプト攻撃が表示されます。
結論:観測可能性は「最終的なタッチ」ではなく、お金の設計の一部です。
2)正確にトレースし、ログに何を
2.1チェーン全体の相関
'trace_id'-エッジ→ドメインサービス→バス→消費者からのリクエストごとに1つ。
'span_id'-各ホップに対して、'parent_span_id'を使用します。
ビジネスキー:'tenant_id/brand_id/region'、 'player_id'(エイリアス)、'session_id'、 'round_id'、 'bet_id'、 'settlement_id'、 'idempotency_key'。
2.2ログに何を書くか(構造)
タイムゾーン付きのタイムスタンプISO-8601。
メソッド/パス/ステータス、デュレーション(ms)、ペイロードサイズ(バイト)。
結果とエラー・クラス('business/4xx/5xx')、コード('RG_BLOCK'、 'DUPLICATE'、 'IDEMPOTENCY_MISMATCH')。
ホスト/ゾーン/ビルドバージョン、サービス名、環境('prod/eu-west-1')。
ネットワーク特性:IP/ASN(集計)、ユーザーエージェント(切り捨て/正規化)。
2.3どこで-層によって
Edge/APIゲートウェイ:認証、レート制限、geo/botフィルタ。
ドメイン(ウォレット/ボーナス/RGS):コマンド/イベント、サガのステータス、データベース/キャッシュのレイテンシ。
バス/キュー:遅延、再試行、DLQ、デッドアップ。
Kacca/PSP:承認、3-DS、商人/ルート。
3)フォーマット: 構造化ログのみ
無料のテキストは、検索やアラートには役に立ちません。JSON文字列(1つのエントリ-1つの文字列)を使用します。
例(切り捨て):json
{
「ts':」 2025-10-23T16: 21:05。481Z,""env":"prod'、 "service": "wallet"、 "version": "1。14.3」、 「level「:」INFO」、 「event」:」 bet。決済「、」「 」 「 」 「地域」:「EU」、 「 」 「 」 「、ステータス」:「入金」、「 」、「通貨」:「EUR」
}4)追跡: 標準としてOpenTelemetry
HTTP/gRPC/DB/cache instrumentation+カスタムスパンon sagas ('authorize→commit→settle→credit')。
コンテキスト伝播:webhookのW3C Trace Context ('traceparent'、 'tracestate')-ヘッダー。
手荷物:ブランド/地域/トレースフラグのみ、PIIではありません。
サンプリング:- トラフィック全体のデフォルト1-10%、マネタリーエラー/レイテンシー>SLOの場合は常に100%、インシデントの動的アップサンプリング。
5) WORMの監査および不変性
重要なアクション(制限の変更、キー回転、ジャックポットコンフィギュレーション、手動サポート操作)-WORMストレージ(1回読み込み多数の書き込み)。
要件:不変性、署名/ハッシュ、独立したコンプライアンスアクセス、法律による保持(例えば、5-7年)。
6) PIIおよびログセキュリティ
PAN、 CVV、 ドキュメントID、電子メール/電話をクリアテキストで記録しないでください。マスク/トークン化。
ログでは、プレーヤーの擬似識別子(安定したハッシュ)を使用します。
シークレット/トークンはログに入らない(SDK/エージェントレベルのフィルター)。
データレジデンシー:地域(EU/UK/BR……)で物理的にジャーナルとトレイル、個別のアクセスロール(RBAC/ABAC)。
暗号化のat-rest/in-transit、一時トークンによるアクセス、最小権利の原則。
7)プラットフォームを保持するメトリックとSLO
キーエンドポイントによるレイテンシp95/p99: 'bets。「認可」、「賭け」。settle'、'wallet。クレジット'、'キャッシャー。デポジット'。
クラスとコードによるエラー率。
キュー/消費者の遅れ(タイヤ)、リトリートの%と「嵐」。
(結果からクレジットへ)ラグを解決、PSP/geoによる入金成功率。
Webhook lag p99トピック別。
アラート-「SLO予算」に従って(ウィンドウ→インシデントのエラー/レイテンシ予算を超えました)。
8)調査と紛争のために: 最小摂取量
クロスリファレンス'trace_id 。
サガのステータスのタイムスナップショット。
リクエスト/webhookの署名/ハッシュ(無効の場合)。
設定のスクリーンショット/スナップショット(ボーナス/ジャックポットルールのバージョン)'s'。
9)貯蔵および費用
ホット(7-14日):事件や死後の検索。
ウォーム(30-90日):製品分析と詐欺パターン。
コールド/アーカイブ(≥ 1年):法的/規制のニーズ。
フィルターとサンプリングを適用し、ユニットを格納し、TTLと圧縮をオンにします。'trace_id'、 'tenant_id'、 'event'、 'status_code'のインデックスを使用します。
10)チェックリスト
プラットホーム/オペレータのため
- どこにでも'trace_id'、 'idempotency_key'、タグ'tenant/brand/region'があります。
- 構造化されたJSONログ;HTTP/gRPC/DB/cache/busのOpenTelemetry。
- クレタ行動のWORM監査;規則による保持。
- PII/シークレットマスキング;雑誌やトレイル-地域別。
- SLOダッシュボード:p95/p99、 error-rate、 queue-lag、 settle-lag、 webhook-lag。
- SLO予算のアラート;劣化の下の自動upsampling道。
- DR/xaoc演習:ダブルデリバリー、リージョンフォール、ウォレット遅延。
- ログとトラックへのアクセス-RBAC/ABAC、エクスポートのための「4つの目」。
プロバイダ向け(RGS/live/JP)
- すべての呼び出しとWebhookに'trace_id'と'idempotency_key'を送信/スキャンします。
- ログ-構造化;エラーコード/クラスがコミットされます。
- 署名されたWebhooks;event_idと重複除外を保存します。
- 結果/決済をトレースし、'settle_lag'を測定します。
- PIIマスキング;トークン/キーは記録されません。
- サンプリングを合理的に行います(エラーや金銭的異常については100%)。
11)アンチパターン(赤い旗)
構造体と'trace_id'のないテキストログ。
書き込み操作のログに'idempotency_key'がない。
PII/秘密を記録し、Bearerトークンを書く。
1つのバケット内のすべてのリージョンのログを区別せずに記録します。
クレタ島の活動のためのWORMの欠如;「編集可能」監査。
イベントはoutbox/CDC→「lost」操作をバイパスして投稿されます。
フィルターのない盲目の100%の追跡(貯蔵の台無し、騒音)。
ダッシュボードSLO/アラートはありません。捜査は何時間も続きます。
12)ステップによる実装(現実的)
1.すべての契約(REST/gRPC/webhook)に単一の'trace_id'と'idempotency_key'を入力します。
2.ログをJSONに変換します。必要なフィールド(サービス、バージョン、地域、タイムスタンプ、コード)を追加します。
3.OpenTelemetryとコンテキスト伝播を接続します。お金の方法のための最低の追跡。
4.SLOダッシュボードとアラートの設定;予算を定義します。
5.重要なアクションのWORM監査を有効にします。保持を決定します。
6.PII/シークレットマスキング、ログアクセス制限を導入します。
7.混乱のケースと演習を追加し、死後の練習。
8.ストレージの最適化:サンプリング、TTL、アーカイブ。
13)ボトムライン
ログとトレースは「持っているのが便利」ではなく、プラットフォームとiGamingプロバイダの取り返しのつかない義務です。構造化されたログ、エンドツーエンドのトレイル、WORM監査、PII保護およびSLOオブザビリティにより、インシデントは管理可能なイベントになり、紛争は再現可能なケースになります。そのような基盤では、お金は一度移動し、レポートはいつでも再現され、チームは速くて落ち着いています-トーナメントのピーク時やリリース中でさえ。
