将日志路由到支持的目的地

本文档介绍如何创建和管理接收器,以将日志条目路由到支持的目标位置。

Cloud Logging 会自动为日志创建和管理服务账号 该接收器将日志存储桶路由到 当前 Google Cloud 项目你可以创建和管理服务账号 供多个项目中的接收器使用如需了解详情,请参阅 使用用户代管式服务账号配置日志接收器

概览

接收器控制 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 的日志
  • Pub/Sub 主题:为第三方集成提供支持。日志 将条目格式化为 JSON,然后路由到 Pub/Sub 主题。有关如何查看路由到以下实例的日志条目的信息: Pub/Sub,请参阅 查看路由到 Pub/Sub 的日志
  • Splunk:提供对 Splunk 的支持。 您必须将日志条目路由到 Pub/Sub 主题,然后 订阅该主题
  • Google Cloud 项目:将日志条目路由到其他 Google Cloud 项目。时间 您将日志条目路由到另一个 Google Cloud 项目,即目的地 项目的日志路由器会接收并处理日志条目。通过 目标项目中的接收器确定接收到的日志条目是如何 路由。Error Reporting 可以在目标位置 项目将这些日志条目路由到该目标位置拥有的日志存储桶 项目。
  • 其他资源:将您的日志条目路由到受支持的目的地, 属于不同的项目如需了解要使用的路径,请参阅 目标路径格式

接收器属于以下给定的 Google Cloud 资源:Google Cloud 项目、 结算账号、文件夹和组织。当资源收到日志条目时,它会根据该资源中包含的接收器来路由日志条目。日志条目会被发送到与每个匹配接收器关联的目标位置。

汇总接收器是一种接收器 从 Cloud Shell 中路由日志条目 Google Cloud 资源 组织或文件夹中包含的资源有关说明,请参阅 整理组织级日志并将其路由到支持的目标位置

要创建和管理接收器,您可以使用 Google Cloud 控制台 Cloud Logging API 和 Google Cloud CLI。使用 与其他方法相比,Google Cloud 控制台具有以下优势:

  • 在一个位置查看和管理所有接收器。
  • 在创建接收器之前,预览接收器的过滤条件所匹配的日志条目。
  • 为接收器创建接收器目标位置并为其授权。

准备工作

本文档中的说明介绍了如何在 Google Cloud 项目级。您还可以针对以下各项创建非汇总接收器: 结算账号、文件夹和组织。

如需开始使用,请执行以下操作:

  1. 确保您有一个 Google Cloud 项目,并且相关日志可在 日志浏览器

  2. 启用 Cloud Logging API。

    启用 API

  3. 要获取创建、修改或删除接收器所需的权限, 请让管理员向您授予 Logs Configuration Writer (roles/logging.configWriter) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限

    您也可以通过自定义角色或其他预定义角色来获取所需的权限。

    如需了解如何授予 IAM 角色,请参阅 Logging 访问权限控制指南

  4. 您在受支持的目标位置中拥有资源,或者能够创建资源。

    如需将日志路由到目的地,该目的地必须先存在, 创建接收器您可以使用任意 任何组织中的 Google Cloud 项目。

    将日志路由到 目标。如需了解详情,请参阅目标位置限制

创建接收器

以下是在 Google Cloud 项目中创建接收器的说明。 您可以不指定 Google Cloud 项目,而是指定结算账号 文件夹或组织

您可以为每个 Google Cloud 项目创建最多 200 个接收器。

创建接收器后,请确保 Logging 具有将日志写入接收器目标位置的相应权限;请参阅 设置目标位置权限

