您可以创建一个汇总接收器,以便从 Google Cloud 组织的所有项目、文件夹和结算帐号中导出日志条目。例如,您可以将组织项目中的审核日志条目汇总并导出到一个中心位置。
概念
如果没有汇总接收器功能,接收器只能从创建接收器的确切资源(Google Cloud 项目、组织、文件夹或结算帐号)中导出日志条目。
如需使用汇总接收器功能,请在 Google Cloud 组织或文件夹中创建接收器,并将接收器的 includeChildren
参数设置为 True
。然后,该接收器就可以从组织或文件夹中导出日志条目,也可以(以递归方式)从其包含的任何文件夹、结算帐号或项目中导出日志条目。您可以使用接收器的过滤条件指定项目、资源类型或命名日志中的日志条目。
如需了解接收器及其创建方法,请转到导出 API 中的日志和使用命令行工具创建接收器。
创建导出目标位置
您必须首先通过 gcloud
命令行工具、Cloud Console 或 Google Cloud API 创建日志接收器的目标位置,然后再创建接收器。
接收器支持的目标位置如下:
如果日志接收器中的服务帐号有权向目标位置写入内容,则可以在任何 Google Cloud 项目、任何组织中创建目标位置。
创建汇总接收器
要在 Google Cloud 文件夹、结算帐号或组织中创建汇总接收器,您可以使用 Cloud Logging API 或 gcloud
命令行工具。
Logging API
如需创建日志记录接收器,请使用 Logging API 中的 organizations.sinks.create、folders.sinks.create 或 billingAccounts.sinks.create。请按以下步骤准备方法的参数:
将
parent
参数设置为要在其中创建接收器的 Google Cloud 组织、文件夹或结算帐号。parent 必须是以下三项之一:organizations/[ORGANIZATION_ID]
folders/[FOLDER_ID]
billingAccounts/[BILLING_ACCOUNT_ID]
在方法请求正文中的 LogSink 对象中:
将
includeChildren
设置为True
。设置
query
属性。请注意,您所有项目中的日志条目都将与该查询进行匹配。如需查看一些实用查询示例,请转到将查询与汇总接收器结合使用。
调用 organizations.sinks.create 或 folders.sinks.create 以创建接收器。
从 API 响应中检索用于创建接收器的服务帐号名称。
授权该服务帐号向接收器目标位置写入内容。
如果您无权对接收器目标位置进行更改,请将该服务帐号名称发送给可以代您执行更改的人员。
如需详细了解如何为资源授予服务帐号权限,请查看将角色授予服务帐号。
gcloud
如需创建日志记录接收器,请使用 logging sinks create
命令。
提供接收器名称、接收器目标位置、日志查询以及文件夹、结算帐号或组织的 ID。
例如,在文件夹级层设置汇总接收器,如下所示:
gcloud logging sinks create [SINK_NAME] \ storage.googleapis.com/[BUCKET_NAME] --include-children \ --folder=[FOLDER_ID] --log-filter="logName:activity"
注意:
如需在组织级层创建接收器,请将
--folder=[FOLDER_ID]
替换为--organization=[ORGANIZATION_ID]
。如需在结算帐号级层创建接收器,则将其替换为--billing-account=[BILLING_ACCOUNT_ID]
。如需让接收器包含组织内的所有项目,必须设置
--include-children
标志,即使--organization
标志传递给create
也是如此。如果将此标志设置为false
(默认值),接收器将仅从主机资源导出日志。您必须具有 parent 的 Logs Configuration Writer IAM 角色才能创建接收器。如需详细了解 Logging IAM 角色,请参阅访问权限控制指南。
如需查看一些实用查询示例,请转到将查询与汇总接收器结合使用。
从命令输出中检索用于创建接收器的服务帐号名称。
授权该服务帐号向接收器目标位置写入内容。
如果您无权对接收器目标位置进行更改,请将该服务帐号名称发送给可以代您执行更改的人员。
如需详细了解如何为资源授予服务帐号权限,请查看将角色授予服务帐号。
将过滤条件与汇总接收器结合使用
与任何接收器一样,汇总接收器中包含一个用于选择单个日志条目的过滤条件。如需详细了解过滤条件,请转到日志记录查询语言。
以下是一些在使用汇总接收器功能时有用的过滤条件比较示例。部分示例使用以下表示法:
:
是子字符串运算符。请勿将其替换为=
运算符。...
表示任何其他查询比较。- 变量用括号 (
[]
) 表示。请将它们替换为有效值。
选择导出来源
如需从特定项目、文件夹或组织中导出日志,请使用以下示例比较之一:
logName:"projects/[PROJECT_ID]/logs/" AND ...
logName:("projects/[PROJECT_A_ID]/logs/" OR "projects/[PROJECT_B_ID]/logs/") AND ...
logName:"folders/[FOLDER_ID]/logs/" AND ...
logName:"organizations/[ORGANIZATION_ID]/logs/" AND ...
选择资源
如仅需从项目中的某个特定资源导出日志,请使用多项比较来准确指定资源:
logName:"projects/[PROJECT_ID]/logs" AND resource.type=[RESOURCE_TYPE] AND resource.labels.instance_id=[INSTANCE_ID]
如需查看资源类型列表,请转到受监控的资源类型。
日志条目采样
如需导出随机选取的日志条目,请添加 sample
内置函数。例如,仅导出与当前查询匹配的 10% 的日志条目,请使用以下添加函数:
sample(insertId, 0.10) AND ...
如需了解详情,请查看 sample
函数。
如需详细了解 Cloud Logging 查询,请参阅日志记录查询语言。
价格
导出的日志不会产生 Cloud Logging 费用,但可能会产生目标位置费用。如需了解详情,请查看相应产品的价格页面: