リクエスト ロギングを構成する

このページでは、Media CDN のリクエスト ロギングを構成する方法について説明します。

ログを有効化

保存されるデータを最小限に抑えるため、ロギングはデフォルトで無効になっています。ログは、Cloud Logging にルーティング、フィルタ、保存されます。

  • 特定のMedia CDN サービスのロギングを有効にする:

    gcloud edge-cache services update YOUR_SERVICE \
       --enable-logging \
       --logging-sample-rate=1.0
    
  • ロギングを無効にする:

    gcloud edge-cache services update YOUR_SERVICE \
       --no-enable-logging
    
  • サービスのロギングの現在の状態を取得します。

    gcloud edge-cache services describe YOUR_SERVICE
    

    出力は次のようになります。

    ...
    logConfig:
     enable: true
     sampleRate: 1.0
    ...
    

ログのサンプリング レートを設定する

リクエストが大量である場合、すべてのリクエストに対してログをキャプチャするのではなく、ログをサンプリングし、予防的なモニタリングと調査のための指標を活用することをおすすめします。

リクエストの 10% のログのみを取り込んで保存するには、logConfig.sampleRate0.1 に設定します。

gcloud edge-cache services update YOUR_SERVICE \
    --enable-logging \
    --logging-sample-rate=0.1

サンプリング レートを変更するには、ロギングを有効にする必要があります。

サンプリング レート(特に指定しない限り)はデフォルトで 0(0%)になり、構成されたサービスに対するすべてのリクエストがログに記録されます。

クエリログ

ログをクエリするには、Google Cloud コンソールのログ エクスプローラまたは Google Cloud CLI を使用できます。

Google Cloud コンソールでログを表示するには、Media CDN リソースタイプをフィルタし、必要に応じてプロジェクトとサービス名でフィルタします。

次のロギングクエリでは、すべての Media CDN サービスのログが表示されます。

resource.type="edgecache.googleapis.com/EdgeCacheRouteRule"

特定の EdgeCacheService リソースとプロジェクトに関連付けられたログをフィルタするには、このクエリを拡張します。

resource.type="edgecache.googleapis.com/EdgeCacheRouteRule"
resource.labels.resource_container="projects/12345678"
resource.labels.service_name="MY_PROJECT"

名前の一部で照合するか正規表現を使用する場合は、Logging のクエリ言語の比較をご覧ください。

例: キャッシュミスを特定する

オブジェクトに対するリクエストはキャッシュミスになる可能性がありますが、次の理由でキャッシュ フィルが発生する可能性があります。

  • 有効期間(TTL)が短すぎる
  • 過度に限定されたキャッシュキー
  • キャッシュされたリクエストが多すぎる

キャッシュミスを特定するには、ログ エクスプローラでログをフィルタします。

次のログクエリは、キャッシュ可能な(検索された)リクエストのうち、送信元からのフィルが必要なリクエストを示します。

resource.type="edgecache.googleapis.com/EdgeCacheRouteRule"
resource.labels.resource_container="projects/12345678"
resource.labels.service_name="MY_PROJECT"
jsonPayload.cacheStatus="miss"

特定の URL でフィルタする必要がある場合は、httpRequest.requestUrl フィールドでフィルタします。

httpRequest.requestUrl = "URL"

パス コンポーネントなど、URL の一部をフィルタするには、has 演算子を使用します。

# `:` is the `has` comparison operator

httpRequest.requestUrl: "/videos/1381381_1080.mp4"
# You can use `OR` or `AND` to filter on multiple values

httpRequest.requestUrl: ("https://media-test.example.com/" OR "https://canary.example.net")

照合とフィルタリングのための Logging の包括的な構文の詳細については、Logging のクエリ言語を使用して高度なクエリを作成するをご覧ください。

保存するログをフィルタ

ログを保存する前にフィルタする(たとえば、関連するフィールドのみをキャプチャして、保存とクエリが必要なログ容量を減らすなど)には、除外フィルタを構成します。これにより、保存前にフィールドを含む(または除外する)クエリ(フィルタ)を定義できます。

また、複数のフィルタを設定することもできます。たとえば、すべてのキャッシュミス リクエストをキャプチャしたり、特定のホスト名に対するすべてのリクエストをキャプチャしたり、すべてのログのサンプルだけを取得したりできます。

ログを転送する

Media CDN は Cloud Logging と直接統合されているため、次の方法でログを集計してルーティングできます。

  • Cloud Storage や BigQuery などの保存先

  • ログにアクセスするためにサブスクライブできるサードパーティの宛先がある Pub/Sub トピック

Logging からログが転送される方法の概要については、ルーティングとストレージの概要をご覧ください。

次のステップ