配置 VPC 流日志
本页面介绍了如何配置 VPC 流日志。本页面假定您熟悉 VPC 流日志和VPC 流日志记录简介中介绍的概念。
启用 VPC 流日志
启用 VPC 流日志时,可以为子网中的所有虚拟机启用日志记录。但是,您可以减少写入日志记录的信息量。有关您可以控制的参数的详细信息,请参阅 日志采样和处理。
如需自定义元数据字段或配置日志过滤,请使用 Google Cloud CLI 或 API。
创建子网时启用 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 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
可以排除所有元数据注解(默认)。 - 使用
custom
可以包括您在METADATA_FIELDS
中指定的元数据字段的自定义列表。
- 使用
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
可以排除所有元数据注解(默认)。 - 使用
custom
可以包括您在METADATA_FIELDS
中指定的元数据字段的自定义列表。
- 使用
METADATA_FIELDS
:设置metadata: CUSTOM_METADATA
后要捕获的元数据字段。这是一个以英文逗号分隔的元数据字段列表,例如src_instance, src_vpc.project_id
。IP_RANGE
:子网的主要内部 IP 地址范围。NETWORK_URL
:将在其中创建子网的 VPC 网络的网址。SUBNET_NAME
:子网的名称。
如需了解详情,请参阅 subnetworks.insert
方法。
Terraform
您可以使用 Terraform 模块创建自定义模式 VPC 网络和子网。
以下示例会创建三个子网,如下所示:
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
可以排除所有元数据注解(默认)。 - 使用
custom
可以包括您在METADATA_FIELDS
中指定的元数据字段的自定义列表。
- 使用
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 网络页面。
点击要为其估算费用的子网。
点击修改。
对于流日志,选择开启。
点击配置日志。
查看估算的每日生成日志量,以了解估算值。
点击取消以免保存任何更改。
查看哪些子网启用了 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
可以排除所有元数据注解(默认)。 - 使用
custom
可以包括您在METADATA_FIELDS
中指定的元数据字段的自定义列表。
- 使用
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 启用流日志时,您会看到错误消息:“字段 'resource.enableFlowLogs':'true' 的值无效。具有 INTERNAL_HTTPS_LOAD_BALANCER 用途的子网中设置的字段无效”。
由于代理专用子网没有虚拟机,因此 VPC 流日志不受支持。这是预期行为。