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

本文档介绍了如何创建和管理接收器以路由日志条目 从 Google Cloud 项目发送到支持的目标位置。

当接收器的目标不是 Google Cloud 项目中的日志存储桶时 则需要有服务账号。 Cloud Logging 会自动创建和管理此服务账号; 不过,您可能需要修改向 服务账号。你可以创建和管理服务账号 供多个项目中的接收器使用如需了解详情,请参阅 使用用户代管式服务账号配置日志接收器

概览

接收器确定 Cloud Logging 如何 和路由日志条目通过使用接收器,您可以将部分或全部网络 日志条目到以下目标位置:

  • Cloud Logging 存储桶:在 Cloud Logging 中提供存储空间。 日志存储桶可存储日志条目 发送给多个 Google Cloud 项目的数据 日志存储桶可以属于日志条目所属的同一项目,或者 其他项目 您可以将 将 Cloud Logging 数据与其他数据升级,以便使用 Log Analytics,然后创建关联的 BigQuery 数据集。 如需了解如何查看存储在日志存储分区中的日志条目,请参阅 查询和查看日志概览查看路由到 Cloud Logging 存储分区的日志
  • BigQuery 数据集:提供 BigQuery 数据集。 BigQuery 数据集可以属于日志条目所在的项目 还是在其他项目中运行 您可以使用大数据分析功能 针对已存储的日志条目进行触发。若要将您的 Cloud Logging 数据与其他数据 我们建议您升级日志存储分区 Log Analytics,然后创建关联的 BigQuery 数据集。 如需了解如何查看路由到 BigQuery 的日志条目,请参阅 查看路由到 BigQuery 的日志
  • Cloud Storage 存储桶:提供 Cloud Storage 中的日志条目存储。 Cloud Storage 存储桶可以属于日志条目所在的项目 还是在其他项目中运行日志条目存储为 JSON 文件。 如需了解如何查看路由到 Cloud Storage 的日志条目, 请参阅查看路由到 Cloud Storage 的日志
  • Pub/Sub 主题:为第三方 例如 Splunk。 日志条目会格式化为 JSON 格式,然后路由到 Pub/Sub 主题。主题可以属于日志条目所在的项目 还是在其他项目中运行 有关如何查看路由到以下实例的日志条目的信息: Pub/Sub,请参阅 查看路由到 Pub/Sub 的日志

  • Google Cloud 项目:将日志条目路由到另一个 Google Cloud 项目。在 则目标项目中的接收器会处理 日志条目。

接收器属于以下给定的 Google Cloud 资源:Google Cloud 项目、 结算账号、文件夹或组织。当资源收到 则资源中的每个接收器都会处理该日志条目。当 则日志条目与接收器的过滤条件匹配,则 发送到接收器的目标位置

通常,接收器仅路由源自于资源的日志条目。 但是,对于文件夹和组织,您可以创建汇总接收器, 从文件夹或组织路由日志条目,以及 资源 资源。本文档并未讨论 汇总接收器。如需了解详情,请参阅 整理组织级日志并将其路由到支持的目标位置

要创建和管理接收器,您可以使用 Google Cloud 控制台 Cloud Logging API 和 Google Cloud CLI。我们建议 使用 Google Cloud 控制台:

  • 日志路由器页面列出了所有接收器,并提供 管理接收器
  • 创建接收器时,您可以预览哪些日志条目与 接收器的过滤器
  • 您可以在创建接收器时配置接收器目标位置。
  • 系统已为您完成一些授权步骤。

准备工作

本文档中的说明介绍了如何在 Google Cloud 项目级。您可以使用相同的过程创建接收器 用于路由源自组织、文件夹或 结算账号。

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

  1. 启用 Cloud Logging API。

    启用 API

  2. 确保您的 Google Cloud 项目包含可供您在以下位置查看的日志条目: 日志浏览器

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

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

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

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

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

  5. 在创建接收器之前,请先查看 接收器目标位置。有关详情,请参阅 本文档中的目标页面限制部分。

创建接收器

以下是在 Google Cloud 项目中创建接收器的说明。 您可以使用相同的过程来路由 组织、文件夹或结算账号:

  • 每个会话中最多可以创建 200 个接收器 Google Cloud 项目。
  • 请勿在接收器过滤条件中输入敏感信息。 接收器过滤条件被视为服务数据。
  • Cloud Storage 存储分区的新接收器可能需要几个小时才能 开始路由日志条目。 Cloud Storage 的接收器每小时处理一次, 其他目的地类型是实时处理的。
  • 接收器不定义 BigQuery 数据集的架构。 相反,BigQuery 收到的第一个日志条目决定了 目标表的架构。 如需了解详情,请参阅 路由日志的 BigQuery 架构

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

控制台

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

    前往日志路由器

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

  2. 选择您在哪个 Google Cloud 项目中 路由来源

    例如,如果您想通过 将名为 Project-A 的项目日志存储桶到名为 Project-B,然后选择“Project-A”。

  3. 选择创建接收器

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

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

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

  5. 接收器目标位置面板中,选择接收器服务并 选择接收器服务菜单选择目标位置。执行以下其中一项操作 以下:

    • 将日志条目路由到 Google Cloud 项目中,请选择以下选项之一:

      • BigQuery 数据集:选择或创建特定的 数据集来接收路由的日志条目。你还可以选择 使用 分区表
      • Cloud Storage 存储桶:选择或创建 Cloud Storage 存储桶,用于接收路由的日志条目。
      • Pub/Sub 主题:选择或创建特定的 主题以接收路由的日志条目。
      • Splunk:为您的 Splunk 服务选择 Pub/Sub 主题。
    • 如需将日志条目路由到其他 Google Cloud 项目,请执行以下操作: 选择 Google Cloud 项目,然后输入完全限定名称。 。有关语法的信息,请参阅 目标路径格式

    • 将日志条目路由到 Google Cloud 项目中,请执行以下操作:

      1. 选择其他资源
      2. 输入目标的完全限定名称。相关信息 请参阅 目标路径格式
  6. 指定要包含的日志条目:

    1. 转到选择要包含在接收器中的日志面板。

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

      如果未设置过滤条件,则所选资源中的所有日志条目 都被路由到目的地

      例如,要将所有数据访问日志条目路由到 Logging 存储桶,您可以使用以下过滤条件:

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

      过滤器的长度不能超过 20,000 个字符。

    3. 要验证您输入的过滤条件是否正确,请选择预览日志。日志浏览器会在新标签页中打开,其中包含过滤条件 。

  7. (可选)配置排除过滤器,以排除 包含的日志条目数:

    1. 转到选择要从接收器中过滤掉的日志面板。

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

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

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

  8. 选择创建接收器

  9. 向接收器的服务账号授予写入日志条目的权限 发送到接收器的目标位置如需了解详情,请参阅 设置目标位置权限

API

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

    • name:接收器的标识符。请注意,创建接收器后,您无法重命名接收器,但可以删除它并创建新的接收器。
    • destination:您希望将商品发送到的目标服务和目的地 路由的日志条目。如需将日志条目路由到其他项目,请执行以下操作: 或者定向到 在另一个项目中,请将 destination 字段设置为 适当的路径,如 目标路径格式

      例如,如果您的接收器目标位置是 Pub/Sub 主题,则 destination 如下所示:

      pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_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

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

  1. 运行以下 gcloud logging sinks create 命令:

    gcloud logging sinks create SINK_NAME SINK_DESTINATION
    

    在运行命令之前,请先进行以下替换:

    • SINK_NAME:日志接收器的名称。接收器创建后便无法更改其名称。
    • SINK_DESTINATION:您要将日志条目路由到的服务或项目。设置SINK_DESTINATION 相应的路径,如 目标路径格式

      例如,如果您的接收器目标位置是 Pub/Sub 主题,则 SINK_DESTINATION 如下所示:

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

    您还可以提供以下选项:

    • --log-filter:使用此选项可设置 过滤条件 与您要包含在接收器中的日志条目匹配。如果您 没有为包含过滤器提供值,那么此过滤器 匹配所有日志条目。
    • --exclusion:使用此选项可设置排除过滤器 您希望从路由中排除接收器的日志条目。 您还可以使用 sample 函数选择要排除的日志条目。通过此选项, 重复;您最多可以创建 50 个 排除过滤器数量。
    • --description:此选项用于描述目的或用例 数据接收器

    例如,如需创建 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 参考文档。

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

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

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

