VPC フローログを構成する
このページでは、VPC フローログを構成する方法について説明します。このページは、VPC フローログと VPC フローログのレコードについてで説明されているコンセプトを理解していることを前提としています。
VPC フローログを有効にする
VPC フローログを有効にすると、サブネット内のすべての VM に対して Logging を有効にすることになります。ただし、Logging に書き込まれる情報の量は削減されます。制御できるパラメータの詳細については、ログのサンプリングと処理をご覧ください。
メタデータ フィールドをカスタマイズする、またはログのフィルタリングを構成するには、Google Cloud CLI または API を使用します。
サブネットの作成時に VPC フローログを有効にする
コンソール
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
サブネットを追加するネットワークをクリックします。
[サブネットを追加] をクリックします。
[フローログ] で [オン] を選択します。
ログのサンプリングと集計を調整する場合は、[ログを構成] をクリックして次のいずれかを調整します。
- 集約の間隔。
- 最終ログエントリにメタデータを含めるかどうか。デフォルトでは、[メタデータを含める] にはすべてのフィールドが含まれます。
- サンプルレート。
100%
はすべてのエントリが保持されることを意味します。
必要に応じて他のフィールドに値を入力します。
[追加] をクリックします。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
次のコマンドを実行します。
gcloud compute networks subnets create SUBNET_NAME \ --enable-flow-logs \ [--logging-aggregation-interval=AGGREGATION_INTERVAL] \ [--logging-flow-sampling=SAMPLE_RATE] \ [--logging-filter-expr=FILTER_EXPRESSION] \ [--logging-metadata=LOGGING_METADATA] \ [--logging-metadata-fields=METADATA_FIELDS] \ [other flags as needed]
次のように置き換えます。
AGGREGATION_INTERVAL
: サブネットのフローログの集計間隔。間隔は、5 秒(デフォルト)、30 秒、1 分、5 分、10 分、15 分のいずれかに設定できます。SAMPLE_RATE
: フロー サンプリング レート。フロー サンプリングは、0.0
(サンプリングなし)から1.0
(すべてのログ)の範囲で設定できます。デフォルトは0.5
です。FILTER_EXPRESSION
: 保持するログを定義する式です。式は 2,048 文字以内に制限されています。詳細については、ログのフィルタリングをご覧ください。LOGGING_METADATA
: ログに含めるメタデータ アノテーション。- すべてのメタデータ アノテーションを含める場合は、
include-all
を使用します。 - すべてのメタデータ アノテーションを除外するには、
exclude-all
を使用します(デフォルト)。 METADATA_FIELDS
で指定するメタデータ フィールドのカスタムリストを含める場合は、custom
を使用します。
- すべてのメタデータ アノテーションを含める場合は、
METADATA_FIELDS
: ログに含めるメタデータ フィールドのカンマ区切りのリスト。例:src_instance,dst_instance
LOGGING_METADATA
がcustom
に設定されている場合のみ設定できます。
API
新しいサブネットの作成時に VPC フローログを有効にします。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "logConfig": { "aggregationInterval": "AGGREGATION_INTERVAL", "flowSampling": SAMPLING_RATE, "filterExpr": EXPRESSION, "metadata": METADATA_SETTING, "metadataFields": METADATA_FIELDS, "enable": true }, "ipCidrRange": "IP_RANGE", "network": "NETWORK_URL", "name": "SUBNET_NAME" }
次のように置き換えます。
PROJECT_ID
: サブネットを作成するプロジェクトの ID。REGION
: サブネットが作成されるリージョン。AGGREGATION_INTERVAL
: サブネット内のフローログの集計間隔。間隔は、INTERVAL_5_SEC
、INTERVAL_30_SEC
、INTERVAL_1_MIN
、INTERVAL_5_MIN
、INTERVAL_10_MIN
、INTERVAL_15_MIN
のいずれかに設定できます。SAMPLING_RATE
: フロー サンプリング レート。フロー サンプリングは、0.0
(サンプリングなし)から1.0
(すべてのログ)の範囲で設定できます。デフォルトは.0.5
です。EXPRESSION
: 実際に書き込まれるログをフィルタリングするために使用するフィルタ式。式は 2,048 文字以内に制限されています。詳細については、ログのフィルタリングをご覧ください。METADATA_SETTING
: ログに含めるメタデータ アノテーション。- すべてのメタデータ アノテーションを含める場合は、
INCLUDE_ALL_METADATA
を使用します。 - すべてのメタデータ アノテーションを除外するには、
EXCLUDE_ALL_METADATA
を使用します(デフォルト)。 METADATA_FIELDS
で指定するメタデータ フィールドのカスタムリストを含める場合は、custom
を使用します。
- すべてのメタデータ アノテーションを含める場合は、
METADATA_FIELDS
:metadata: CUSTOM_METADATA
を設定したときにキャプチャするメタデータ フィールド。これは、src_instance, src_vpc.project_id
などのメタデータ フィールドのカンマ区切りのリストです。IP_RANGE
: サブネットのプライマリ内部 IP アドレスの範囲。NETWORK_URL
: サブネットが作成される VPC ネットワーク URL。SUBNET_NAME
: サブネットの名前。
詳細については、subnetworks.insert
メソッドをご覧ください。
Terraform
Terraform モジュールを使用して、カスタムモードの VPC ネットワークとサブネットを作成できます。
次の例では、3 つのサブネットを作成します。
subnet-01
では VPC フローログが無効になっています。サブネットを作成すると、明示的に有効にしない限り、VPC フローログは無効になります。subnet-02
では、デフォルトのフローログ設定で VPC フローログが有効になっています。subnet-03
では、一部のカスタム設定で VPC フローログが有効になっています。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
既存のサブネットの VPC フローログを有効にする
コンソール
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
更新するサブネットをクリックします。
[編集] をクリックします。
[フローログ] で [オン] を選択します。
ログのサンプリングと集計を調整する場合は、[ログを構成] をクリックして次のいずれかを調整します。
- 集約の間隔。
- 最終ログエントリにメタデータを含めるかどうか。デフォルトでは、[メタデータを含める] にはすべてのフィールドが含まれます。
- サンプルレート。
100%
はすべてのエントリが保持されることを意味します。
[保存] をクリックします。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
次のコマンドを実行します。
gcloud compute networks subnets update SUBNET_NAME \ --enable-flow-logs \ [--logging-aggregation-interval=AGGREGATION_INTERVAL] \ [--logging-flow-sampling=SAMPLE_RATE] \ [--logging-filter-expr=FILTER_EXPRESSION] \ [--logging-metadata=LOGGING_METADATA] \ [--logging-metadata-fields=METADATA_FIELDS] \ [other flags as needed]
次のように置き換えます。
AGGREGATION_INTERVAL
: サブネットのフローログの集計間隔。間隔は、5 秒(デフォルト)、30 秒、1 分、5 分、10 分、15 分のいずれかに設定できます。SAMPLE_RATE
: フロー サンプリング レート。フロー サンプリングは、0.0
(サンプリングなし)から1.0
(すべてのログ)の範囲で設定できます。デフォルトは0.5
です。FILTER_EXPRESSION
: 保持するログを定義する式です。式は 2,048 文字以内に制限されています。詳細については、ログのフィルタリングをご覧ください。LOGGING_METADATA
: ログに含めるメタデータ アノテーション。- すべてのメタデータ アノテーションを含める場合は、
include-all
を使用します。 - すべてのメタデータ アノテーションを除外するには、
exclude-all
を使用します(デフォルト)。 METADATA_FIELDS
で指定するメタデータ フィールドのカスタムリストを含める場合は、custom
を使用します。
- すべてのメタデータ アノテーションを含める場合は、
METADATA_FIELDS
: ログに含めるメタデータ フィールドのカンマ区切りのリスト。例:src_instance,dst_instance
LOGGING_METADATA
がcustom
に設定されている場合のみ設定できます。
API
既存のサブネットの VPC フローログを有効にします。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "logConfig": { "enable": true ...other logging fields. }, "fingerprint": "SUBNETWORK_FINGERPRINT" }
次のように置き換えます。
PROJECT_ID
: サブネットが存在するプロジェクトの ID。REGION
: サブネットが配置されているリージョン。SUBNET_NAME
: 既存のサブネットの名前。SUBNET_FINGERPRINT
: 既存のサブネットのフィンガー プリント ID。サブネットの詳細を取得するときに指定します。- 他のロギング フィールドについては、サブネット作成時の VPC フローログの有効化を参照してください。
詳細については、subnetworks.patch
メソッドをご覧ください。
既存のサブネットの推定ログボリュームを表示する
Google Cloud コンソールでは、既存のサブネットのログボリュームを推定することにより、フローログを有効にする費用を見積もることができます。この推定値は、過去 7 日にわたり各サブネットで 5 秒間隔で取得されたフローに基づきます。また、各ログのサイズは、メタデータ アノテーションを有効にするかどうかによって異なります。
コンソール
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
費用を推定するサブネットをクリックします。
[編集] をクリックします。
[フローログ] で [オン] を選択します。
[ログを構成] をクリックします。
[1 日あたりの生成ログの推定数] で、推定値を確認します。
変更が保存されないように [キャンセル] をクリックします。
VPC フローログが有効になっているサブネットを表示する
VPC フローログが有効になっているネットワーク内のサブネットを確認できます。
コンソール
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
サブネットを表示する VPC ネットワークをクリックします。
[サブネット] タブをクリックし、[フローログ] 列を表示して、ロギングがオンかオフかを確認します。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
次のコマンドを実行します。
gcloud compute networks subnets list \ --project PROJECT_ID \ --network="NETWORK" \ --format="csv(name,region,logConfig.enable)"
次のように置き換えます。
PROJECT_ID
: クエリするプロジェクトの ID。NETWORK
: サブネットを含むネットワークの名前。
VPC フローログ パラメータを更新する
ログ サンプリング パラメータを変更できます。制御できるパラメータの詳細については、ログのサンプリングと処理をご覧ください。
メタデータ フィールドをカスタマイズするか、ログのフィルタリングを構成するには、gcloud CLI または API を使用します。
コンソール
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
更新するサブネットをクリックします。
[編集] をクリックします。
ログのサンプリングと集計を調整する場合は、[ログを構成] をクリックして次のいずれかを調整します。
- 集約の間隔。
- 最終ログエントリにメタデータを含めるかどうか。デフォルトでは、[メタデータを含める] にはすべてのフィールドが含まれます。
- サンプルレート。
100%
はすべてのエントリが保持されることを意味します。
[保存] をクリックします。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
次のコマンドを実行します。
gcloud compute networks subnets update SUBNET_NAME \ [--logging-aggregation-interval=AGGREGATION_INTERVAL] \ [--logging-flow-sampling=SAMPLE_RATE] \ [--logging-filter-expr=FILTER_EXPRESSION] \ [--logging-metadata=LOGGING_METADATA] \ [--logging-metadata-fields=METADATA_FIELDS] \
次のように置き換えます。
AGGREGATION_INTERVAL
: サブネットのフローログの集計間隔。間隔は、5 秒(デフォルト)、30 秒、1 分、5 分、10 分、15 分のいずれかに設定できます。SAMPLE_RATE
: フロー サンプリング レート。フロー サンプリングは、0.0
(サンプリングなし)から1.0
(すべてのログ)の範囲で設定できます。デフォルトは0.5
です。FILTER_EXPRESSION
: 保持するログを定義する式。式は 2,048 文字以内に制限されています。詳細については、ログのフィルタリングをご覧ください。LOGGING_METADATA
: ログに含めるメタデータ アノテーション。- すべてのメタデータ アノテーションを含める場合は、
include-all
を使用します。 - すべてのメタデータ アノテーションを除外するには、
exclude-all
を使用します(デフォルト)。 METADATA_FIELDS
で指定するメタデータ フィールドのカスタムリストを含める場合は、custom
を使用します。
- すべてのメタデータ アノテーションを含める場合は、
METADATA_FIELDS
: ログに含めるメタデータ フィールドのカンマ区切りのリスト。例:src_instance,dst_instance
LOGGING_METADATA
がcustom
に設定されている場合のみ設定できます。
API
ログ サンプリング フィールドを変更して、VPC フローログの動作を更新します。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "logConfig": { ...fields to modify }, "fingerprint": "SUBNETWORK_FINGERPRINT" }
次のように置き換えます。
PROJECT_ID
: サブネットが存在するプロジェクトの ID。REGION
: サブネットが配置されているリージョン。SUBNET_NAME
: 既存のサブネットの名前。SUBNET_FINGERPRINT
: 既存のサブネットのフィンガー プリント ID。サブネットの詳細を取得するときに指定します。- 変更可能なフィールドについては、サブネット作成時の VPC フローログの有効化を参照してください。
詳細については、subnetworks.patch
メソッドをご覧ください。
サブネットの VPC フローログを無効にする
コンソール
Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
更新するサブネットをクリックします。
[編集] をクリックします。
[フローログ] で [オフ] を選択します。
[保存] をクリックします。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
次のコマンドを実行します。
gcloud compute networks subnets update SUBNET_NAME \ --no-enable-flow-logs
API
ログレコードの収集を停止するには、サブネットの VPC フローログを無効にします。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "logConfig": { "enable": false }, "fingerprint": "SUBNETWORK_FINGERPRINT" }
次のように置き換えます。
PROJECT_ID
: サブネットが存在するプロジェクトの ID。REGION
: サブネットが配置されているリージョン。SUBNET_NAME
: 既存のサブネットの名前。SUBNET_FINGERPRINT
: 既存のサブネットのフィンガー プリント ID。サブネットの詳細を取得するときに指定します。
詳細については、subnetworks.patch
メソッドをご覧ください。
トラブルシューティング
フローログを有効にした場合でも無効として表示される
内部アプリケーション ロードバランサのプロキシ専用サブネットを構成し、
gcloud compute networks subnets
コマンドを使用して VPC フローログを有効にした場合、コマンドは成功したように見えますが、フローログは実際には有効になりません。--purpose=INTERNAL_HTTPS_LOAD_BALANCER
フラグも指定した場合、--enable-flow-logs
フラグは有効になりません。Google Cloud コンソールまたは API を使用してフローログを有効にすると、「Invalid value for field 'resource.enableFlowLogs': 'true'.Invalid field set in subnetwork with purpose INTERNAL_HTTPS_LOAD_BALANCER.」というエラー メッセージが表示されます。
プロキシ専用サブネットには VM がないため、VPC フローログはサポートされません。これは想定の挙動です。