路由和存储概览

本文档介绍了 Cloud Logging 如何处理日志条目,以及 Logging 路由和存储的关键组件。路由是指 Cloud Logging 用于确定如何处理新到达的日志条目的过程。您可以将日志条目路由到目的地,例如用于存储日志条目的 Logging 存储分区,或路由到 Pub/Sub。如需将日志导出到第三方目标位置,请将您的日志路由到 Pub/Sub 主题,然后授权第三方目标位置订阅 Pub/Sub 主题。

概括来讲,了解 Cloud Logging 如何路由和存储日志条目:

演示 Cloud Logging 如何路由日志条目的图。

使用日志路由器路由日志

以下部分介绍了 Logging 如何使用接收器通过日志路由器路由日志。

日志路由器

在调用 entries.write 期间,日志条目会发送到 logName 字段中指定的 Google Cloud 资源

Cloud Logging 使用 Cloud Logging API 接收日志条目,并流经日志路由器。日志路由器中的接收器会根据现有包含过滤器排除过滤器检查每个日志条目,以确定日志条目应发送到哪些目标位置(包括 Cloud Logging 存储桶)。您可以使用接收器的组合将日志路由到多个目标位置。

日志路由器会暂时存储日志。此行为可以缓冲在接收器将日志路由到目标位置时可能发生的临时中断和中断。这种缓冲无法防范接收器配置错误。如果接收器配置不正确,则 Logging 会舍弃这些日志,生成错误日志,并发送电子邮件通知您接收器配置错误。

请注意,日志路由器的临时存储不同于 Logging 存储分区提供的长期存储。

系统将舍弃时间戳超过过去日志保留期限或未来超过 24 小时的传入日志条目。

接收器

接收器控制 Cloud Logging 路由日志的方式。通过接收器,您可以将部分或全部日志路由到支持的目标位置。您可能希望控制日志路由方式的一些原因如下所示:

  • 存储不太可能读取但必须出于合规性目的而保留的日志。
  • 以对您有用的格式将日志整理到存储桶中。
  • 针对日志使用大数据分析工具。
  • 将日志流式传输到其他应用、其他存储库或第三方。例如,如果要从 Google Cloud 导出日志,以便在第三方平台上查看这些日志,请配置接收器以将日志条目路由到 Pub/Sub。

接收器属于给定的 Google Cloud 资源:Google Cloud 项目、结算账号、文件夹和组织。资源收到日志条目后,会根据该资源中包含的接收器来路由日志条目;如果已启用,则是属于资源层次结构下的任何祖先接收器日志条目会被发送到与每个匹配接收器关联的目标位置。

Cloud Logging 为每个 Google Cloud 项目、结算帐号、文件夹和组织提供两个预定义接收器:_Required_Default。在资源中生成的所有日志都会通过这两个接收器自动处理,然后存储在相应命名的 _Required_Default 存储桶中。

接收器彼此独立运行。无论预定义的接收器如何处理日志条目,您都可以创建自己的接收器,将部分或全部日志路由到各种受支持的目标位置或不由 Cloud Logging 存储。

每个接收器的路由行为通过为接收器配置包含项过滤条件排除项过滤条件进行控制。根据接收器的配置,Cloud Logging 接收的每个日志条目都属于以下一个或多个类别:

  • 存储在 Cloud Logging 中且不路由到其他位置。

  • 存储在 Cloud Logging 中且路由到受支持的目标位置。

  • 未存储在 Cloud Logging 中,但路由到受支持的目标位置。

  • 既未存储在 Cloud Logging 中,也未路由到其他位置。

您通常是在 Google Cloud 项目级创建接收器,但如果要合并并路由 Google Cloud 组织或文件夹包含的资源中的日志,可以创建汇总接收器

您无法路由在创建接收器之前 Logging 收到的日志条目,因为在日志通过 Logging API 传递时会进行路由,并且新的路由规则仅适用于在创建这些规则后写入的日志。如果您需要追溯路由日志条目,请参阅复制日志

包含项过滤条件

对于任何新的接收器,如果未指定过滤条件,则所有日志都会匹配并路由到接收器的目标位置。您可设置包含过滤器来配置接收器,从而选择特定日志。您还可以设置一个或多个排除过滤器,从接收器目标位置排除日志。

配置接收器时,您可以使用 Logging 查询语言来创建包含过滤器。接收器还可以包含多个排除过滤器

