リクエスト ロギングの概要

Media CDN は、各 HTTP リクエストを Cloud Logging に記録します。これらのリクエストには、EdgeCacheService リソースに対するクライアント リクエストと、キャッシュ フィル用に構成された送信元に対する EdgeCacheOrigin リソースからのリクエストが含まれます。通常、ログはほぼリアルタイムで配信されます。これには、Logging でのクエリが可能であること、Cloud Storage と Pub/Sub にエクスポート可能であることが含まれます。

ログエントリには次のタイプの情報が含まれています。

  • 重大度、プロジェクト ID、プロジェクト番号、タイムスタンプなど、ほとんどの Google Cloud ログに表示される一般情報。
  • HttpRequest ログフィールド。
  • structPayload 内のリクエストに関する追加のメタデータで、以下が含まれます。

    • クライアント ASN
    • クライアントのロケーション データ
    • レスポンスの処理に使用されるキャッシュの ID(都市)
    • HTTP レベルのレスポンスの最初のバイトまでの時間(TTFB)と最後のバイトまでの時間(TTLB)(ミリ秒単位)
    • TLS SNI hostname
    • 使用された TLS バージョン
    • 共通メディア クライアント データ(CMCD)情報

キャッシュ固有のフィールド

Media CDN ログの jsonPayload オブジェクトには、Media CDN がオブジェクトを配信する方法、オブジェクトがキャッシュに保存されたかどうか、発生したエラー状態など、Media CDN に固有のメタデータが含まれています。

これらのフィールドと値の例を次の表に示します。

フィールド 値の例 詳細
backendInitialLatency 0.126644940s

バックエンドがリクエストに最初に応答するのにかかる時間。CDN が送信元へのリクエストのプロキシを完了してから、CDN が送信元からのレスポンス バイトの受信を開始するまでが測定されます。

このフィールドは、EdgeCacheOrigin リソースからのキャッシュ入力のログにのみ表示されます。

backendLatency 0.126666342s

バックエンドがリクエストに完全に応答するのにかかる時間。CDN が送信元へのリクエストのプロキシを終了してから、CDN がバックエンドから完全なレスポンスを受信するまでが測定されます。

このフィールドは、EdgeCacheOrigin リソースからのキャッシュ入力のログにのみ表示されます。

cacheId maa-123456 キャッシュに最も近い都市の IATA(空港)コードと、キャッシュ インスタンスの不透明な ID。完全または部分的なキャッシュミスによりリクエストの処理に複数のキャッシュ層が必要な場合、次のようなキャッシュのロケーションのチェーンが提供されます。例: del-234567, bom-345678, sin-456789、右端のキャッシュがユーザーに最も近いものです。
cacheKeyFingerprint f63925711b0dd8a9ff861cd303774e6e

キャッシュキーの不透明なフィンガープリント。同じキャッシュキーにマッピングされるリクエスト(クエリ パラメータが含まれていないリクエストや、ホストが含まれていないリクエストなど)は、同じフィンガープリントを持つ必要があります。

リクエストの合計数が一意のフィンガープリントの総数に近い場合、キャッシュキーによる特定が強すぎる可能性があります。

cacheMode USE_ORIGIN_HEADERS cdnPolicy.cacheMode がこのリクエストに一致するルートで構成されている。
cacheStatus

Cache hit: hit

Full cache miss: fetch, miss, miss

ユーザーとオリジン シールドの間の各キャッシュ ノードのキャッシュ ステータス。右端の値は、ユーザーに最も近いキャッシュを表します。このフィールドの解釈方法について詳しくは、キャッシュ ステータスの値をご覧ください。
clientAsn 接続クライアントの IP アドレスに基づく ASN(自律システム番号)。
clientCity Mountain View

リクエスト送信元の市区町村の名前です。たとえば、カリフォルニアの Mountain View がそれです。

これはリクエスト ヘッダーとレスポンス ヘッダーの両方に追加することもでき、client_city ヘッダー変数と同じです。

clientRegionCode US

クライアントの IP アドレスに関連付けられる国(またはリージョン)。 これは、US や FR などの Unicode CLDR リージョン コードです(ほとんどの国では、このコードが ISO-3166-2 コードに直接対応しています)。

これはリクエスト ヘッダーとレスポンス ヘッダーの両方に追加することもでき、client_region ヘッダー変数と同じです。

cmcd クライアント リクエスト内の CMCD 鍵は、クライアント側のサービス品質の通知に役立ちます。Media CDN は、HTTP リクエスト ヘッダーまたはクエリ パラメータを介して送信されたデータをサポートし、dl(期限)、nor(次のオブジェクト リクエスト)、nrr(次の範囲リクエスト)、ot(オブジェクト タイプ)、rtp(リクエストされた最大スループット)、sf(ストリーミング形式)、su(起動)、tb(トップ ビットレート)、v(CMCD バージョン)のいずれかの記録をつけます。
compressionAlgorithmApplied br このログエントリで参照されているレスポンスの圧縮に使用されたアルゴリズム。有効な値は brgzip です。
enforcedSecurityPolicy クライアントのリクエストに適用される Google Cloud Armor エッジ セキュリティ ポリシー。これには、ポリシー名、優先度、実施されたアクションに関する追加情報が含まれます。また、該当する場合は、Google Threat Intelligence の評価に関する情報も含まれます。
flexShieldingRegion US_EAST4 フレキシブル シールディングに使用されるリージョン(ある場合)。

このフィールドは、EdgeCacheOrigin リソースからのキャッシュ入力のログにのみ表示されます。