要创建接收器,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,转到日志路由器页面:

    前往日志路由器

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 选择现有的 Google Cloud 项目。

  3. 选择创建接收器

  4. 接收器详情面板中,输入以下详细信息:

    • 接收器名称:提供接收器的标识符。请注意,创建接收器后,您无法重命名接收器,但可以将其删除并创建新的接收器。

    • 接收器说明(可选):描述接收器的用途或使用场景。

  5. 接收器目标位置面板中,选择接收器服务并 选择接收器服务菜单选择目标位置。

    1. 如需将日志路由到同一 Google Cloud 项目中的服务,请执行以下操作: 从下列选项中选择一项:

      • Cloud Logging 存储桶:选择或创建 Logging 存储桶
      • BigQuery 数据集:选择或创建特定的 数据集来接收路由的日志。您还可以选择使用分区表
      • Cloud Storage 存储桶:选择或创建用于接收路由日志的特定 Cloud Storage 存储桶。
      • Pub/Sub 主题:选择或创建特定的 主题以接收路由的日志。
      • Splunk:为您的 Splunk 服务选择 Pub/Sub 主题。
      • Google Cloud 项目:选择或创建 Google Cloud 项目 接收路由的日志。
      • 其他资源:选择此选项可将日志条目路由到 位于其他项目中的受支持目标。对于 路径相关信息 请参阅目标路径格式
  6. 选择要包含在接收器中的日志面板中,执行以下操作:

    1. 构建包含项过滤条件字段中,输入过滤条件表达式 匹配您要包含的日志条目要详细了解 有关编写过滤器的语法,请参阅 日志记录查询语言

      如果未设置过滤条件,则系统会将所选资源的所有日志 路由到目的地

      例如,您可能希望构建一个过滤条件,将所有数据访问日志都路由到单个 Logging 存储桶。此过滤条件大致如下所示:

      log_id("cloudaudit.googleapis.com/data_access") OR log_id("externalaudit.googleapis.com/data_access")
      

      请注意,过滤条件的长度不能超过 20000 个字符。

    2. 要验证您输入的过滤条件是否正确,请选择预览日志。此操作会在新的标签页中打开日志浏览器且其中预填充了过滤条件。

  7. (可选)在选择要从接收器中过滤掉的日志面板中,执行以下操作 以下:

    1. 排除项过滤条件名称字段中输入名称。

    2. 构建排除项过滤条件部分,输入与要排除的日志条目匹配的过滤条件表达式。您还可以使用 sample 函数选择要排除的日志条目。

    您最多可以为每个接收器创建 50 个排除过滤器。请注意,过滤条件的长度不能超过 20000 个字符。

  8. 选择创建接收器

API

  1. 如需在 Google Cloud 项目中创建日志记录接收器,请使用 Logging API 中的 projects.sinks.create 方法。在 LogSink 对象中,在方法请求正文中提供适当的必需值:

    • name:接收器的标识符。请注意,创建接收器后,您无法重命名接收器,但可以删除它并创建新的接收器。
    • destination:您希望将日志路由到的服务和目标位置。如需将日志路由到其他项目,或者要路由到 在另一个项目中,请将 destination 字段设置为 相应的路径,如目标路径格式中所述。

      例如,如果您的接收器目标位置是 BigQuery 则 destination 如下所示:

      bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
      
  2. LogSink 对象中,提供适当的可选信息:

    • filter:设置 filter 属性,使其与要包含在接收器中的日志条目匹配。如果 如果未设置过滤条件,则 Google Cloud 项目中的所有日志 路由到目的地请注意,过滤条件的长度不能超过 20000 个字符。
    • exclusions:设置此属性以匹配要从接收器中排除的日志条目。您还可以使用 sample 函数选择要排除的日志条目。您最多可以为每个接收器创建 50 个排除过滤器。
    • description:设置此属性,以描述接收器的用途或用例。
  3. 调用 projects.sinks.create 以创建接收器。

  4. 如果 API 响应包含标记为 "writerIdentity" 的 JSON 密钥, 然后向接收器的服务账号授予写入权限 接收器目标位置。如需更多信息 请参阅设置目标位置权限

    当 API 响应时,您无需设置目标位置权限 不包含标记为 "writerIdentity" 的 JSON 密钥。