Logging 收到的每个日志条目都会根据以下过滤规则进行路由:

  • 接收器的排除项过滤条件会覆盖其定义的任何包含项过滤条件。如果日志与接收器中的任何排除项过滤条件匹配,则无论包含项过滤条件如何定义,日志都与接收器不匹配。日志条目不会路由到接收器的目标位置。

  • 如果接收器没有包含过滤器件,则会出现以下情况:

    • 如果日志条目与任何排除项过滤条件匹配,则不会路由到接收器的目标位置。
    • 如果日志条目与任何排除过滤器都不匹配,系统会将其路由到接收器的目标位置。如果包含过滤器为空,系统会选择所有日志。
  • 如果接收器包含包含项过滤条件,则会出现以下情况:

    • 如果日志条目与包含项过滤条件匹配,则会路由到接收器的目标位置。
    • 如果日志条目与包含项过滤条件不匹配,则不会路由到接收器的目标位置。

排除过滤条件

创建接收器时,您可以设置多个排除过滤器。借助排除过滤条件,您可以排除匹配的日志条目,使其不路由到接收器的目标位置或存储在日志存储桶中。您可以使用 Logging 查询语言创建排除项过滤器。

日志条目会在 Logging API 收到后排除,因此这些日志条目会消耗 entries.write API 配额。您无法通过排除日志条目来减少 entries.write API 调用的次数。

日志浏览器中不提供排除的日志条目。

未路由到至少一个日志存储桶的日志条目(无论是明确使用排除项过滤条件,还是由于与具有 Logging 存储目标位置的任何接收器不匹配)才会从 Error Reporting 中排除。因此,这些日志无法帮助排查故障。

用户定义的基于日志的指标是根据包含和排除的日志中的日志条目计算的。如需了解详情,请参阅监控日志

支持的目标

您可以使用日志路由器将某些日志路由到任何 Google Cloud 项目中受支持的目标位置。Logging 支持以下接收器目标:

  • Cloud Logging 存储桶:在 Cloud Logging 中提供存储空间。日志存储桶可以存储多个 Google Cloud 项目收到的日志条目。您可以将 Cloud Logging 数据与其他数据合并,方法是升级日志存储桶以使用 Log Analytics,然后创建关联的 BigQuery 数据集。如需了解如何查看日志存储分区中存储的日志条目,请参阅查询和查看日志概览以及查看路由到 Cloud Logging 存储分区的日志
  • BigQuery 数据集:提供 BigQuery 数据集中日志条目的存储。您可以对存储的日志条目使用大数据分析功能。如需将 Cloud Logging 数据与其他数据源合并,我们建议您升级日志存储分区以使用 Log Analytics,然后创建关联的 BigQuery 数据集。如需了解如何查看路由到 BigQuery 的日志条目,请参阅查看路由到 BigQuery 的日志
  • Cloud Storage 存储桶:提供 Cloud Storage 中的日志条目存储。日志条目存储为 JSON 文件。如需了解如何查看路由到 Cloud Storage 的日志条目,请参阅查看路由到 Cloud Storage 的日志
  • Pub/Sub 主题:为第三方集成提供支持。日志条目会格式化为 JSON,然后路由到 Pub/Sub 主题。如需了解如何查看路由到 Pub/Sub 的日志条目,请参阅查看路由到 Pub/Sub 的日志
  • Splunk:提供对 Splunk 的支持。您必须将日志条目路由到 Pub/Sub 主题,然后使用 Splunk 订阅该主题。
  • Google Cloud 项目:将日志条目路由到其他 Google Cloud 项目。将日志条目路由到其他 Google Cloud 项目时,目标项目的日志路由器会接收并处理日志条目。目标项目中的接收器决定了所接收日志条目的路由方式。当目标项目将日志条目路由到目标项目拥有的日志存储桶时,Error Reporting 可以分析这些日志条目。
  • 其他资源:将您的日志条目路由到其他项目中受支持的目标位置。如需了解要使用的路径,请参阅目标路径格式

如需了解详情,请参阅将日志路由到支持的目标位置

存储、查看和管理日志

以下部分详细介绍了日志如何存储在 Cloud Logging 中,以及如何查看和管理日志。

日志存储桶

Cloud Logging 使用日志存储桶作为 Google Cloud 项目、结算账号、文件夹和组织中的容器,用于存储和整理日志数据。您存储在 Cloud Logging 中的日志会编入索引、进行优化并传送,以便您可以实时分析日志。Cloud Logging 存储桶是与名称类似的 Cloud Storage 存储桶不同的存储实体。

对于每个 Google Cloud 项目、结算帐号、文件夹和组织,Logging 都会自动创建两个日志存储分区:_Required_Default。Logging 会自动创建名为 _Required_Default 的接收器,在默认配置中,这些接收器会将日志路由到相应命名的存储桶。

您可以停用 _Default 接收器,该接收器会将日志路由到 _Default 日志存储桶。您可以更改为任何新的 Google Cloud 项目或文件夹创建的 _Default 接收器的行为。如需了解详情,请参阅为组织和文件夹配置默认设置

您无法更改 _Required 存储桶的路由规则。

此外,您还可以为任何 Google Cloud 项目创建用户定义的存储分区

您可以创建接收器,以将所有或一部分日志路由到任何日志存储桶。这种灵活性让您可以选择存储日志的 Google Cloud 项目,以及其中存储了哪些其他日志。

如需了解详情,请参阅配置日志存储分区

_Required 日志存储桶

Cloud Logging 会自动将以下类型的日志路由到 _Required 存储桶:

Cloud Logging 会将 _Required 存储桶中的日志保留 400 天;您无法更改此保留期限。

您无法修改或删除 _Required 存储桶。您无法停用将接收器路由到 _Required 存储桶的 _Required 接收器。

_Default 日志存储桶

除非您停用或修改 _Default 接收器,否则未存储在 _Required 存储桶中的任何日志条目都会由 _Default 接收器路由到 _Default 存储桶。如需了解如何修改接收器,请参阅管理接收器

例如,Cloud Logging 会自动将以下类型的日志路由到 _Default 存储桶:

除非您为该存储桶配置自定义保留,否则 Cloud Logging 会将 _Default 存储桶中的日志保留 30 天。

您无法删除 _Default 存储桶。

用户定义的日志存储分区

您还可以在任何 Google Cloud 项目中创建用户定义的日志存储分区。通过将接收器应用于用户定义的日志存储桶,您可以将日志的任何子集路由到任何日志存储桶,从而选择您的日志要存储在哪个 Google Cloud 项目中,以及与其一起存储哪些其他日志。

例如,对于 Project-A 中生成的任何日志,您都可以配置接收器,以将该日志路由到 Project-A 或 Project-B 中用户定义的存储分区。

您可以为存储桶配置自定义保留期限

如需了解如何管理用户定义的日志存储分区(包括删除或更新这些日志存储分区),请参阅配置和管理日志存储分区

区域化

日志存储桶属于区域性资源。对日志进行存储、编入索引和搜索的基础架构位于特定的地理位置。Google 管理着该基础架构,以便您的应用在该区域内的各可用区之间以冗余方式提供。

创建日志存储桶或设置组织级区域级政策时,您可以选择将日志存储在以下任一区域中:

非洲

区域名称 区域说明
africa-south1 约翰内斯堡

美洲

区域名称 区域说明
northamerica-northeast1 蒙特利尔
northamerica-northeast2 多伦多
southamerica-east1 圣保罗
southamerica-west1 圣地亚哥
us-central1 爱荷华
us-east1 南卡罗来纳
us-east4 北弗吉尼亚
us-east5 哥伦布
us-south1 达拉斯
us-west1 俄勒冈
us-west2 洛杉矶
us-west3 盐湖城
us-west4 拉斯维加斯

亚太地区

区域名称 区域说明
asia-east1 中国台湾
asia-east2 香港
asia-northeast1 东京
asia-northeast2 大阪
asia-northeast3 首尔
asia-south1 孟买
asia-south2 德里
asia-southeast1 新加坡
asia-southeast2 雅加达
australia-southeast1 悉尼
australia-southeast2 墨尔本

欧洲

区域名称 区域说明
europe-central2 华沙
europe-north1 芬兰
europe-southwest1 马德里
europe-west1 比利时
europe-west2 伦敦
europe-west3 法兰克福
europe-west4 荷兰
europe-west6 苏黎世
europe-west8 米兰
europe-west9 巴黎
europe-west10 柏林
europe-west12 都灵

中东

区域名称 区域说明
me-central1 多哈
me-central2 达曼
me-west1 特拉维夫

其他

区域名称 区域说明
eu 存储在欧盟数据中心内的日志;没有额外的冗余保证
us 存储在美国境内的数据中心的日志;不保证额外的冗余
global 存储在全球任何数据中心的日志;没有额外的冗余保证

除了这些区域之外,您还可以将位置设置为 global,这意味着您无需指定日志的物理存储位置。

您可以将特定存储区域自动应用于在组织或文件夹中创建的 _Default_Required 存储分区。如需了解详情,请参阅为组织和文件夹配置默认设置

如需详细了解数据区域性以及日志数据的存储位置,请参阅了解数据区域

组织政策

您可以创建组织政策,以确保您的组织满足法规遵从和监管需求。使用组织政策,您可以指定您的组织可在哪些区域创建新的日志存储桶。您还可以限制您的组织不在指定区域创建新的日志存储桶。

Cloud Logging 不会对现有日志存储分区强制执行新创建的组织政策;它只会对新的日志存储分区强制执行该政策。

如需了解如何创建基于位置的组织政策,请参阅限制资源位置

此外,您可以为组织或文件夹中的 _Default_Required 存储分区配置默认存储位置。如果您配置的组织政策来限制数据的存储位置,则必须确保您指定的默认存储位置与该限制条件一致。如需了解详情,请参阅为组织和文件夹配置默认设置

保留

Cloud Logging 根据适用于保留日志的日志存储桶类型的保留规则保留日志。

您可以配置 Cloud Logging,将日志保留期限设为 1 到 3650 天之间的任意值。自定义保留规则适用于存储桶中的所有日志,无论日志类型如何或日志是否从其他位置复制过。

如需了解如何为日志存储桶设置保留规则,请参阅配置自定义保留

如需了解不同类型日志的保留期限,请参阅配额和限制

日志视图

通过日志视图,您可以授予用户仅对日志存储桶中存储的部分日志的访问权限。如需了解如何配置日志视图以及如何授予对特定日志视图的访问权限,请参阅在日志存储桶上配置日志视图

对于每个日志存储桶,Cloud Logging 会自动创建 _AllLogs 视图,以显示该存储桶中存储的所有日志。Cloud Logging 还会为 _Default 存储桶创建一个名为 _Default 的视图。_Default 存储桶的 _Default 视图会显示除数据访问审核日志之外的所有日志。_AllLogs_Default 视图无法修改,也无法删除 _Default 日志视图。

自定义日志视图提供了一种高级且精细的方式来控制对日志数据的访问权限。例如,设想一个您将组织的所有日志存储在中央 Google Cloud 项目中的场景。由于日志存储分区可以包含来自多个 Google Cloud 项目的日志,因此您可能希望控制不同的用户可以查看哪些 Google Cloud 项目中的日志。使用自定义日志视图,您可以让一位用户仅访问单个 Google Cloud 项目中的日志,而向另一用户授予对所有 Google Cloud 项目中的日志的访问权限。

在 Google Cloud 生态系统中使用日志

以下部分介绍了如何在更广泛的 Google Cloud 中使用日志。

基于日志的指标

基于日志的指标是从日志条目的内容衍生的 Cloud Monitoring 指标。例如,如果 Cloud Logging 收到某个 Google Cloud 项目的日志条目与该 Google Cloud 项目的一个指标的过滤条件相匹配,则该日志条目将计入指标数据中。

基于日志的指标与路由的交互方式不同,具体取决于基于日志的指标是由系统还是由您定义。以下部分介绍了这些差异。

基于日志的指标和排除项过滤器

接收器排除过滤条件适用于系统定义的基于日志的指标,此类指标仅统计存储在日志存储分区中的日志。

接收器排除过滤器不适用于用户定义的基于日志的指标。即使您将日志排除在任何 Logging 存储分区中,您也可以查看这些日志计入这些指标。

基于日志的指标的范围

系统定义的基于日志的指标适用于 Google Cloud 项目级。这些指标由日志路由器计算,并且仅适用于接收这些指标的 Google Cloud 项目中的日志。

用户定义的基于日志的指标可以应用于 Google Cloud 项目级别或特定日志存储桶级别:

  • 项目级指标的计算方式类似于系统定义的基于日志的指标;这些用户定义的基于日志的指标仅适用于接收这些指标的 Google Cloud 项目中的日志。
  • 存储桶级指标适用于接收日志存储桶中的日志,无论日志条目源自哪个 Google Cloud 项目

    借助基于日志的存储桶级指标,您可以创建基于日志的指标,以便在以下情况下评估日志:

    • 从一个项目路由到另一个项目中的存储桶的日志。
    • 通过汇总接收器路由到存储桶的日志。

如需了解详情,请参阅基于日志的指标概览

查找受支持的目标位置的日志

如需了解路由日志条目的格式以及日志在目标位置的整理方式,请参阅查看接收器目标位置的日志

常见使用场景

如需处理路由和存储日志的常见使用场景,请参阅以下文档和教程:

合规性需求

如需了解使用路由进行数据治理的最佳实践,请参阅以下文档:

使用 IAM 控制访问权限

如需了解如何使用 Identity and Access Management (IAM) 角色和权限来控制对 Cloud Logging 数据的访问权限,请参阅使用 IAM 进行访问权限控制

价格

Cloud Logging 不会将日志路由到受支持的目的地;但是,该目的地可能会产生费用。除 _Required 日志存储桶外,Cloud Logging 会针对将日志流式传输到日志存储桶以及超出日志存储桶默认保留期限的存储收取费用。

Cloud Logging 不会就复制日志或通过日志浏览器页面或日志分析页面发出的查询收费。

有关详情,请参阅以下文档:

后续步骤

为帮助您路由和存储 Cloud Logging 数据,请参阅以下文档: