Media CDN プラグインのロギングとモニタリング

このページでは、Media CDN の Service Extensions プラグインで Cloud LoggingCloud Monitoring を構成して使用する方法について説明します。

ロギング

このセクションでは、Media CDN プラグインの Service Extensions ログと、ログメッセージの情報を表示して関連付ける方法について説明します。

ログ メッセージ

Service Extensions は、プラグインの実行中にログメッセージを生成することをサポートしています。ログの記録はデフォルトで無効になっています。プラグインのログを記録するには、プラグインの作成時または更新時に有効にします。

プラグインのログレコードには、次のコンテキスト情報が注釈として付加されます。

  • タイムスタンプやログレベルなどの標準ログ アノテーション。
  • メッセージを生成したプラグインの ID。
  • ログメッセージが生成されたプラグインのコールバック
  • ログ メッセージが関連付けられているリクエストログを特定するのに役立つ requestId トレース ID。

サービス拡張機能に関連するログは、次のいずれかのカテゴリに分類されます。

  • プラグインのログ メッセージ

    Rust の info!(...)、Go の proxywasm.LogInfo(...)、C++ の LOG_INFO などのロギング呼び出しによって生成されます。Service Extensions は、これらのログメッセージを Cloud Logging にエクスポートします。リクエスト ヘッダーとレスポンス ヘッダー、およびプラグインが実行したアクションをログに記録できます。

    これらのメッセージは、networkservices.googleapis.com サービスを使用して表示できます。

  • Media CDN のログ メッセージ

    関連付けられた Wasm アクションを含む EdgeCacheService リソースへの HTTP リクエストの Media CDN ログメッセージ。これらは、edgecache.googleapis.com サービスで表示できる通常の Media CDN ログエントリです。

プラグインのロギングを有効にする

Service Extensions は、プラグインの実行中にログメッセージを生成することをサポートしています。ログの記録はデフォルトで無効になっています。

プラグインのログを記録するには、プラグインの作成時または更新時に有効にします。

既存のプラグインのロギングを有効にするには、gcloud beta service-extensions wasm-plugins update コマンドを使用します。

gcloud beta service-extensions wasm-plugins update WASM_PLUGIN \
    --log-config=[LOG_CONFIG,...]

次のように置き換えます。

  • WASM_PLUGIN: プラグインの ID または完全修飾名
  • LOG_CONFIG: プラグインのロギング オプション。ロギングを有効にするには、enable オプションを true に設定します。次に、次の詳細を指定します。

    • sample-rate: アクティビティ ログのサンプリング レート(01 の値)。値 0 は、ログメッセージが保存されないことを示します。デフォルト値 1 は、すべてのログメッセージが保存されることを示します。0.01.0 の浮動小数点値は、ログ メッセージの割合が保存されていることを示します。
    • min-log-level: Cloud Logging にエクスポートするプラグイン ログ メッセージの最小重要度レベル。デフォルト値は INFO です。

プラグインのロギングを有効にすると、プラグイン コードのロギング ステートメントによって出力されたメッセージを Cloud Logging で確認できます。

ログを表示するには、 Google Cloud コンソールで [ログ エクスプローラ] ページに移動します。

ログメッセージを表示する

ログは、ログ エクスプローラでクエリを作成して表示できます。

プラグインのログは、スタンドアロンのサービス拡張機能のログとして表示できます。このビューでは、各プラグインのログ メッセージは独自のログレコードに記録され、リクエスト ログ情報に自動的に関連付けられることはありません。

これらのログメッセージは、リソースタイプ networkactions.googleapis.com/WasmPluginVersionnetworkactions.googleapis.com/wasm_plugin_activity ログに記録されます。

システムは、このログに情報ログ メッセージを追加することもあります。たとえば、プラグイン呼び出しが CPU またはメモリの上限を超えたときにプラグイン エラーが発生すると、重大度 ERROR のメッセージがログに記録されます。このようなメッセージは、エラーの表示とフィルタでも確認できます。