如需详细了解如何使用 Logging API 创建接收器,请参阅 LogSink 参考。

gcloud

如需创建接收器,请运行以下 gcloud logging sinks create 命令。

为命令中的变量提供适当的值,如下所示:

  • SINK_NAME:接收器的标识符。请注意,创建接收器后,您无法重命名接收器,但可以删除它并创建新的接收器。
  • SINK_DESTINATION:您希望将日志路由到的服务和目标位置。如需将日志路由到其他项目或 目标位于另一个项目中,请设置 SINK_DESTINATION 相应的路径,如目标路径格式中所述。

    例如,如果您的接收器目标位置是 BigQuery 数据集, 那么 SINK_DESTINATION 如下所示:

    bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
    
  • OPTIONAL_FLAGS 包括以下标志:

    • --log-filter:使用此标志可设置与要包含在接收器中的日志条目匹配的过滤条件。如果您 设置过滤条件后,您的 Google Cloud 项目中的所有日志都会路由到 目标位置
    • --exclusion:使用此标志可设置要从接收器中排除的日志条目的排除过滤器。您还可以使用 sample 函数选择要排除的日志条目。此标志可以重复;您最多可以为每个接收器创建 50 个排除过滤器。
    • --description:使用此标志来描述接收器的用途或用例。
gcloud logging sinks create SINK_NAME SINK_DESTINATION OPTIONAL_FLAGS

例如,如需创建 Logging 存储桶的接收器,您的命令可能如下所示:

gcloud logging sinks create my-sink logging.googleapis.com/projects/myproject123/locations/global/buckets/my-bucket \
  --log-filter='logName="projects/myproject123/logs/matched"' --description="My first sink"

如需详细了解如何使用 Google Cloud CLI 包含更多标志和示例, gcloud logging sinks 参考文档。

Cloud Storage 存储分区的新日志接收器可能需要几个小时才能 开始路由日志。Cloud Storage 的接收器每小时处理一次, 其他目的地类型是实时处理的。

接收器不定义 BigQuery 数据集的架构。 相反,BigQuery 收到的第一个日志条目决定了 目标表的架构。 如需了解详情,请参阅路由日志的 BigQuery 架构

如需了解如何查看接收器目标位置的日志,请参阅 查看路由到 Cloud Logging 存储分区的日志

创建接收器后,您可以使用 logging.googleapis.com/exports/ 指标来查看收到的日志条目的数量和容量。

如果您收到错误通知,请参阅路由和接收器问题排查

请勿在接收器过滤条件中输入敏感信息。接收器过滤条件被视为服务数据。

目标路径格式

如果要路由到另一个项目中的目标,则必须 提供 Logging、BigQuery Cloud Storage 或 Pub/Sub 服务和目标位置 信息:

  • 将日志条目路由到 Cloud Logging 日志存储桶 位于其他 Google Cloud 项目中,则接收器目标位置是 以下:

    logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
    
  • 接收器目标位置路径,用于将日志条目路由到其他 Google Cloud 项目 如下:

    logging.googleapis.com/projects/DESTINATION_PROJECT_ID
    
  • 为了将日志条目路由到 BigQuery 数据集,接收器 目的地如下:

    bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
    
  • 为了将日志条目路由到 Cloud Storage 存储桶,接收器 目的地如下:

    storage.googleapis.com/BUCKET_NAME
    
  • 为了将日志条目路由到 Pub/Sub 主题,接收器 目的地如下:

    pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
    

管理接收器

创建接收器后,您可以对其执行以下操作:

  • 查看接收器详情
  • 更新接收器
  • 停用接收器
  • 删除接收器
  • 排查接收器问题
  • 查看接收器日志量和错误率