目标路径格式

如果您要将日志条目路由到另一个项目中的服务,则必须 为接收器提供服务的完全限定名称。同样, 如果您要将日志条目路由到其他 Google Cloud 项目,则必须 向接收器提供目标项目的完全限定名称:

  • Cloud Logging 日志存储桶:

    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
    

管理接收器

创建接收器后,您可以对其执行以下操作。 对接收器所做的任何更改都可能需要几分钟才能应用:

  • 查看详情
  • 更新
  • 停用

    • 您无法停用 _Required 接收器。
    • 您可以停用“_Default”接收器,以阻止其将日志条目路由到 _Default Logging 存储桶。
    • 如果要为任何新创建的数据停用 _Default 接收器, 在组织中创建的 Google Cloud 项目或文件夹。 请考虑配置 默认资源设置
  • 删除

    • 您无法删除 _Default_Required 接收器。
    • 删除接收器后,它将不再路由日志条目。
    • 如果接收器具有专用服务账号,则同时删除该接收器 删除服务账号。接收器创建日期早于 2023 年 5 月 22 日拥有专用服务账号。已创建接收器 拥有共享服务账号的用户。 删除接收器不会删除共享服务账号。
  • 排查故障

  • 查看日志量和错误率

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

控制台

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

    前往日志路由器

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

  2. 在工具栏中,选择包含您的接收器的资源。通过 资源可以是项目、文件夹、组织或结算账号。

日志路由器页面会显示所选资源中的接收器。 表中的每一行都包含与接收器属性相关的信息:

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

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

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

如需按列对表格进行排序,请选择相应列名称。

API

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

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

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

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

  • 要停用接收器 将 LogSink 对象中的 disabled 字段设置为 true,然后 调用 projects.sink.update

    要重新启用该接收器 将 LogSink 对象中的 disabled 字段设置为 false,然后 调用 projects.sink.update

  • 要删除接收器,请调用 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
    
  • 要停用接收器,请使用 gcloud logging sinks update 命令,这与 API 方法 projects.sink.update, 并添加 --disabled 选项:

    gcloud logging sinks update SINK_NAME --disabled
    

    要重新启用该接收器,请使用 gcloud logging sinks update 命令,移除 --disabled 选项,然后添加 --no-disabled 选项:

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

    gcloud logging sinks delete SINK_NAME
    

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

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

您可以停用 _Default 接收器和任何用户定义的接收器。当您 停用接收器后,该接收器会停止将日志条目路由到其目标位置。 例如,如果您停用 _Default 接收器,则系统不会记录任何日志条目 路由到 _Default 存储桶。通过 当之前存储的所有日志条目时,_Default 存储桶将为空 已达到存储桶的 保留期限

以下说明介绍了如何 停用将日志条目路由到 _Default 个日志存储分区:

控制台

  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 接收器,请执行以下操作: 将 LogSink 对象中的 disabled 字段设置为 true,然后 调用 projects.sink.update

    _Default 接收器现已停用;它不再将日志条目路由到 _Default 存储桶。

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

要重新启用接收器 将 LogSink 对象中的 disabled 字段设置为 false,然后 调用 projects.sink.update

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. 运行 gcloud logging sinks update 命令并添加 --disabled 选项。例如,要停用 _Default 接收器,请使用以下命令:

    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 项目中的日志存储桶, 生成该日志条目对于后一种配置 不是必需的,因此接收器的 writer identity 字段 在控制台中列为 None。通过 API 和 Google Cloud CLI 命令不会报告写入者身份。

