このページでは、Cloud Load Balancing と Cloud CDN の Service Extensions プラグインで Cloud Logging と Cloud Monitoring を構成して使用する方法について説明します。
ロギング
このセクションでは、アプリケーション ロードバランサ プラグインのロギングについて説明します。ロギングは、プラグインの視点とロードバランサの視点の両方から可能です。
ログ メッセージ
Service Extensions は、プラグインの実行中にログメッセージを生成することをサポートしています。ログの記録はデフォルトで無効になっています。プラグインのログを記録するには、プラグインの作成時または更新時に有効にします。
プラグインのログレコードには、次のコンテキスト情報が注釈として付加されます。
- タイムスタンプやログレベルなどの標準ログ アノテーション。
- メッセージを生成したプラグインの ID。
- ログメッセージが生成されたプラグインのコールバック。
- ログ メッセージが関連付けられているリクエストログを特定するのに役立つ
requestIdトレース ID。
サービス拡張機能に関連するログは、次のいずれかのカテゴリに分類されます。
プラグインのログ メッセージ
Rust の
info!(...)、Go のproxywasm.LogInfo(...)、C++ のLOG_INFOなどのロギング呼び出しによって生成されます。Service Extensions は、これらのログメッセージを Cloud Logging にエクスポートします。リクエスト ヘッダーとレスポンス ヘッダー、およびプラグインが実行したアクションをログに記録できます。これらのメッセージは、
networkservices.googleapis.comサービスを使用して表示できます。Cloud Load Balancing ログメッセージ
これらのメッセージは、
loadbalancing.googleapis.comサービスを使用して表示できます。
プラグインの観点からのロギング
このセクションでは、プラグインの観点から Service Extensions のロギングについて説明します。
プラグインのロギングを有効にする
Service Extensions は、プラグインの実行中にログメッセージを生成することをサポートしています。ログの記録はデフォルトで無効になっています。
プラグインのログを記録するには、プラグインの作成時または更新時に有効にします。
既存のプラグインのロギングを有効にするには、gcloud service-extensions wasm-plugins update コマンドを使用します。
gcloud 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 コンソールで [ログ エクスプローラ] ページに移動します。
プラグインのログメッセージを表示する
ログは、ログ エクスプローラでクエリを作成して表示できます。
プラグインのログは、スタンドアロンのサービス拡張機能のログとして表示できます。このビューでは、各プラグインのログ メッセージは独自のログレコードに記録され、リクエスト ログ情報に自動的に関連付けられることはありません。
これらのログメッセージは、リソースタイプ networkservices.googleapis.com/WasmPluginVersion の networkservices.googleapis.com/wasm_plugin_activity ログに記録されます。
システムは、このログに情報ログ メッセージを追加することもあります。たとえば、プラグイン呼び出しが CPU またはメモリの上限を超えたときにプラグイン エラーが発生すると、重大度 ERROR のメッセージがログに記録されます。このようなメッセージは、エラーの表示とフィルタでも確認できます。
プラグイン ログのサンプル
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.networkservices.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": "networkservices.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": {
"networkservices.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
},
"logName": "projects/123456789/logs/networkservices.googleapis.com%2Fwasm_plugin_activity",
"trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
"receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}
ロギングに関する制限事項
プラグインは、クライアントの HTTP リクエストごとに最大 16 KiB のペイロード データをロギングできます。この量は、特定の HTTP リクエストに関連付けられた複数のロギング呼び出しに分割されます。この上限はログ メッセージのテキストにのみ適用され、Service Extensions によってログレコードに追加された追加のメタデータには適用されません。
たとえば、on_http_request_headers コールバックがそれぞれ 4 KiB のメッセージで 2 回のロギング呼び出しを行い、on_http_response_headers コールバックが同じ HTTP リクエストに対してそれぞれ 4 KiB のメッセージで 3 回のロギング呼び出しを試行すると、3 番目のロギング メッセージはドロップされます。プラグインで生成されたログメッセージのうち、ドロップされた数を記録するログメッセージが追加されます。
ロードバランサの観点からのロギング
このセクションでは、ロードバランサの観点から Service Extensions のロギングについて説明します。
バックエンド サービスでロギングを有効にする
アプリケーション ロードバランサ プラグインのロギングを有効にするには、リクエストのターゲットであるバックエンド サービスでロギングを有効にして、サービスを作成します。
ターゲット バックエンド サービスのロギングを有効にするには、gcloud compute backend-services update コマンドを使用します。
gcloud compute backend-services update BACKEND_SERVICE \
--enable-logging \
--logging-sample-rate=RATE \
--region=REGION \
--logging-optional=LOGGING_OPTIONAL_MODE \
--logging-optional-fields=OPTIONAL_FIELDS
次のように置き換えます。
BACKEND_SERVICE: バックエンド サービスの名前。RATE:0.0から1.0までの値。0.0はリクエストがログに記録されていないことを意味し、1.0はリクエストの 100% がログに記録されることを意味します。デフォルト値は1.0です。この設定は、enable-loggingパラメータと組み合わせて使用する場合にのみ有効です。enable-loggingを省略すると、ロギングは無効になります。REGION: バックエンドのリージョンLOGGING_OPTIONAL_MODE: 次のいずれかのモードでオプション フィールドのロギングを有効にします。INCLUDE_ALL_OPTIONALには、すべてのオプション フィールドが含まれます。EXCLUDE_ALL_OPTIONAL(デフォルト): すべてのオプション フィールドを除外します。CUSTOMには、オプション フィールドのカスタムリストが含まれます。
OPTIONAL_FIELDS:CUSTOMモードを選択した場合のオプション フィールドのカンマ区切りのリスト
バックエンド サービスでロギングを有効にすると、Cloud Logging が HTTP または HTTPS リクエストをログに記録します。
ログを表示するには、 Google Cloud コンソールで [ログ エクスプローラ] ページに移動します。
バックエンド サービスのメッセージをログに記録する
一般に、アプリケーション ロードバランサのログエントリには、HTTP または HTTPS トラフィックのモニタリングとデバッグに役立つ情報が含まれています。ログエントリには次のタイプの情報が含まれています。
- 重大度、プロジェクト ID、プロジェクト番号、タイムスタンプなど、ほとんどの Google Cloud ログに表示される情報(LogEntry ログの説明を参照)。
- HttpRequest ログフィールド。
HTTP ロードバランサと HTTPS ロードバランサのリクエストログには、次の情報を含むロードバランサ ログエントリ JSON ペイロードの service_extension_info オブジェクトが含まれています。
| フィールド | タイプ | 説明 |
|---|---|---|
backend_target_name |
文字列 | 拡張機能のバックエンド ターゲットの名前。 |
backend_target_type |
文字列 | バックエンド ターゲットのタイプ。 |
chain |
文字列 | リクエストと一致するサービス拡張機能リソース内の拡張機能チェーンの名前。 |
extension |
文字列 | 拡張機能チェーン内の拡張機能の名前。 |
grpc_status |
enum | gRPC ストリームの最新のステータス。詳細については、 gRPC ステータス コードをご覧ください。 |
per_processing_request_info |
配列 | gRPC ストリームで発生する ext_proc 拡張機能の ProcessingRequest 統計情報または ext_authz 拡張機能の CheckRequest 統計情報のリスト。 |
per_processing_request_info[].event_type |
enum | ProcessingRequest のイベントタイプ。REQUEST_HEADERS、REQUEST_BODY、RESPONSE_HEADERS、RESPONSE_BODY のいずれかになります。 |
per_processing_request_info[].latency |
duration | ProcessingRequest メッセージの最初のバイトが拡張機能に送信された時点から、ProcessingResponse メッセージの最後のバイトが受信された時点までの時間。 |
resource |
文字列 | 拡張機能リソースの名前 |
モニタリング
このセクションでは、Cloud Monitoring ダッシュボードを使用して、Service Extensions を使用して構成されたアプリケーション ロードバランサ プラグインの指標を表示する方法について説明します。プラグインは、プラグインの観点またはロードバランサの観点からモニタリングできます。
プラグインの観点からのモニタリング
このセクションでは、プラグインの観点から Service Extensions のモニタリングについて説明します。
Service Extensions の指標タイプの詳細については、Google Cloud 指標のページをご覧ください。
Service Extensions のモニタリング ダッシュボードを表示する
Service Extensions のモニタリング ダッシュボードを表示する手順は次のとおりです。
- Google Cloud コンソールで、[サービス拡張機能] ページに移動します。
- [プラグイン] タブをクリックします。
- プラグイン名をクリックします。
- [プラグインの詳細] ページで、[モニタリング] タブをクリックします。
- プラグインのライフサイクル オペレーションの指標を表示するには、[オペレーション フィルタ] リストから値を選択します。デフォルトでは、値
HTTP request headerとHTTP response headerが選択されています。 - 特定のプラグイン バージョンの指標を表示するには、[プラグイン バージョン フィルタ] リストから値を選択します。デフォルトでは、すべてのバージョンの指標が表示されます。
- データを表示する期間を変更するには、時間セレクタから事前定義された期間を選択するか、[カスタム] をクリックして開始時刻と終了時刻を定義します。デフォルトでは、セレクタは
1 dayに設定されています。
[モニタリング] ページの指標グラフには、プラグインのパフォーマンスのモニタリングに役立つ情報が表示されます。
Service Extensions のプラグイン指標
サービス拡張機能の観点から、プラグインの次の指標をモニタリングできます。これらの指標には接頭辞 networkservices.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 によって割り当てられたメモリの合計(バイト単位)。 |
ロードバランサの観点からのモニタリング
このセクションでは、ロードバランサの観点からプラグインの Service Extensions モニタリングについて説明します。
Cloud Load Balancing のモニタリング ダッシュボードを表示する
アプリケーション ロードバランサは、モニタリング データを Cloud Monitoring にエクスポートします。
Monitoring 指標は、次の目的で使用します。
- ロードバランサの構成、使用状況、パフォーマンスの評価
- 問題のトラブルシューティング
- リソースの使用率とユーザー エクスペリエンスの改善
事前定義されたダッシュボードを表示する手順は次のとおりです。
- Google Cloud コンソールで、[ダッシュボードの概要] ページに移動します。
- [カテゴリ] セクションで、[GCP] をクリックします。
- すべてのロードバランサのダッシュボードのリストを表示するには、[GCP ダッシュボード] リストで、[Google Cloud ロードバランサ] というダッシュボードをクリックします。特定のロードバランサのダッシュボードを表示するには、リストでロードバランサを見つけて、その名前をクリックします。
- ロードバランサ専用の事前定義ダッシュボードを表示するには、適切なダッシュボードを選択します。
Monitoring の事前定義されたダッシュボードに加えて、カスタム ダッシュボードを作成して、アラートをセットアップし、Cloud Monitoring API を使用して指標をクエリできます。
Cloud Load Balancing のプラグイン指標
Cloud Load Balancing の観点から、プラグインの次の指標をモニタリングできます。
これらの指標には接頭辞 loadbalancing.googleapis.com/ が付いています。表中の項目では、この接頭辞は省略されています。
| 指標タイプ | 表示名
種類、タイプ、単位 説明 |
|---|---|
https/backend_request_count、https/external/regional/backend_request_count、https/internal/backend_request_count |
バックエンド リクエスト数
DELTA、INT64、1
アプリケーション ロードバランサからプラグインが呼び出された回数。 |
https/backend_request_bytes_count、https/external/regional/backend_request_bytes_count、https/internal/backend_request_bytes_count |
バックエンド リクエストのバイト数
DELTA、INT64、By
ロードバランサからプラグインに送信されたバイト数。 |
https/backend_response_bytes_count、https/external/regional/backend_response_bytes_count、https/internal/backend_response_bytes_count |
バックエンド レスポンスのバイト数
DELTA、INT64、By
ロードバランサが拡張機能のバックエンドから受信したバイト数。 |
プラグインの指標を表示する
特定のプラグインの指標を表示する手順は次のとおりです。
Google Cloud コンソールで、Metrics Explorer のページに移動します。
[指標] 要素で、[指標を選択] メニューを開きます。次に、以下の操作を行います。
リソースのリストから、適切なアプリケーション ロードバランサ ルールを選択します。
指標カテゴリのリストから [Https] を選択します。
指標のリストから、プラグイン指標を選択します。
[適用] をクリックします。
Filter 要素で、次の操作を行います。
backend_target_type ラベルを選択し、値を
WASM_PLUGINに設定します。backend_target_name ラベルを選択し、プラグイン名を値として設定します。
ロードバランサの指標タイプの詳細については、 Google Cloud 指標ページの loadbalancing セクションをご覧ください。