ログ エクスプローラで、対応する Media CDN リクエストログに関連付けられたログメッセージを表示することもできます。リクエストログを表示しているときに、リクエストログ エントリを開くと、リクエストに関連するプラグインログがリクエストログの下にネストされて表示されます。このビューでは、関連するリクエストのコンテキストでプラグインログを理解できます。

ログのサンプル

Service Extensions のログエントリの例を考えてみましょう。message の値は、プラグインの LOG_INFO 呼び出しに渡されます。severity の値は、プラグインのログ呼び出しで使用されるログレベルによって異なります。labels セクションでは、API の値は HTTP_REQUEST_HEADER です。これは、ログに記録されたオペレーションが on_http_request_headers プラグイン コールバックであることを示します。

{
  "insertId": "65224aac-0000-24bd-a0e1-582429bd544c@a1",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.networkactions.logging.v1.WasmPluginLogEntry",
    "metroIataCode": "ber",
    "proxyRegionCode": "DE",
    "message": "[add_header_plugin.cc:26]::onRequestHeaders() AddHeaderStreamContext::onRequestHeaders called",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1"
  },
  "resource": {
    "type": "networkactions.googleapis.com/WasmPluginVersion",
    "labels": {
      "plugin_version": "prod-1",
      "resource_container": "projects/123456789",
      "location": "global",
      "plugin_name": "add-headers-plugin-prod-resource"
    }
  },
  "timestamp": "2023-05-10T03:05:43.317015458Z",
  "severity": "INFO",
  "labels": {
    "networkactions.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
  },
  "logName": "projects/123456789/logs/networkactions.googleapis.com%2Fwasm_plugin_activity",
  "trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}
関連する Media CDN ログエントリは次のように表示されます。両方のログメッセージの requestId 値と trace 値が同じです。
{
  "insertId": "6c95cc54-0000-26ba-ba73-f403043c328c@a1",
  "jsonPayload": {
    "cacheMode": "USE_ORIGIN_HEADERS",
    "@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
    "wasmAction": "add-headers-action-prod-resource",
    "cacheKeyFingerprint": "f04d02bb12f2e79e",
    "proxyStatus": "Google-Edge-Cache",
    "clientCity": "Erlangen",
    "clientAsn": "8881",
    "origin": "example-origin",
    "cacheId": "ber",
    "tlsVersion": "NONE",
    "latency": "0.002840304s",
    "originIp": "142.250.145.128",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1",
    "clientRegionCode": "DE",
    "originalRequestId": "7656c418-df7c-4ae5-9db5-4f247ec5a82c",
    "httpTtfb": "0.002814903s",
    "metroIataCode": "BER",
    "proxyRegionCode": "DE",
    "cacheStatus": "hit"
  },
  "httpRequest": {
    "requestMethod": "GET",
    "requestUrl": "https://example.com/image.jpg",
    "requestSize": "1631",
    "status": "200",
    "responseSize": "402907",
    "userAgent": "Wtrace",
    "remoteIp": "2001:1438:1:19::5",
    "protocol": "HTTP/1.1"
  },
  "resource": {
    "type": "edgecache.googleapis.com/EdgeCacheRouteRule",
    "labels": {
      "location": "global",
      "route_destination": "projects/123456789/locations/global/edgeCacheOrigins/example-origin",
      "matched_path": "/turing/",
      "route_type": "ORIGIN",
      "path_matcher_name": "routes",
      "resource_container": "projects/123456789",
      "service_name": "example-service"
    }
  },
  "timestamp": "2023-05-10T03:05:43.321347304Z",
  "logName": "projects/bdn-prober/logs/edgecache.googleapis.com%2Fedge_cache_request",
  "trace": "projects/1069774196212/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:49.919781008Z"
}

制限事項

プラグインは、クライアントの HTTP リクエストごとに最大 16 KiB のペイロード データをロギングできます。この量は、特定の HTTP リクエストに関連付けられた複数のロギング呼び出しに分割されます。この上限はログ メッセージのテキストにのみ適用され、Service Extensions によってログレコードに追加された追加のメタデータには適用されません。

たとえば、on_http_request_headers コールバックがそれぞれ 4 KiB のメッセージで 2 回のロギング呼び出しを行い、on_http_response_headers コールバックが同じ HTTP リクエストに対してそれぞれ 4 KiB のメッセージで 3 回のロギング呼び出しを試行すると、3 番目のロギング メッセージはドロップされます。プラグインで生成されたログメッセージのうち、ドロップされた数を記録するログメッセージが追加されます。

モニタリング

このセクションでは、Cloud Monitoring ダッシュボードを使用して Media CDN プラグインの Service Extensions 指標を表示する方法について説明します。

Service Extensions の指標タイプの詳細については、Google Cloud 指標のページをご覧ください。

Service Extensions のモニタリング ダッシュボードを表示する

Service Extensions のモニタリング ダッシュボードを表示する手順は次のとおりです。

  1. Google Cloud コンソールで、[サービス拡張機能] ページに移動します。

    サービス拡張機能に移動

  2. [プラグイン] タブをクリックします。
  3. プラグイン名をクリックします。
  4. [プラグインの詳細] ページで、[モニタリング] タブをクリックします。
  5. [モニタリング] ページの指標グラフには、プラグインのパフォーマンスのモニタリングに役立つ情報が表示されます。

  6. プラグインのライフサイクル オペレーションの指標を表示するには、[オペレーション フィルタ] リストから値を選択します。デフォルトでは、値 HTTP request headerHTTP response header が選択されています。
  7. 特定のプラグイン バージョンの指標を表示するには、[プラグイン バージョン フィルタ] リストから値を選択します。デフォルトでは、すべてのバージョンの指標が表示されます。
  8. データを表示する期間を変更するには、時間セレクタから事前定義された期間を選択するか、[カスタム] をクリックして開始時刻と終了時刻を定義します。デフォルトでは、セレクタは 1 day に設定されています。

Service Extensions のプラグイン指標

サービス拡張機能の観点から、プラグインの次の指標をモニタリングできます。これらの指標には接頭辞 networkactions.googleapis.com/wasm_plugin/ が付いています。この接頭辞は、表中の項目では省略されています。

指標タイプ 表示名
種類、タイプ、単位
説明
invocation_count Wasm プラグインの呼び出し回数
DELTAINT641
選択した期間におけるプラグインの呼び出し回数。各プラグインのコールバック呼び出しは、個別のプラグイン呼び出しとしてカウントされます。
invocation_latencies Wasm プラグインの呼び出しレイテンシ
DELTADISTRIBUTIONus
プラグインのローカル実行時間(ミリ秒単位)。この指標には、各コールバックのラベルで区切られたエントリが含まれます。
cpu/usage_times Wasm プラグインの正規化された CPU 使用率
DELTADISTRIBUTIONus{CPU}
プラグイン呼び出しの CPU 使用時間(マイクロ秒単位)。
memory/bytes_used Wasm プラグインのメモリ使用量
GAUGEDISTRIBUTIONBy
Wasm プラグイン VM によって割り当てられたメモリの合計(バイト単位)。

Media CDN のプラグイン指標

Media CDN の観点から、プラグインの次の指標をモニタリングできます。指標タイプの文字列は、接頭辞 edgecache.googleapis.com/edge_cache_route_rule/network_actions/ の後ろに続きます。この接頭辞は、表中の項目では省略されています。

指標タイプ 表示名
種類、タイプ、単位
説明
wasm_action_invocation_count Service Extensions 呼び出し数
DELTAINT641
選択した期間に Media CDN によって処理された Service Extensions の呼び出し数。
wasm_action_invocation_latencies Service Extensions 呼び出しレイテンシ
DELTADISTRIBUTIONus
Media CDN がプラグインのディスパッチと実行にかかる合計時間(ミリ秒単位)。この指標には、サービス拡張機能のコールバックのラベルで区切られたエントリが含まれます。