参加 2021 年 DevOps 现状问卷调查,塑造软件运维的未来,让我们了解您的想法。

管理日志存储分区

本页面介绍如何创建和管理日志存储分区。

准备工作

如需开始使用日志存储分区,请执行以下操作:

  • 确保您熟悉日志存储分区
  • 确保您已为 Google Cloud 项目启用结算功能。
  • 验证您和您的 Cloud 项目成员是否具有正确的角色或权限来创建和管理 Cloud 项目日志存储分区。如需了解详情,请参阅本页面上的访问权限控制

管理存储分区

本部分介绍如何使用 gcloud 命令行工具或 Google Cloud Console 管理日志存储分区。

创建日志存储分区

您需要 logging.buckets.create 权限才能创建用户定义的日志存储分区。Logging Configuration Writer 角色可提供此权限。

您最多可以为每个 Cloud 项目创建 10 个存储分区。

如需为您的 Cloud 项目创建用户定义的日志存储分区,请完成以下步骤:

gcloud

如需在 Cloud 项目中创建日志存储分区,请运行 gcloud logging buckets create 命令:

gcloud logging buckets create BUCKET_ID --location=LOCATION OPTIONAL_FLAGS

例如:

gcloud logging buckets create my-bucket --location global --description "My first bucket"

控制台

如需在您的 Cloud 项目中创建日志存储分区,请完成以下步骤:

  1. 从“日志记录”菜单中选择日志存储

    转到“日志存储”

  2. 点击创建日志存储分区

  3. 输入存储分区的名称说明

  4. (可选)如需设置存储分区区域,请点击选择日志存储分区区域下拉菜单,然后选择想要存储分区所在的区域。如果您未选择区域,则此值会设置为 global,这意味着日志可以以物理方式存储在任何区域中。

  5. (可选)如需为存储分区中的日志设置自定义保留期限,请点击下一步

    保留字段中,输入您希望 Cloud Logging 保留日志的天数(介于 1 天到 3650 天之间)。 如果您不自定义保留期限,则默认值为 30 days

    您也可以稍后配置自定义保留期限

  6. 点击创建存储分区。您的新存储分区将显示在日志存储分区列表中。

创建存储分区后,您可以配置日志视图以控制哪些人可以访问新存储分区中的日志,以及可以访问哪些日志。

更新日志存储分区

必须具有 logging.buckets.update 权限才能更新日志存储分区。Logging Configuration Writer 角色可提供此权限。您还可以创建具有更多有限权限的自定义角色。 如需查看 Logging 访问权限控制的完整列表,请参阅访问权限控制

如需更新存储分区的特性,请完成以下步骤:

gcloud

如需更新存储分区的特性,请运行 gcloud logging buckets update 命令:

gcloud logging buckets update BUCKET_ID --location=LOCATION UPDATED_ATTRIBUTES

例如:

gcloud logging buckets update my-bucket --location=global --description "Updated description"

控制台

如需更新存储分区的特性,请完成以下步骤:

  1. 从“日志记录”菜单中选择日志存储

    转到“日志存储”

  2. 找到要更新的存储分区,然后点击更多 ()。

  3. 选择修改存储分区

  4. 根据需要修改存储分区。

  5. 点击更新存储分区

锁定日志存储分区

当您针对更新锁定存储分区时,其中包括锁定存储分区的保留政策。保留政策锁定后,您将无法删除存储分区,除非存储分区中的每个日志都已达到存储分区的保留期限。

必须具有 logging.buckets.update 权限才能针对更新锁定日志存储分区。Logging Configuration Writer 角色可提供此权限。您还可以创建具有更多有限权限的自定义角色。 如需查看 Logging 访问权限控制的完整列表,请参阅访问权限控制

如需阻止任何人更新或删除日志存储分区,请锁定该存储分区。如需锁定存储分区,请执行以下操作:

gcloud

如需锁定您的存储分区,请运行带有 --locked 标志的 gcloud logging buckets update 命令:

gcloud logging buckets update BUCKET_ID --location=LOCATION --locked

例如:

gcloud logging buckets update my-bucket --location=global --locked

