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

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

接收器执行写入操作,因此必须获得将数据写入目标位置的授权。如果目标位置是与接收器位于同一项目中的日志存储桶,则系统会自动为接收器授权。对于所有其他目标位置,接收器必须关联到已授予将数据写入目标位置所需权限的服务账号

需要服务账号时,Cloud Logging 会自动创建和管理该账号。但是,您可能需要修改向该服务账号授予的权限。您无需使用 Logging 创建的服务账号。您可以创建和管理由多个项目中的接收器使用的服务账号。如需了解详情,请参阅使用用户管理的服务账号配置日志接收器

概览

本页面介绍了如何创建接收器,以及如何配置您在使用 Google Cloud 控制台或 API 时可能会看到的选项。

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

通常,接收器只会路由源自资源的日志条目。不过,对于文件夹和组织,您可以创建聚合接收器,以路由来自文件夹或组织以及其中包含的资源的日志条目。本文档不讨论聚合接收器。如需了解详情,请参阅汇总接收器概览

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

  • 日志路由器页面会列出所有接收器,并提供用于管理接收器的选项。
  • 创建接收器时,您可以预览与接收器的过滤条件匹配的日志条目。
  • 您可以在创建接收器时配置接收器目标位置。
  • 系统已为您完成部分授权步骤。

支持的目标

接收器的目标位置可以位于与接收器不同的资源中。例如,您可以使用日志接收器将日志条目从一个项目路由到存储在其他项目中的日志存储桶。

支持以下目标位置:

Google Cloud 项目

如果您希望目标项目中的日志接收器重新路由日志条目,或者您已创建拦截汇总接收器,请选择此目标位置。项目中作为接收器目标位置的日志接收器可以将日志条目重新路由到除项目之外的任何受支持的目标位置。

日志存储桶

如果您想将日志数据存储在由 Cloud Logging 管理的资源中,请选择此目标位置。您可以使用 Logs Explorer 和 Log Analytics 等服务查看和分析存储在日志存储桶中的日志数据。

如果您想将日志数据与其他业务数据联接,可以将日志数据存储在日志存储桶中,然后创建关联的 BigQuery 数据集。关联数据集是一个只读数据集,可以像任何其他 BigQuery 数据集一样进行查询。

BigQuery 数据集
如果您想将日志数据与其他业务数据联接,请选择此目标位置。您指定的数据集必须启用了写入功能。请勿将接收器的目标位置设置为关联的 BigQuery 数据集。关联数据集为只读数据集。
Cloud Storage 存储桶
如果您想长期存储日志数据,请选择此目标位置。Cloud Storage 存储桶可以位于作为日志条目来源的项目中,也可以位于其他项目中。日志条目会存储为 JSON 文件。
Pub/Sub 主题
如果您想从Google Cloud 导出日志数据,然后使用第三方集成(例如 Splunk 或 Datadog),请选择此目标位置。日志条目的格式会设置为 JSON,然后路由到 Pub/Sub 主题。

目标位置限制

本部分介绍了特定于目标位置的限制:

  • 如果您将日志条目路由到其他 Google Cloud 项目中的日志存储桶,Error Reporting 不会分析这些日志条目。如需了解详情,请参阅 Error Reporting 概览
  • 如果您将日志条目路由到 BigQuery 数据集,则 BigQuery 数据集必须启用写入功能。您无法将日志条目路由到关联的数据集,因为这些数据集是只读数据集。
  • 将日志数据路由到 Cloud Storage 存储桶的新接收器可能需要几个小时才能开始路由日志条目。这些接收器每小时处理一次。
  • 如果日志接收器的目标位置是 Google Cloud 项目,则存在以下限制:

    • 仅限存在一个跃点。
    • _Required 日志接收器的过滤条件匹配的日志条目仅在源自目标项目时才会路由到目标项目的 _Required 日志存储桶。
    • 只有位于日志条目的资源层次结构中的汇总接收器才会处理日志条目。

    例如,假设项目 A 中的日志接收器的目标位置是项目 B。然后,以下情况成立:

    • 由于单跃点限制,项目 B 中的日志接收器无法将日志条目重新路由到 Google Cloud 项目。
    • 项目 B_Required 日志存储桶仅存储源自项目 B 的日志条目。该日志存储桶不会存储源自任何其他资源的任何日志条目,包括源自项目 A 的日志条目。
    • 如果项目 A 和项目 B 的资源层次结构不同,则项目 A 中的日志接收器将日志条目路由到项目 B 时,该日志条目不会发送到项目 B 的资源层次结构中的汇总接收器。
    • 如果项目 A 和项目 B 具有相同的资源层次结构,则日志条目会发送到该层次结构中的汇总接收器。如果日志条目未被汇总接收器拦截,则日志路由器会将日志条目发送到项目 A 中的接收器。

准备工作

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

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

  1. Enable the Cloud Logging API.

    Enable the API

  2. 确保您的 Google Cloud 项目包含您可以在 Logs Explorer 中查看的日志条目。

  3. 如需获得创建、修改或删除接收器所需的权限,请让您的管理员为您授予项目的 Logs Configuration Writer (roles/logging.configWriter) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

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

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

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

    如需将日志条目路由到目标位置,目标位置必须先存在,然后您才能创建接收器。您可以在任何组织的任何Google Cloud 项目中创建目标位置。

  5. 在创建接收器之前,请查看适用于接收器目标位置的限制。如需了解详情,请参阅本文档中的目标位置限制部分。

  6. Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

    创建接收器

    本部分介绍了如何在 Google Cloud 项目中创建接收器。每个 Google Cloud 项目最多可以创建 200 个接收器。如需查看路由的日志条目的数量和数据量,请查看 logging.googleapis.com/exports/ 指标

    您可以使用 Logging 查询语言创建与要包含的日志条目匹配的过滤条件表达式。请勿将敏感信息放入接收器过滤条件中。接收器过滤条件会被视为服务数据。

    如果查询包含多个语句,您可以指定这些语句的联接方式,也可以依靠 Cloud Logging 在语句之间隐式添加结合限制 AND。例如,假设查询或过滤条件对话框包含两个语句 resource.type = "gce_instance"severity >= "ERROR"。实际查询为 resource.type = "gce_instance" AND severity >= "ERROR"。Cloud Logging 同时支持析取限制 OR 以及结合限制 AND。使用 OR 语句时,我们建议您使用括号对子句进行分组。

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

    控制台

    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 项目,然后输入目标位置的完全限定名称:

        logging.googleapis.com/projects/DESTINATION_PROJECT_ID
        
      • 如需将日志条目路由到位于其他Google Cloud 项目中的服务,请执行以下操作:

        1. 选择其他资源
        2. 输入目标位置的完全限定名称。如需了解相关语法,请参阅目标位置路径格式
    6. 指定要包含的日志条目:

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

      2. 构建包含项过滤条件字段中,输入与要包含的日志条目匹配的过滤条件表达式。如需详细了解用于编写过滤条件的语法,请参阅 Logging 查询语言

        如果您不设置过滤条件,来自所选资源的所有日志条目都会路由到目标位置。

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

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

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

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

    7. (可选)配置排除项过滤条件以排除某些包含的日志条目:

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

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

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

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

    8. 选择创建接收器

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

    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 键,则无需设置目标位置权限。

    REST

    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 参考文档。

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

    目标位置路径格式

    如果您将日志条目路由到位于其他项目中的服务,则必须向接收器提供该服务的完全限定名称。同样,如果您将日志条目路由到其他 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
      

    设置目标位置权限

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

    在创建接收器时,Cloud Logging 会为资源创建共享服务账号,除非所需的服务账号已存在。该服务账号可能存在的原因是,底层资源中的所有接收器都使用同一服务账号。资源可以是 Google Cloud 项目、组织、文件夹或结算账号。

    接收器的写入者身份是与该接收器关联的服务账号的标识符。所有接收器都有写入者身份(向作为日志条目来源的 Google Cloud 项目中的日志存储桶进行写入的接收器除外)。对于后一种配置,您无需使用服务账号,因此接收器的写入者身份字段会在控制台中显示为 None。API 和 Google Cloud CLI 命令不会报告写入者身份。

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

    控制台

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

    2. 如需从新接收器获取接收器的写入者身份(一个邮箱),请执行以下操作:

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

        前往日志路由器

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

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

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

      邮箱用于标识主账号。前缀 serviceAccount: 指定了账号类型。

    5. 向接收器的写入者身份中指定的主账号授予将日志数据写入目标位置的权限:

      1. 在 Google Cloud 控制台中,前往 IAM 页面:

        前往 IAM

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

      2. 在工具栏中,确保所选项目是存储目标位置的项目,或者是接收器目标位置。例如,如果目标位置是日志存储桶,请确保工具栏显示存储该日志存储桶的项目。

      3. 点击 授予访问权限

      4. 根据日志接收器的目标位置,向接收器的写入者身份中指定的主账号授予 IAM 角色:

    gcloud

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

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

      gcloud logging sinks describe SINK_NAME
      
    3. 找到您要修改其权限的接收器,如果接收器详情包含带有 writerIdentity 的行,请继续执行下一步。如果详情不包含 writerIdentity 字段,则无需为接收器配置目标位置权限。

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

      serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
      
    4. 通过调用 gcloud projects add-iam-policy-binding 命令,向接收器的写入者身份授予将日志数据写入目标位置的权限。

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

      • PROJECT_ID:项目的标识符。 指定用于存储日志接收器目标位置的项目。如果目标位置是项目,请指定该项目。
      • PRINCIPAL:您要向其授予角色的主账号的标识符。主账号标识符通常采用以下格式:PRINCIPAL-TYPE:ID。例如 user:my-user@example.com。 如需查看 PRINCIPAL 可以采用的格式的完整列表,请参阅主账号标识符
      • ROLE:IAM 角色。 根据日志接收器的目标位置,向接收器的写入者身份授予 IAM 角色:

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

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

    REST

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

    管理接收器

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

    • 查看详情
    • 更新
    • 停用

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

      • 您无法删除 _Default_Required 接收器。
      • 删除接收器后,它将不再路由日志条目。
      • 如果接收器有专用服务账号,则删除该接收器也会删除相应服务账号。在 2023 年 5 月 22 日之前创建的接收器具有专用服务账号。在 2023 年 5 月 22 日或之后创建的接收器具有共享服务账号。删除接收器不会删除共享服务账号。
    • 排查失败问题

    • 查看日志量和错误率

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

    控制台

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

      前往日志路由器

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

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

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

    • 已启用:指示是启用还是停用接收器的状态。
    • 类型:接收器的目标服务,例如 Cloud Logging bucket
    • 名称:接收器的标识符,在创建接收器时提供,例如 _Default
    • 说明:接收器的说明,在创建接收器时提供。
    • 目标位置:要将路由的日志条目发送到的目标位置的全名。
    • 已创建:创建接收器的日期和时间。
    • 上次更新日期:上次修改接收器的日期和时间。
    • 数据量:报告路由到日志接收器的日志总量。该值包括路由到日志存储桶、项目或其他目标位置的日志量。

    对于表中每一行, 更多操作菜单提供以下选项:

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

    如需按某个列对表进行排序,请选择该列的名称。

    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 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 参考文档。

    REST

    • 如需查看 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 参考文档。

    停止在日志存储桶中存储日志条目

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

    以下说明介绍了如何停用将日志条目路由到 _Default 日志存储桶的 Google Cloud 项目接收器:

    控制台

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

      前往日志路由器

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

    2. 如需查找将日志条目路由到 _Default 日志存储桶的所有接收器,请按目标位置过滤接收器,然后输入 _Default
    3. 对于每个接收器,选择 菜单,然后选择停用接收器

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

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

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

      前往日志路由器

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

    2. 如需查找将日志条目路由到 _Default 日志存储桶的所有接收器,请按目标位置过滤接收器,然后输入 _Default
    3. 对于每个接收器,选择 菜单,然后选择启用接收器

    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
    

    REST

    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

    代码示例

    如需使用客户端库代码配置您所选语言的接收器,请参阅 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 日志

    如需排除 GKE 系统 namespaces 的 Google Kubernetes Engine 容器和 Pod 日志条目,请使用以下过滤条件:

    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 节点、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 流水线并进行流水线问题排查至关重要,用户可能无法使用 Dataflow 作业详情页面查看作业日志。

    后续步骤