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

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 バージョン
    • Common Media Client Data(CMCD)の情報

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

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

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

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

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

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

backendLatency 0.126666342s

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

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

cacheId maa-123456 キャッシュに最も近い都市の IATA(空港)コードと、キャッシュ インスタンスの不透明な識別子。完全または部分的なキャッシュミスによりリクエストの処理に複数のキャッシュ層が必要な場合、次のようなキャッシュのロケーションのチェーンが提供されます。例: 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 バージョン)のいずれかの記録をつけます。
enforcedSecurityPolicy クライアントのリクエストに適用される Google Cloud Armor エッジ セキュリティ ポリシー。これには、ポリシー名、優先度、実施されたアクションに関する追加情報が含まれます。
httpTtfb 0.157228207s プロキシがリクエスト バイトの受信を開始してから、レスポンスの最初のバイトが送信される(未受信)までの期間。
latency 0.157415635s プロキシがリクエスト バイトの受信を開始してから、クライアントへのレスポンスの書き込みを終了するまでの時間。
location レスポンスの Location ヘッダー。
metroIataCode MAA プロキシに最も近い都市の IATA(空港)コード。
origin レスポンスがプロキシされた EdgeCacheOrigin リソース。
originalRequestId 19d92668-3948-49d8-9244-25f8252043e4 このレスポンスを最初に生成したリクエストに割り当てられた一意の識別子。 キャッシュに保存されたレスポンスの request_id とは異なる場合にのみ入力されます。
originIp レスポンスがプロキシされた EdgeCacheOrigin リソースへの接続に使用される IP アドレス。
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", // hex digits for the cipher negotiated
    "cacheId": "maa-132eed13faa13",
    "clientAsn": "9299", // AS the client is associated with
    "origin": "example_origin",
    "clientRegionCode": "IN",
    "metroIataCode": "bom",
    "clientCity": "Mumbai", // City name, in English
    "latency": "0.005105200s",
    "proxyStatus": "Google-Edge-Cache",
    "httpTtfb": "0.005056080s",
    "cacheMode": "FORCE_CACHE_ALL",
    "cacheKeyFingerprint": "c360ac18849b6336",
    "cacheStatus": "hit,stale",
    "enforcedSecurityPolicy": {
      "outcome": "ACCEPT",
      "configuredAction": "ACCEPT",
      "name": "example_policy",
      "priority": 1000
    },
    "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 は、カスタム保持ポリシーの設定をサポートしています。これにはシンク単位も含まれます。

次のステップ