flexShieldingStatus SHIELDED キャッシュ入力リクエストの柔軟なシールドのステータス。値は次のいずれかになります。
  • DEFAULT_GLOBAL: フレキシブル シールドが構成されていないことを示します
  • SHIELDED: flexShieldingRegion を使用して構成されたリージョンがリクエストの処理に使用されたことを示します
  • SPILLED: flexShieldingRegion を使用して構成されたリージョンをリクエストに使用できなかったことを示します。デフォルトのオリジンが使用されました

このフィールドは、EdgeCacheOrigin リソースからのキャッシュ入力のログにのみ表示されます。

httpTtfb 0.157228207s プロキシがリクエスト バイトの受信を開始してから、レスポンスの最初のバイトが送信される(受信されない)までの時間。
latency 0.157415635s プロキシがリクエスト バイトの受信を開始してから、クライアントへのレスポンスの書き込みを完了するまでの期間。
location レスポンスの Location ヘッダー。
metroIataCode MAA プロキシに最も近い都市の IATA(空港)コード。
origin レスポンスがプロキシされた EdgeCacheOrigin リソース。
originalRequestId 19d92668-3948-49d8-9244-25f8252043e4 このレスポンスを最初に生成したリクエストに割り当てられた一意の識別子。キャッシュに保存されたレスポンスの request_id とは異なる場合にのみ入力されます。
originIp レスポンスがプロキシされた EdgeCacheOrigin リソースへの接続に使用される IP アドレス。
previewSecurityPolicy クライアントのリクエストに適用される Google Cloud Armor エッジ セキュリティ ポリシープレビュー ルールが考慮されます。これには、ポリシー名、優先度、実施されたアクションに関する追加情報が含まれます。
proxyRegionCode US プロキシが配置されている国(または地域)。これは、US や FR などの Unicode CLDR リージョン コードです(ほとんどの国では、このコードが ISO-3166-2 コードに直接対応しています)。
proxyStatus レスポンス パスの中間 HTTP プロキシのリスト。値は RFC 9209 で定義されています。これは、proxy_status 動的ヘッダー変数に対応します。
rangeHeader リクエストの Range ヘッダー。
requestId 4bde6381-cd17-47e1-8c2a-1aaa424a1156 プロキシによってリクエストに割り当てられた一意の識別子。
tlsCipherSuite 009C TLS handshake 中にネゴシエートされた暗号スイート。値は、IANA TLS Cipher Suite Registry で定義された 4 桁の 16 進数です。たとえば、TLS_RSA_WITH_AES_128_GCM_SHA256 の場合には「009C」となります。暗号化されていないクライアント接続の場合、この値は空です。
tlsSniHostname RFC 6066 で定義されたサーバー名表示(TLS または QUIC handshake 中にクライアントによって提供された場合)。ホスト名は小文字に変換され、末尾のドットはすべて削除されます。
tlsVersion TLS 1.3 SSL handshake 中にクライアントと CDN の間でネゴシエートされた TLS バージョン。有効な値は、TLS 1、TLS 1.1、TLS 1.2、TLS 1.3 などです。

ログエントリの例

キャッシュから提供されたレスポンスのログエントリの例を次に示します。

{
  "insertId": "617fa16e-0000-2ac9-9993-d4f547fe67d4@a1",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
    "tlsVersion": "TLS 1.3",
    "tlsCipherSuite": "009C",
    "cacheId": "maa-132eed13faa13",
    "clientAsn": "9299",
    "origin": "example_origin",
    "clientRegionCode": "IN",
    "metroIataCode": "bom",
    "clientCity": "Mumbai",
    "latency": "0.005105200s",
    "proxyStatus": "Google-Edge-Cache",
    "httpTtfb": "0.005056080s",
    "cacheMode": "FORCE_CACHE_ALL",
    "cacheKeyFingerprint": "c360ac18849b6336",
    "cacheStatus": "hit,stale",
    "compressionAlgorithmApplied": "br",
    "enforcedSecurityPolicy": {
      "outcome": "ACCEPT",
      "configuredAction": "ACCEPT",
      "name": "example_policy",
      "priority": 1000,
      "configuredAction": "DENY",
      "threatIntelligence": {
        "categories": [
          0: "iplist-public-clouds"
        ]
      }
    },
    "originalRequestId": "19d92668-3948-49d8-9244-25f8252043e5",
    "proxyRegionCode": "IN",
    "requestId": "4bde6381-cd17-47e1-8c2a-1aaa424a1156",
    "originIp": "74.125.128.128"
  },
  "httpRequest": {
    "requestMethod": "GET",
    "requestUrl": "https://example.com/image.jpg",
    "requestSize": "3545",
    "status": 200,
    "responseSize": "3716",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
    "remoteIp": "62.36.0.43",
    "protocol": "HTTP/2"
  },
  "resource": {
    "type": "edgecache.googleapis.com/EdgeCacheRouteRule",
    "labels": {
      "matched_path": "/",
      "path_matcher_name": "routes",
      "service_name": "example_service",
      "resource_container": "projects/123456789",
      "location": "global",
      "route_destination": "projects/123456789/locations/global/edgeCacheOrigins/example_origin",
      "route_type": "ORIGIN"
    }
  },
  "timestamp": "2022-11-19T00:24:13.695328200Z",
  "logName": "projects/my-project/logs/edgecache.googleapis.com%2Fedge_cache_request",
  "receiveTimestamp": "2022-11-19T00:24:16.715871645Z"
}

リクエスト ロギングは、いくつかの方法で構成できます。ログの量と Logging の全体的な料金を削減するために、必要に応じてログをサンプリングまたはフィルタできます。

また、ログを Pub/Sub、Cloud Storage、BigQuery に転送して、 Google Cloud または既存のログ分析ツールで分析することもできます。

保持ポリシー

Logging は、シンク単位など、カスタム保持ポリシーの設定をサポートしています。

次のステップ