控制台

Cloud Console 不支持锁定日志存储分区。

列出日志存储分区

必须具有 logging.buckets.list 权限才能列出日志存储分区详细信息。Logging Configuration Writer 角色可提供此权限。您还可以创建具有更多有限权限的自定义角色。 如需查看 Logging 访问权限控制的完整列表,请参阅访问权限控制

如需列出与 Cloud 项目关联的日志存储分区,并查看诸如保留设置等详细信息,请执行以下操作:

gcloud

运行 gcloud logging buckets list 命令:

gcloud logging buckets list

您会看到日志存储分区的以下特性:

  • LOCATION:用于存储存储分区数据的区域。
  • BUCKET_ID:创建存储分区时,为存储分区指定的名称。
  • RETENTION_DAYS:Cloud Logging 将存储分区数据存储的天数。
  • LIFECYCLE_STATE:指示一个存储分区是否在等待 Cloud Logging 删除
  • LOCKED:存储分区处于锁定状态还是解锁状态。
  • CREATE_TIME:指示存储分区创建时间的时间戳。
  • UPDATE_TIME:指示上次修改存储分区的时间戳。

您还可以仅查看一个存储分区的特性。例如,如需查看 _Default 日志存储分区的详细信息,请运行 gcloud logging buckets describe 命令:

gcloud logging buckets describe _Default --location=global

控制台

转到日志存储页面:

转到“日志存储”

您会看到一个日志存储分区表,其中列出了与当前 Cloud 项目关联的存储分区。

该表列出了每个日志存储分区的以下特性:

  • 名称:创建存储分区时,为存储分区指定的名称。
  • 说明:创建存储分区时为其分配的说明。
  • 保留期限:Cloud Logging 将对存储分区数据进行存储的天数。
  • 区域:用于对存储分区数据的地理位置进行存储。
  • 状态:存储分区处于锁定状态还是解锁状态。

如果某个存储分区正在等待 Cloud Logging 删除,其表条目将使用警告 注明。

查看日志存储分区详情

必须具有 logging.buckets.get 权限才能查看日志存储分区的详细信息。Logging Configuration Writer 角色可提供此权限。您还可以创建具有更多有限权限的自定义角色。 如需查看 Logging 访问权限控制的完整列表,请参阅访问权限控制

如需查看单个日志存储分区的详细信息,请执行以下操作:

gcloud

运行 gcloud logging buckets describe 命令:

gcloud logging buckets describe _Default --location=global

您会看到日志存储分区的以下特性:

  • createTime:指示存储分区创建时间的时间戳。
  • description:创建存储分区时为其指定的说明。
  • lifecycleState:指示一个存储分区是否在等待 Cloud Logging 删除
  • name:创建存储分区时,为存储分区指定的名称。
  • retentionDays:Cloud Logging 将存储分区数据存储的天数。
  • updateTime:指示上次修改存储分区的时间戳。

控制台

转到日志存储页面:

转到“日志存储”

在日志存储分区上,点击更多 > 查看存储分区详情

对话框会列出日志存储分区的以下特性:

  • 名称:创建存储分区时,为存储分区指定的名称。
  • 说明:创建存储分区时为其分配的说明。
  • 保留期限:Cloud Logging 将对存储分区数据进行存储的天数。
  • 区域:用于对存储分区数据的地理位置进行存储。

删除日志存储分区

必须具有 logging.buckets.delete 权限才能删除日志存储分区。Logging Configuration Writer 角色可提供此权限。您还可以创建具有更多有限权限的自定义角色。 如需查看 Logging 访问权限控制的完整列表,请参阅访问权限控制

如需删除日志存储分区,请执行以下操作:

gcloud

如需删除日志存储分区,请运行 gcloud logging buckets delete 命令:

gcloud logging buckets delete BUCKET_ID --location=LOCATION

控制台

如需删除日志存储分区,请完成以下步骤:

  1. 从“日志记录”菜单中选择日志存储

    转到“日志存储”

  2. 找到要删除的存储分区,然后点击更多 ()。

  3. 选择删除存储分区

  4. 在确认面板上,点击删除

  5. 日志存储页面上,会有一个指示符显示该存储分区正在等待删除。该存储分区(包括其中的所有日志)将在 7 天后删除。

