控制 Dataflow 日志注入

排除项过滤条件可用于控制 Cloud Logging 注入的 Dataflow 日志量,同时仍可提供详细日志记录以用于调试。您可以使用排除项过滤条件来排除匹配的日志条目,使其不被 Cloud Logging 注入或路由到接收器的目标位置。您可以使用 Logging 查询语言创建排除项过滤条件。利用 Logging 查询语言,您可以指定所选 Google Cloud 资源(例如项目或文件夹)中所有日志条目的子集。

使用排除项过滤条件可以帮助您降低 Dataflow 日志注入产生的 Cloud Logging 费用。如需详细了解 Cloud Logging 日志注入价格,请参阅 Cloud Logging 价格摘要。如需详细了解排除项过滤条件的工作原理及其限制,请参阅 Cloud Logging 文档中的排除项过滤条件

Dataflow 作业可以发出多个日志类型。本页面演示了如何过滤 Dataflow 作业日志和工作器日志。

创建日志排除项过滤条件

此示例会在 _Default Cloud Logging 接收器上创建一个排除项过滤条件。此过滤条件会排除严重级别为 DEFAULTDEBUGINFONOTICE 的所有 Dataflow 日志,使这些日志不注入到 Cloud Logging。WARNINGERRORCRITICALALERTEMERGENCY 严重级别日志仍会被捕获。如需详细了解支持的日志级别,请参阅 LogSeverity

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  5. 确保您的 Google Cloud 项目已启用结算功能

权限

开始之前,请确保满足以下条件:

  • 您有一个 Google Cloud 项目,且您可以在日志浏览器中查看其中包含的日志。

  • 对于您要从其中路由日志的源 Google Cloud 项目,您拥有以下 IAM 角色之一。

    • Owner (roles/owner)
    • Logging Admin (roles/logging.admin)
    • Logs Configuration Writer (roles/logging.configWriter)

    这些角色中包含的权限可让您创建、删除或修改接收器。如需了解如何设置 IAM 角色,请参阅 Logging 访问权限控制指南

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

    您需要先通过 Google Cloud CLI、Google Cloud 控制台或 Google Cloud APIs 创建路由目标位置,然后再创建接收器。您可以在任何组织中的任何 Google Cloud 项目中创建目标位置。在创建目标位置之前,请确保接收器中的服务账号具有向目标位置写入数据的权限

添加排除项过滤条件

以下步骤演示了如何向 Dataflow 日志添加 Cloud Logging 排除项过滤条件。此排除项过滤条件会在名称不以字符串 debug 结尾的 Dataflow 作业的日志中,选择严重级别为 DEFAULTDEBUGINFONOTICE 的所有 Dataflow 日志条目。此过滤条件会排除这些日志,使其不会注入到 Default Cloud Logging 存储桶。

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

    进入“日志路由器”

  2. 找到包含 _Default 接收器的行,展开 操作选项,然后点击修改接收器

  3. 选择要从接收器中过滤掉的日志中,对于构建排除项过滤条件,点击 添加排除对象

  4. 输入排除项过滤条件的名称。

  5. 构建排除项过滤条件部分中,将以下文本粘贴到框中:

    resource.type="dataflow_step" AND
    labels."dataflow.googleapis.com/job_name"!~".*debug" AND
    severity=(DEFAULT OR DEBUG OR INFO OR NOTICE)
    
    • 第一行选择由 Dataflow 服务生成的所有日志条目。
    • 第二行选择 job_name 字段不以字符串 debug 结尾的所有日志条目。
    • 第三行选择严重级别为 DEFAULTDEBUGINFONOTICE 的所有日志条目。
  6. 点击更新接收器

测试排除项过滤条件

如需验证过滤条件正确发挥作用,您可以运行示例 Dataflow 作业,然后查看日志。

作业开始运行后,要查看作业日志,请完成以下步骤:

  1. 在 Google Cloud 控制台中,前往 Dataflow 作业页面。

    进入“作业”

    此时系统将显示 Dataflow 作业及其状态的列表。

  2. 选择一个作业。

  3. 作业详情页面的日志面板中,点击 显示

  4. 验证作业日志面板中未显示任何日志,并且工作器日志面板中未显示 DEFAULTDEBUGINFONOTICE 日志。

绕过排除项过滤条件

对于需要捕获生成的 Dataflow 日志的场景,Dataflow 作业名称 (job_name) 提供了一个绕过机制。您可以使用此绕过机制来重新运行失败的作业并捕获所有日志信息。

job_name 字段以字符串 debug 结尾时,在此场景中创建的过滤条件会保留所有日志条目。如果要绕过排除项过滤条件并显示 Dataflow 作业的所有日志,请在作业名称中附加 debug。例如,要绕过排除项过滤条件,您可以使用作业名称 dataflow-job-debug

比较日志数量

如果要比较应用和不应用排除项过滤条件时注入的日志量,请运行一个作业名称附加 debug 的作业,以及一个作业名称不附加该字符串的作业。使用系统定义的基于日志的指标日志字节数来查看和比较注入数据。如需详细了解如何查看注入数据,请参阅在 Metrics Explorer 中查看注入数据

创建外部目标位置

(可选)创建排除项过滤条件后,您可以创建其他 Cloud Logging 接收器。使用此接收器可将所有 Dataflow 日志重定向到支持的外部目标位置,如 BigQuery、Pub/Sub 或 Splunk。

在此场景中,外部日志不会存储在日志浏览器中,但在外部目标位置中可用。使用外部目标位置可让您更好地控制将日志存储在日志浏览器中产生的费用。

如需详细了解如何控制 Cloud Logging 路由日志的方式,请参阅配置和管理接收器。如需在外部目标位置中捕获所有 Dataflow 日志,请在选择要包含在接收器中的日志面板的构建包含项过滤条件字段中,输入以下过滤条件表达式:

resource.type="dataflow_step"

如需查找从 Cloud Logging 路由到受支持的目标位置的日志条目,请参阅查看接收器目标位置的日志

按严重级别跟踪 Dataflow 日志消息

排除项过滤条件不适用于用户定义的基于日志的指标。这些指标计算与给定过滤条件匹配的日志条目的数量,或记录匹配的日志条目中的特定值。 如需基于严重级别跟踪 Dataflow 日志消息的数量,您可以为 Dataflow 日志创建基于日志的指标。即使从注入中排除了这些日志消息,系统也会跟踪这些日志。

您需要为用户定义的基于日志的指标付费。如需了解价格信息,请参阅收费指标

要配置用户定义的基于日志的指标,请参阅创建计数器指标。如需跟踪 Dataflow 日志,请在过滤条件选择部分的构建过滤条件框中输入以下文本:

resource.type="dataflow_step"