在删除接收器之前,请考虑以下事项:

  • 您无法删除 _Default_Required 接收器,但可以 停用 _Default 接收器以停止将日志路由到 _Default Logging 存储分区。
  • 接收器删除后,会停止路由日志条目。
  • 如果接收器具有专用服务账号,则同时删除该接收器 删除服务账号。接收器创建日期早于 2023 年 5 月 22 日拥有专用服务账号。已创建接收器 拥有共享服务账号的用户。 删除接收器不会删除共享服务账号。

对接收器所做的任何更改都可能需要几分钟才能应用。

以下是有关管理 Google Cloud 项目中的接收器的说明。 您可以不指定 Google Cloud 项目,而是指定结算账号 文件夹或组织的名称:

控制台

  1. 在 Google Cloud 控制台中,转到日志路由器页面:

    前往日志路由器

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 选择包含您的 方法是使用资源选择器 Google Cloud 控制台:

    已从下拉菜单中选择了一个项目。

  3. 如需查看汇总接收器,请选择包含接收器的组织、文件夹或结算账号。

日志路由器页面包含接收器表摘要。表中每一行都包含接收器属性的相关信息:

  • 已启用:指示是启用还是停用接收器的状态。
  • 类型:接收器的目标服务,例如 Cloud Logging bucket
  • 名称:接收器的标识符,在创建接收器时提供,例如 _Default
  • 说明:接收器的说明,在创建接收器时提供。
  • 目标位置:要将路由的日志条目发送到的目标位置的全名。
  • 已创建:创建接收器的日期和时间。
  • 上次更新时间:上次修改接收器的日期和时间。

对于表格中的每一行,都会显示 更多操作菜单 提供以下选项:

  • 查看接收器详情:显示接收器的名称、说明、服务、目标位置、包含过滤器和排除过滤器。选择修改后,系统会打开修改接收器面板。
  • 修改接收器:打开修改接收器面板,您可在其中更改接收器的参数。
  • 停用接收器:允许您停用接收器并停止将日志路由到接收器的目标位置。如需详细了解如何停用接收器,请参阅 停止在日志存储分区中存储日志
  • 启用接收器:允许您启用已停用的接收器,并重新开始将日志路由到接收器的目标位置。
  • 删除接收器:允许您删除接收器并停止将日志路由到 接收器的目标位置。
  • 排查接收器问题:打开日志浏览器,您可以在其中排查问题 错误。
  • 查看接收器日志量和错误率:打开 Metrics Explorer 您可以在其中查看和分析来自接收器的数据。

点击任意列名称可按升序或降序对数据进行排序。

API

  • 如需查看 Google Cloud 项目的接收器,请调用 projects.sinks.list.

  • 如需查看接收器的详细信息,请调用 projects.sinks.get

  • 如需更新接收器,请调用 projects.sink.update

    您可以更新接收器的目标位置、过滤条件和说明。您还可以停用或重新启用接收器。

  • 如需停用接收器,请调用 projects.sink.update 并将 disabled 属性设置为 true

    如需重新启用接收器,请调用 projects.sink.update 并将 disabled 属性设置为 false

  • 要删除接收器,请调用 projects.sinks.delete

    如需详细了解使用 Logging API 管理接收器的任一方法,请参阅 LogSink 参考。

gcloud

  • 如需查看 Google Cloud 项目的接收器列表,请使用 gcloud logging sinks list 命令,这对应于 Logging API 方法 projects.sinks.list

    gcloud logging sinks list
    

    如需查看汇总接收器列表,请使用适当的标志指定包含接收器的资源。例如,如果您在组织级层创建接收器,请使用 --organization=ORGANIZATION_ID 标志列出组织的接收器。

  • 如需描述接收器,请使用 gcloud logging sinks describe 命令,它对应于 Logging API 方法 projects.sinks.get

    gcloud logging sinks describe SINK_NAME
    
  • 如需更新接收器,请使用 gcloud logging sinks update 命令,它对应于 API 方法 projects.sink.update

    您可更新接收器以更改目标位置、过滤条件和说明,或者停用或重新启用接收器:

    gcloud logging sinks update SINK_NAME NEW_DESTINATION --log-filter=NEW_FILTER

    如果这些部分未更改,请省略 NEW_DESTINATION--log-filter

    例如,要将名为 my-project-sink 的接收器的目标位置更新为名为 my-second-gcs-bucket 的新 Cloud Storage 存储桶目标位置,您的命令如下所示:

    gcloud logging sinks update  my-project-sink  storage.googleapis.com/my-second-gcs-bucket
    
  • 如需停用接收器,请使用与 API 方法 projects.sink.update 相对应的 gcloud logging sinks update 命令,并添加 --disabled 标志:

    gcloud logging sinks update _Default  --disabled
    

    如需重新启用接收器,请使用 gcloud logging sinks update 命令、移除 --disabled 标志并添加 --no-disabled 标志:

    gcloud logging sinks update _Default  --no-disabled
    
  • 如需删除接收器,请使用 gcloud logging sinks delete 命令,它对应于 API 方法 projects.sinks.delete

    gcloud logging sinks delete SINK_NAME
    

    如需详细了解如何使用 Google Cloud CLI,请参阅 gcloud logging sinks 参考文档。

停止在日志存储分区中存储日志

对于每个 Google Cloud 项目,Logging 都会自动创建 两个日志存储分区_Required_Default。 Logging 会自动创建两个日志接收器 _Required_Default,用于将日志路由到相应命名的存储分区。

您无法停用 _Required 接收器。您可以 停用_Default接收器,以阻止在 _Default 存储桶。此外,您还可以停用任何用户定义的接收器。

停用 Google Cloud 项目中发送日志的所有接收器后 _Default 存储桶, 新日志不会存储在该日志存储桶中。 如果之前存储的所有日志都存储在 _Default 存储桶中, _Default 个存储桶已达到该存储桶的 保留期限

停用将日志路由到 _Default 的 Google Cloud 项目接收器 请完成以下步骤:

控制台

  1. 在 Google Cloud 控制台中,转到日志路由器页面:

    前往日志路由器

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 如需查找将日志路由到 _Default 存储桶的所有接收器,请按目标位置过滤接收器,然后输入 _Default

    查找将日志路由到默认存储分区的所有接收器。

  3. 对于每个接收器,选择 Menu(菜单),然后 然后选择停用接收器

接收器现已停用,您的 Google Cloud 项目接收器 更长的日志将日志路由到 _Default 存储桶。

如需重新启用已停用的接收器,并重新开始将日志路由到接收器的目标位置,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到日志路由器页面:

    前往日志路由器

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 如需查找之前配置为将日志路由到 _Default 存储桶的所有已停用接收器,请按目标位置过滤接收器,然后输入 _Default

  3. 对于每个接收器,选择 Menu(菜单),然后 然后选择启用接收器

API

  1. 如需查看 Google Cloud 项目的接收器,请调用 Logging API 方法 projects.sinks.list.

    确定路由到 _Default 存储桶的任何接收器。

  2. 例如,如需停用 _Default 接收器,请调用 projects.sink.update 并将 disabled 属性设置为 true

_Default 接收器现已停用,它不再将日志路由到 _Default 存储分区。

停用 Google Cloud 项目中正在路由的其他接收器 _Default 存储桶,请重复上述步骤。

如需重新启用接收器,请调用 projects.sink.update 并将 disabled 属性设置为 false

gcloud

  1. 如需查看 Google Cloud 项目的接收器列表,请使用 gcloud logging sinks list 命令,这对应于 Logging API 方法 projects.sinks.list

    gcloud logging sinks list
    
  2. 确定路由到 _Default 存储桶的任何接收器。如需描述接收器(包括查看目标位置名称),请使用 gcloud logging sinks describe命令,它对应于 Logging API 方法 projects.sinks.get

    gcloud logging sinks describe SINK_NAME
    
  3. 例如,如需停用 _Default 接收器,请使用 gcloud logging sinks update 命令并添加 --disabled 标志:

    gcloud logging sinks update _Default  --disabled
    

_Default 接收器现已停用,它不再将日志路由到 _Default 存储分区。

停用 Google Cloud 项目中正在路由的其他接收器 _Default 存储桶,请重复上述步骤。

如需重新启用接收器,请使用 gcloud logging sinks update 命令、移除 --disabled 标志并添加 --no-disabled 标志:

gcloud logging sinks update _Default  --no-disabled

设置目标位置权限

本部分介绍如何向 Logging 授予将日志写入接收器目标位置的 Identity and Access Management 权限。如需查看 Logging 角色和权限的完整列表,请参阅访问权限控制

Cloud Logging 会在发生以下情况时为资源创建共享服务账号: 创建日志接收器,除非已存在所需的服务账号。 此服务账号可能存在,因为同一服务账号用于 底层资源中的所有接收器资源可以是 Google Cloud 项目 组织、文件夹或结算账号。

接收器的写入者身份是服务的标识符 与此接收器关联的账号。所有接收器都具有写入者身份,但 适用于向当前 Google Cloud 项目中的日志存储桶写入数据的接收器。 当接收器的目标位置是当前日志存储桶中的 Google Cloud 项目,则接收器不需要任何额外的 目标位置权限。因此,writer identity 字段的值 在控制台中列为 None, 而且该 API 和 Google Cloud CLI 命令不会报告该信息。

以下是设置 Google Cloud 项目级的说明 以便接收器路由到其目标位置。不再使用 则可以指定结算账号、文件夹或 组织:

控制台

<ph type="x-smartling-placeholder">
    </ph>
  1. 要从 您需要执行以下操作:

    1. 在 Google Cloud 控制台中,转到日志路由器页面:

      前往日志路由器

      如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

    2. 选择 菜单,然后选择 查看接收器详情。写入者身份会显示在 接收器详情面板。

  2. 如果 writerIdentity 字段的值包含电子邮件地址, 然后继续下一步当值为 None 时, 则无需为接收器配置目标位置权限。

  3. 如需将接收器的写入者身份复制到剪贴板,请执行以下操作: 点击 复制

  4. 如果您拥有目标的所有者权限,请添加该服务 账号作为目标项目中的 IAM 主账号:

    • 对于 Cloud Storage 目标位置,请添加接收器的写入者身份 作为主 IAM,然后向其授予 Storage Object Creator 角色 (roles/storage.objectCreator).
    • 对于 BigQuery 目标位置,请添加接收器的写入者身份 作为主 IAM,然后向其授予 BigQuery Data Editor 角色 (roles/bigquery.dataEditor).
    • 对于 Pub/Sub 目标位置(包括 Splunk),请添加接收器的写入者身份 作为主 IAM,然后向其授予 Pub/Sub Publisher 角色 (roles/pubsub.publisher).
    • 对于位于不同目标位置的 Logging 存储桶目标位置 Google Cloud 项目,请通过以下命令将接收器的写入者身份添加为主账号 使用 IAM,然后为其授予 Logs Bucket Writer 角色 (roles/logging.bucketWriter).
    • 对于 Google Cloud 项目目标位置,请添加接收器的 写入者身份作为主 IAM,然后向其授予 Logs Writer 角色 (roles/logging.logWriter).具体来说,主账号需要 logging.logEntries.route 权限。
    如果您没有对接收器目标位置的 Owner 访问权限,请让项目所有者 将写入者身份添加为主账号。

API

  1. 调用 API 方法 projects.sinks.list 以列出 Google Cloud 项目。

  2. 找到要修改其权限的接收器,以及该接收器 details 包含标记为 "writerIdentity" 的 JSON 键,然后继续 下一步。如果详细信息中不包含 "writerIdentity" 字段,则无需为接收器配置目标位置权限。

  3. 如果您拥有对目标位置的 IAM 所有者访问权限,请将 通过执行以下操作,将服务账号发送到目标位置:

    • 对于 Cloud Storage 目标位置,请添加接收器的写入者身份 作为主 IAM,然后向其授予 Storage Object Creator 角色 (roles/storage.objectCreator).
    • 对于 BigQuery 目标位置,请添加接收器的写入者身份 作为主 IAM,然后向其授予 BigQuery Data Editor 角色 (roles/bigquery.dataEditor).
    • 对于 Pub/Sub 目标位置(包括 Splunk),请添加接收器的写入者身份 作为主 IAM,然后向其授予 Pub/Sub Publisher 角色 (roles/pubsub.publisher).
    • 对于位于不同目标位置的 Logging 存储桶目标位置 Google Cloud 项目,请通过以下命令将接收器的写入者身份添加为主账号 使用 IAM,然后为其授予 Logs Bucket Writer 角色 (roles/logging.bucketWriter).
    • 对于 Google Cloud 项目目标位置,请添加接收器的 写入者身份作为主 IAM,然后向其授予 Logs Writer 角色 (roles/logging.logWriter).具体来说,主账号需要 logging.logEntries.route 权限。
    如果您没有对接收器目标位置的 Owner 访问权限,请让项目所有者 将写入者身份添加为主账号。

gcloud

  1. 从接收器中的 writerIdentity 字段获取服务账号:

    gcloud logging sinks describe SINK_NAME
    
  2. 找到要修改其权限的接收器,以及该接收器 详细信息包含一行 writerIdentity,然后继续 下一步。如果详细信息中不包含 writerIdentity 字段中,则无需为容器配置目标位置权限 接收器。

    以下代码中 SERVICE_ACCT_NAME 字段的值 写入者身份,类似于 以下:

    serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
    
  3. 如果您拥有对目标位置的 IAM 所有者访问权限,请将 通过执行以下操作,将服务账号发送到目标位置:

    • 对于 Cloud Storage 目标位置,请添加接收器的写入者身份 作为主 IAM,然后向其授予 Storage Object Creator 角色 (roles/storage.objectCreator).
    • 对于 BigQuery 目标位置,请添加接收器的写入者身份 作为主 IAM,然后向其授予 BigQuery Data Editor 角色 (roles/bigquery.dataEditor).
    • 对于 Pub/Sub 目标位置(包括 Splunk),请添加接收器的写入者身份 作为主 IAM,然后向其授予 Pub/Sub Publisher 角色 (roles/pubsub.publisher).
    • 对于位于不同目标位置的 Logging 存储桶目标位置 Google Cloud 项目,请通过以下命令将接收器的写入者身份添加为主账号 使用 IAM,然后为其授予 Logs Bucket Writer 角色 (roles/logging.bucketWriter).
    • 对于 Google Cloud 项目目标位置,请添加接收器的 写入者身份作为主 IAM,然后向其授予 Logs Writer 角色 (roles/logging.logWriter).具体来说,主账号需要 logging.logEntries.route 权限。
    如果您没有对接收器目标位置的 Owner 访问权限,请让项目所有者 将写入者身份添加为主账号。

    例如,授予 Logs Writer 角色 (roles/logging.logWriter) 该服务账号的角色 service-123456789012@gcp-sa-logging.iam.gserviceaccount.com在 项目 my-test-project,请运行以下命令:

    gcloud projects add-iam-policy-binding my-test-project --member='serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com' --role='roles/logging.logWriter'
    

目标页面限制

根据您要将日志路由到的目标位置 限制。

路由到不同 Google Cloud 项目中的日志存储分区

将日志路由到以下位置的日志存储分区时,存在以下限制 不同的 Google Cloud 项目:

  • 对于存储在以下日志存储分区中的日志,系统会停用 Error Reporting: 客户管理的加密密钥。

路由到不同的 Google Cloud 项目

将日志路由到 Google Cloud 项目:

  • 存在单跳次数限制。例如,如果您从项目 A 到项目 B,则您无法将日志条目从项目 B 路由到 不同项目。

  • 审核日志未路由到目标位置中的 _Required 存储桶 项目。您必须再创建一个接收器或存储桶来存储它们。

  • 如果该 Google Cloud 项目所在的组织或文件夹 具有现有汇总接收器的接收器,则系统不会路由日志 汇总的数据。

代码示例

如需使用客户端库代码配置您所选语言的接收器,请参阅 Logging 客户端库:日志接收器

过滤条件示例

下面是一些在创建接收器时特别有用的过滤条件示例。

如需了解在构建包含过滤器和排除过滤器时可能有用的其他示例,请参阅查询示例

恢复 _Default 接收器过滤条件

如果您修改了 _Default 接收器的过滤条件,则可能需要恢复默认过滤条件。为此,请输入以下包含过滤器:

  NOT log_id("cloudaudit.googleapis.com/activity") AND NOT \
  log_id("externalaudit.googleapis.com/activity") AND NOT \
  log_id("cloudaudit.googleapis.com/system_event") AND NOT \
  log_id("externalaudit.googleapis.com/system_event") AND NOT \
  log_id("cloudaudit.googleapis.com/access_transparency") AND NOT \
  log_id("externalaudit.googleapis.com/access_transparency")

排除 Google Kubernetes Engine 容器和 pod 日志

要为以下服务排除 Google Kubernetes Engine 容器和 Pod 日志,请执行以下操作: GKE 系统 namespaces,请使用以下过滤条件:

resource.type = ("k8s_container" OR "k8s_pod")
resource.labels.namespace_name = (
"cnrm-system" OR
"config-management-system" OR
"gatekeeper-system" OR
"gke-connect" OR
"gke-system" OR
"istio-system" OR
"knative-serving" OR
"monitoring-system" OR
"kube-system")

如需排除 GKE 系统 logNames 的 Google Kubernetes Engine 节点日志,请使用以下过滤条件:

resource.type = "k8s_node"
logName:( "logs/container-runtime" OR
"logs/docker" OR
"logs/kube-container-runtime-monitor" OR
"logs/kube-logrotate" OR
"logs/kube-node-configuration" OR
"logs/kube-node-installation" OR
"logs/kubelet" OR
"logs/kubelet-monitor" OR
"logs/node-journal" OR
"logs/node-problem-detector")

如需查看 Google Kubernetes Engine 节点的卷,请Podcontainer存储在日志存储分区中的日志,请使用 Cloud Monitoring 中的 Metrics Explorer

排除支持性不需要的 Dataflow 日志

如需排除支持性不需要的 Dataflow 日志,请使用以下过滤条件:

resource.type="dataflow_step"
labels."dataflow.googleapis.com/log_type"!="system" AND labels."dataflow.googleapis.com/log_type"!="supportability"

如需查看存储在日志存储分区中的 Dataflow 日志量,请使用 Cloud Monitoring 中的 Metrics Explorer

可支持性

虽然 Cloud Logging 能够 存储在日志存储桶中, 那么您可以考虑保留有助于实现可支持性的日志 使用这些日志可帮助您快速排查并识别应用的问题。

例如,GKE 系统日志对于排查 GKE 应用和集群问题非常有用,因为它们是针对集群中发生的事件生成的。这些日志可帮助您确定是应用代码还是底层 GKE 集群导致了应用错误。GKE 系统日志还包括由 Kubernetes API 服务器组件生成的 Kubernetes 审核日志,其中包括使用 kubectl 命令和 Kubernetes 事件所做的更改。

对于 Dataflow,我们建议您至少编写系统 日志 (labels."dataflow.googleapis.com/log_type"="system") 和可支持性 日志 (labels."dataflow.googleapis.com/log_type"="supportability") 复制到 日志存储分区。这些记录 对于开发者来说 流水线,并且用户可能无法使用 Dataflow 作业详情页面以查看作业日志。

后续步骤