恢复已删除的日志存储分区

必须具有 logging.buckets.undelete 权限才能恢复日志存储分区。Logging Configuration Writer 角色可提供此权限。您还可以创建具有更多有限权限的自定义角色。 如需查看 Logging 访问权限控制的完整列表,请参阅访问权限控制

您可以恢复或取消删除处于待删除状态的日志存储分区。如需恢复日志存储分区,请执行以下操作:

gcloud

如需恢复处于待删除状态的日志存储分区,请运行 gcloud logging buckets undelete 命令:

gcloud logging buckets undelete BUCKET_ID --location=LOCATION

控制台

如需恢复处于待删除状态的日志存储分区,请完成以下步骤:

  1. 从“日志记录”菜单中选择日志存储

    转到“日志存储”

  2. 找到要恢复的存储分区,然后点击更多 ()。

  3. 选择恢复已删除的存储分区

  4. 在确认面板上,点击恢复

  5. 日志存储页面上,待删除指示符会从您的存储分区移除。

将日志写入日志存储分区

必须具有 logging.logEntries.create 权限才能将日志条目写入 Cloud 项目、文件夹或组织。Logs WriterLogging Admin 角色可提供此权限。如需查看 Logging 访问权限控制的完整列表,请参阅访问权限控制

您无法直接将日志写入日志存储分区,而是将日志写入 Cloud 项目、文件夹或组织。然后,父级资源中的接收器会将日志路由到目标位置,包括日志存储分区。当日志与接收器的过滤条件匹配并且接收器有权将日志路由到日志存储分区时,接收器会将日志路由到日志存储分区目标位置。

如果日志接收器将日志路由到同一 Cloud 项目中的日志存储分区,则日志接收器不需要权限。

如果日志接收器将日志路由到不同 Cloud 项目中的日志存储分区,则您必须向日志接收器授予 logging.buckets.write 权限。如需在包含日志存储分区的 Cloud 项目中授予此权限,请使用 Logs Bucket Writer 角色。您应使用与特定日志存储分区匹配的 IAM 条件为日志接收器的服务帐号授予此角色。

如需了解如何为服务帐号授予向其他 Cloud 项目中的日志存储分区写入数据的权限,请参阅目标位置权限

从日志存储分区读取日志

必须具有 logging.views.listLogs 权限才能从日志存储分区读取日志。Logs View Accessor 角色可提供此权限。如需查看 Logging 访问权限控制的完整列表,请参阅访问权限控制

每个日志存储分区都包含一组日志视图。如需从日志存储分区读取日志,您需要能够访问日志存储分区中的日志视图。如需详细了解日志视图,请参阅管理日志视图

建议使用 IAM 条件设置这些权限。如需详细了解如何使用 IAM 条件将用户添加到日志视图,请参阅将用户添加到日志视图中

如需从日志存储分区读取日志,请执行以下操作:

gcloud

如需从日志存储分区中读取日志,请运行 gcloud logging read 命令:

gcloud logging read --bucket=BUCKET_ID --location=LOCATION --view=VIEW_ID

控制台

如需了解如何从日志存储分区读取日志,请参阅优化范围

配置自定义保留期限

创建日志存储分区时,您可以选择自定义 Cloud Logging 存储存储分区日志的时间段。您可以为任何用户定义的日志存储分区以及 _Default 日志存储分区配置保留期限。

如需更新日志存储分区的保留期限,请执行以下操作:

gcloud

如需更新 _Default 日志存储分区的保留期限,请在为 RETENTION_DAYS 设置值后运行以下 gcloud 命令行工具命令:

gcloud logging buckets update _Default --location=global --retention-days=RETENTION_DAYS

例如,如需在 _Default 存储分区中保留日志一年,请运行以下命令:

gcloud logging buckets update _Default --location=global --retention-days=365

控制台

如需更新日志存储分区的保留期限,请完成以下步骤:

  1. 从“日志记录”菜单中选择日志存储

    转到“日志存储”

  2. 找到要更新的存储分区,然后点击更多 ()。

  3. 选择修改存储分区

  4. 保留字段中,输入您希望 Cloud Logging 保留日志的天数(介于 1 天到 3650 天之间)。

  5. 点击更新存储分区。 新的保留时长会显示在日志存储分区列表中。

访问权限控制机制

Identity and Access Management 角色和权限管理对 Logging 数据的访问权限。下面简要介绍了 Cloud 项目成员访问日志存储分区所需的常见角色和权限。

Cloud Logging 建议您在配置 Identity and Access Management 角色和权限时限制特权。如需了解详情,请参阅安全使用 IAM

日志存储分区活动 用户访问权限 IAM 权限 IAM 角色和推荐的访问权限控制设置
管理日志存储分区配置 谁可以创建、列出、更新、删除、取消删除和查看日志存储分区的详细信息。 logging.buckets.{create,list,get,update,delete,undelete} Logging Configuration WriterLogging Admin 角色可提供这些权限。您还可以创建具有更多有限权限的自定义角色。
将日志条目写入日志存储分区 谁可以将日志条目写入特定日志存储分区。 logging.buckets.write

如果日志接收器将日志条目路由到同一 Cloud 项目中的日志存储分区,则日志接收器不需要权限。

如果日志接收器将日志路由到不同 Cloud 项目中的日志存储分区,则您必须向日志接收器授予 logging.buckets.write 权限。使用 Logs Bucket Writer 角色在包含日志存储分区的 Cloud 项目中授予此权限。您应使用与特定日志存储分区匹配的 IAM 条件为日志接收器的服务帐号授予此角色。

如需查看有关使用 gcloud 工具为日志接收器设置 IAM 条件的示例,请参阅将一个项目中的日志路由到其他项目中的存储分区

从日志存储分区读取日志条目 谁可以使用日志视图在特定日志存储分区中查看日志条目。 logging.views.{access,listLogs,listResourceKeys,listResourceValues} 使用 Logs View Accessor 角色可授予此权限。您应使用与特定日志视图匹配的 IAM 条件授予此角色。

如需了解如何在日志视图上设置此 IAM 条件,请参阅将用户添加到日志视图中

如需查看 Logging 访问权限控制的完整列表,请参阅访问权限控制

问题排查和常见问题

如果您在使用日志存储分区时遇到问题,请参阅以下问题排查步骤以及常见问题解答。

为什么我无法删除此存储分区?

首先,确保您拥有正确的权限来删除存储分区。

接下来,通过列出存储分区的特性来确定存储分区是否已锁定。如果存储分区已被锁定,请检查存储分区的保留期限。在存储分区中的所有日志都达到存储分区的保留期限之前,您无法删除锁定的存储分区。

为什么即使我从 _Default 接收器中排除了 Cloud 项目的日志,但我还是会看到它们?

您正在查看集中式 Cloud 项目的日志存储分区中的日志,其中汇总了整个组织中的日志。

如果您正在集中式 Cloud 项目中访问日志,并看到已从 _Default 接收器中排除的日志,则您可能是在以下条件之一下查看日志:

  • 使用旧版日志查看器查看日志,这不支持查看集中式日志。

    如需排查此问题,请改为使用日志浏览器。

  • 优化范围面板中选择了按 Cloud 项目确定范围的情况下,使用日志浏览器查看日志,无论您将日志存储在何处,该面板都会显示项目生成的日志。

    如需排查此问题,请改为在 Logs Explorer 的优化范围面板中选择按存储划分的范围,然后选择 Cloud 项目中的 _Default 存储分区。您应该不会再看到已排除的日志。

为什么我无法为日志存储分区创建基于日志的指标?

基于日志的指标仅适用于单个 Google Cloud 项目。不能为日志存储分区或其他 Google Cloud 资源(例如 Cloud Billing 帐号或组织)创建这些资源。

后续步骤

如需了解日志存储分区 API 方法,请参阅 LogBucket 参考文档。

如需了解如何使用日志存储分区解决常见用例,请参阅以下主题: