このページでは、Media CDN の Service Extensions プラグインで Cloud Logging と Cloud Monitoring を構成して使用する方法について説明します。
ロギング
このセクションでは、Media CDN プラグインの Service Extensions ログと、ログ メッセージの情報を表示して関連付ける方法について説明します。
ログ メッセージ
Service Extensions は、プラグインの実行中にログ メッセージを生成できます。ログの記録はデフォルトで無効になっています。プラグインのログを記録するには、プラグインを作成または更新するときに有効にします。
プラグインのログレコードには、次のコンテキスト情報がアノテーションとして付加されます。
- タイムスタンプやログレベルなどの標準のログ アノテーション。
- メッセージを生成したプラグインの ID。
- ログメッセージが生成されたプラグイン コールバック。
requestIdトレース ID。ログメッセージが関連付けられているリクエストログを特定するのに役立ちます。
Service Extensions に関連するログは、次のいずれかのカテゴリに分類されます。
プラグインのログ メッセージ
Rust の
info!(...)、Go のproxywasm.LogInfo(...)、C++ のLOG_INFOなどのロギング呼び出しによって生成されます。Service Extensions は、これらのログ メッセージを Cloud Logging にエクスポートします。リクエスト ヘッダーとレスポンス ヘッダー、およびプラグインが実行したアクションをログに記録できます。これらのメッセージは、
networkservices.googleapis.comサービスを使用して表示できます。Media CDN ログ メッセージ
CdnEdgeExtensionが関連付けられた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: アクティビティ ログのサンプリング レート。0~1の値。値0は、ログメッセージが保存されないことを示します。デフォルト値1は、すべてのログ メッセージが保存されることを示します。0.0~1.0の浮動小数点値は、ログ メッセージの割合が保存されていることを示します。min-log-level: Cloud Logging にエクスポートされるプラグイン ログメッセージの最小重大度レベル。デフォルト値はINFOです。
ログを表示するには、 Google Cloud コンソールで [ログ エクスプローラ] ページに移動します。
ログメッセージを表示する
ログは、ログ エクスプローラでクエリを作成することで表示できます。
プラグイン ログは、スタンドアロンの Service Extensions ログとして表示できます。このビューでは、各プラグインのログ メッセージが独自のログレコードに記録され、リクエスト ログ情報に自動的に関連付けられることはありません。
これらのログ メッセージは、リソースタイプ networkactions.googleapis.com/WasmPluginVersion の networkactions.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"
}
requestId 値と trace 値は同じです。
{
"insertId": "6c95cc54-0000-26ba-ba73-f403043c328c@a1",
"jsonPayload": {
"cacheMode": "USE_ORIGIN_HEADERS",
"@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
"serviceExtensionInfo": [
{
"serviceExtension": "projects/123456789/locations/global/cdnEdgeExtensions/my-cdn-edge-extension",
"chain": "edge-plugin-chain",
"extension": "auth-and-header-plugin",
"grpcStatus": "OK",
"processingRequests": [
{
"eventType": "RESPONSE_HEADERS",
"processingEffect": "CONTENT_MODIFIED"
}
]
}
],
"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 つのロギング呼び出しを行おうとすると、5 番目のロギング メッセージはドロップされます。ログメッセージが追加され、ドロップされたプラグイン生成のログメッセージの数が記録されます。
モニタリング
このセクションでは、Cloud Monitoring ダッシュボードを使用して、Media CDN プラグインの Service Extensions 指標を表示する方法について説明します。
Service Extensions の指標タイプの詳細については、Google Cloud 指標のページをご覧ください。
Service Extensions の Monitoring ダッシュボードを表示する
Service Extensions の Monitoring ダッシュボードを表示する手順は次のとおりです。
- Google Cloud コンソールで、[Service Extensions] ページに移動します。
- [Plugins] タブをクリックします。
- プラグイン名をクリックします。
- [プラグインの詳細] ページで、[モニタリング] タブをクリックします。
- プラグインのライフサイクル オペレーションの指標を表示するには、[オペレーション フィルタ] リストから値を選択します。デフォルトでは、値
HTTP request headerとHTTP response headerが選択されています。 - 特定のプラグイン バージョンの指標を表示するには、[プラグイン バージョン フィルタ] リストから値を選択します。デフォルトでは、すべてのバージョンの指標が表示されます。
- データを表示する期間を変更するには、時間セレクタから事前定義された期間を選択するか、[カスタム] をクリックして開始時刻と終了時刻を定義します。デフォルトでは、セレクタは
1 dayに設定されています。
[モニタリング] ページの指標グラフには、プラグインのパフォーマンスのモニタリングに役立つ情報が表示されます。
Service Extensions のプラグイン指標
Service Extensions の観点から、プラグインの次の指標をモニタリングできます。これらの指標には接頭辞 networkactions.googleapis.com/wasm_plugin/ が付けられます。この接頭辞は、表中の項目では省略されています。
| 指標のタイプ | 表示名
種類、タイプ、単位 説明 |
|---|---|
invocation_count
|
Wasm プラグインの呼び出し回数
DELTA、INT64、1
選択した期間におけるプラグインの呼び出し回数。各プラグインのコールバック呼び出しは、個別のプラグイン呼び出しとしてカウントされます。 |
invocation_latencies
|
Wasm プラグイン呼び出しのレイテンシ
DELTA、DISTRIBUTION、us
プラグインのローカル実行時間(ミリ秒単位)。この指標には、各コールバックのラベルで区切られたエントリが含まれます。 |
cpu/usage_times
|
Wasm プラグインの正規化された CPU 使用率
DELTA、DISTRIBUTION、us{CPU}
プラグイン呼び出しの CPU 使用時間(マイクロ秒単位)。 |
memory/bytes_used
|
Wasm プラグインのメモリ使用量
GAUGE、DISTRIBUTION、By
Wasm プラグイン VM によって割り当てられたメモリの合計(バイト単位)。 |
Media CDN のサービス拡張機能のモニタリング指標
Monitoring Metrics Explorer の EdgeCacheService の観点から、Media CDN エッジ拡張機能をモニタリングできます。
Google Cloud コンソールで、Metrics Explorer のページに移動します。
[Media CDN Service Extension] モニタリング対象リソースを選択します。
[拡張機能] 指標カテゴリを選択します。
プラグイン名に設定された
extension_serviceラベルでフィルタします。
プレビューでは、Media CDN の拡張機能について次の指標をモニタリングできます。これらの指標には接頭辞 networkactions.googleapis.com が付けられます。この接頭辞は、次の表のエントリでは省略されています。
次の表に、各指標の指標タイプ、表示名、種類、タイプ、単位、説明を示します。
| 指標のタイプ | 表示名
種類、タイプ、単位 説明 |
|---|---|
extension/invocation_count
|
拡張機能の呼び出し回数
DELTA、INT64、1
拡張機能に送信された呼び出しの数。 |
extension/invocation_latencies
|
拡張機能呼び出しのレイテンシ
DELTA、DISTRIBUTION、ms
各拡張機能呼び出しのレイテンシから計算された分布。 コールアウト拡張機能にのみ適用されます。プラグインではサポートされていません。 |
extension/sent_chunks_count
|
拡張機能が送信したチャンク数
DELTA、INT64、1
request_body イベントと response_body イベントにのみ適用されます。
拡張機能に送信されたデータ チャンクの数。 |
extension/received_chunks_count
|
拡張機能が受信したチャンク数
DELTA、INT64、1
request_body イベントと response_body イベントにのみ適用されます。
拡張機能から受信したチャンクの数。 |
extension/failed_open_count
|
フェイルオープンでの拡張機能の呼び出し失敗
DELTA、INT64、1
システムがフェイルオープンに構成され、リクエストの続行が許可されたときに、呼び出しが失敗した回数。 |
extension/mutation_rejections_count
|
拡張機能のミューテーション拒否数
DELTA、INT64、1
リクエスト ヘッダー、本文、トレーラーのミューテーションをリクエストしたが拒否された呼び出しの数。拒否は、ミューテーションが無効な場合やサイズ制限を超えた場合など、さまざまな理由で発生する可能性があります。 |
extension/sent_bytes_count
|
拡張機能の送信バイト数
DELTA、INT64、By
拡張機能に送信されたバイト数。 |
extension/received_bytes_count
|
拡張機能の受信バイト数
DELTA、INT64、By
拡張機能から受信したバイト数。 |