以下说明适用于项目、文件夹、组织和 结算账号:

控制台

  1. 确保您拥有所有者 包含目标的 Google Cloud 项目。 如果您没有对接收器目标位置的所有者访问权限, 然后请求项目所有者将写入者身份添加为主账号。

  2. 要从 您需要执行以下操作:

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

      前往日志路由器

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

    2. 在工具栏中,选择包含接收器的项目。
    3. 选择 菜单,然后选择 查看接收器详情。写入者身份会显示在 接收器详情面板。
  3. 如果 writerIdentity 字段的值包含电子邮件地址, 然后继续下一步当值为 None 时, 则无需为接收器配置目标位置权限。

  4. 将接收器的写入者身份复制到剪贴板。

  5. 如果目标位置是其他项目中的服务,或者它是 另一个项目,然后在工具栏中选择目标项目。

  6. 将服务账号添加为 目标项目:

    1. 在 Google Cloud 控制台中,进入 IAM 页面:

      前往 IAM

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

    2. 选择目标项目。

    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 权限。

API

我们建议您使用 Google Cloud 控制台或 Google Cloud CLI 为服务账号授予角色的权限。

gcloud

  1. 确保您拥有所有者 包含目标的 Google Cloud 项目。 如果您没有对接收器目标位置的所有者访问权限, 然后请求项目所有者将写入者身份添加为主账号。

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

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

    服务账号的写入者身份类似于 以下:

    serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
    
  4. 将服务账号添加为 目标项目:

    在使用以下命令之前,请先进行以下替换:

    • PROJECT_ID:项目的标识符。
    • PRINCIPAL:您要验证的主账号的标识符 授予此角色的权限。主账号标识符通常采用以下格式: PRINCIPAL-TYPE:ID。 例如 user:my-user@example.com。 如需查看 PRINCIPAL_ID 可以采用的格式的完整列表, 请参阅主账号标识符
    • ROLE: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 权限。

    执行 gcloud projects add-iam-policy-binding 命令:

    gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE
    

目标页面限制

本部分介绍了特定于目标页面的限制:

  • 如果您将日志条目路由到其他 Google Cloud 项目中的日志存储桶, 则 Error Reporting 不会分析这些日志条目。 如需了解详情,请参阅 Error Reporting 概览
  • 将日志条目路由到 Google Cloud 项目:

    • 存在单跳次数限制。

      例如,如果您将日志条目从 项目“A”到项目“B”,则您无法从该项目中路由日志条目 项目“B”关联到其他项目。

    • 审核日志不会路由到目标位置中的 _Required 日志存储桶 项目。

      例如,如果您将日志条目从项目“A”路由到 项目 B,则项目 A 中的 _Required 日志存储桶包含 项目“A”的审核日志。项目“A”的审核日志不在 路由到项目“B”。如需路由这些日志条目,请创建一个接收器 目标位置是日志存储桶。

    • 如果目标项目位于其他文件夹或组织中, 则该文件夹或组织中的汇总接收器不会 路由日志条目

      例如,假设项目 A 位于文件夹 X 中。当某个日志条目 来自项目“A”,则日志条目由 文件夹 X 中的汇总接收器和项目 A 中的接收器。现在 假设项目 A 包含一个将其日志条目路由到的接收器 项目 B,位于文件夹 Y 中。项目“A”中的日志条目 通过项目 B 中的接收器;但它们不会通过 文件夹 Y 中的汇总接收器。

代码示例

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

过滤条件示例

以下是一些过滤器示例, 数据接收器。如需了解在构建包含过滤器和排除过滤器时可能有用的其他示例,请参阅查询示例

恢复 _Default 接收器过滤条件

如果您修改了“_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 排除 Google Kubernetes Engine 节点日志条目 系统 logNames,请使用以下过滤条件:

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 节点、Pod 和容器日志条目的量 存储在日志存储分区中,请使用 Metrics Explorer:

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

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

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

如需查看存储在日志存储分区中的 Dataflow 日志量,请使用 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 作业详情页面以查看作业日志。

后续步骤