对 Dataflow 流水线使用 Cloud Monitoring

Cloud Monitoring 提供了强大的日志记录和诊断功能。通过 Dataflow 与 Monitoring 的集成,您可以从 Monitoring 信息中心访问各种 Dataflow 作业指标,例如作业状态、元素计数、系统延隔时间(适用于流式传输作业)和用户计数器。您还可以使用 Monitoring 提醒功能来接收各种条件的通知,例如,流式传输系统延隔时间过长或作业失败。

准备工作

按照 Java 快速入门Python 快速入门Go 快速入门设置 Dataflow 项目。然后,构建并运行流水线

如需在 Metrics Explorer 中查看日志,工作器服务账号必须具有 roles/monitoring.metricWriter 角色。

自定义指标

对于您在 Apache Beam 流水线中定义的任何指标,Dataflow 都会将其作为自定义指标报告给 Monitoring。Apache Beam 具有三种流水线指标CounterDistributionGauge

  • Dataflow 向 Monitoring 报告 CounterDistribution 指标。
  • Distribution 以四个子指标的形式报告,后缀分别为 _MAX_MIN_MEAN_COUNT
  • Dataflow 不支持根据 Distribution 指标创建直方图。
  • Dataflow 大约每 30 秒向 Monitoring 报告一次增量更新。
  • 为避免冲突,所有 Dataflow 自定义指标都导出为 double 数据类型。
  • 为简单起见,所有 Dataflow 自定义指标都导出为 GAUGE 指标种类。您可以监控 GAUGE 指标在一段时间内的增量,如以下 Monitoring Query Language 示例所示:

     fetch dataflow_job
     | metric 'dataflow.googleapis.com/job/user_counter'
     | filter (metric.job_id == '[JobID]')
     | delta 1m
     | group_by 1m, [value_user_counter_mean: mean(value.user_counter)]
     | every 1m
     | group_by [metric.ptransform, metric.metric_name],
       [value_user_counter_mean_aggregate: aggregate(value_user_counter_mean)]
    
  • Dataflow 自定义指标在 Monitoring 中显示为标签为 metric_name: metric-nameptransform: ptransform-namedataflow.googleapis.com/job/user_counter

  • 为了向后兼容,Dataflow 还会将自定义指标作为 custom.googleapis.com/dataflow/metric-name 报告给 Monitoring。

  • Dataflow 自定义指标受到 Monitoring 中基数的限制。

  • 每个项目最多只能有 100 个 Dataflow 自定义指标。这些指标发布为 custom.googleapis.com/dataflow/metric-name

报告给 Monitoring 的自定义指标会按照 Cloud Monitoring 价格计费。

使用 Metrics Explorer

使用 Monitoring 探索 Dataflow 指标。 请按照本部分中的步骤操作,并观察为您的每个 Apache Beam 流水线提供的标准指标。如需详细了解如何使用 Metrics Explorer,请参阅使用 Metrics Explorer 创建图表

  1. 在 Google Cloud 控制台中,选择 Monitoring

    进入 Monitoring

  2. 在导航窗格中,选择 Metrics Explorer

  3. 选择指标窗格中,在过滤条件中输入 Dataflow Job

  4. 从显示的列表中,选择要观察的某个作业的指标。

运行 Dataflow 作业时,您可能还需要监控来源和接收器的指标。例如,您可能希望监控 BigQuery Storage API 指标。如需了解详情,请参阅创建信息中心、图表和提醒,以及来自 BigQuery Data Transfer Service 的指标的完整列表。

创建提醒政策和信息中心

利用 Monitoring,您可以访问与 Dataflow 相关的指标。创建信息中心以绘制指标的时间序列,并创建提醒政策以便在指标达到指定值时通知您。

创建资源组

为了更轻松地设置提醒和构建信息中心,请创建包含多个 Apache Beam 流水线的资源组。

  1. 在 Google Cloud 控制台中,选择 Monitoring

    进入 Monitoring

  2. 在导航窗格中,选择群组

  3. 点击创建群组

  4. 输入群组名称。

  5. 添加过滤条件以定义此群组包含的 Dataflow 资源。 例如,您可以使用流水线的名称前缀作为其中一个过滤条件。 创建群组。

  6. 创建群组后,您就可以看到与该群组中资源相关的基本指标。

为 Dataflow 指标创建提醒政策

通过 Monitoring,您可以创建提醒并在指标超过指定阈值时收到通知。例如,当流处理流水线的系统延隔时间增加到预定义值以上时,您可以收到通知。

  1. 在 Google Cloud 控制台中,选择 Monitoring

    进入 Monitoring

  2. 在导航窗格中,选择提醒

  3. 点击创建政策

  4. 新建提醒政策页面上,定义提醒发出条件和通知渠道。
    例如,要为 WindowedWordCount Apache Beam 流水线群组的系统延隔时间设置提醒,请执行以下步骤:

    1. 点击选择指标
    2. 选择指标字段中,输入 Dataflow Job
    3. 对于指标类别,请选择作业
    4. 对于指标,选择系统延隔时间

    每次触发提醒时,都会创建一个突发事件和相应的事件。如果您在提醒中指定了通知机制(例如电子邮件或短信),您将会收到通知。

构建自定义监控信息中心

您可以使用与 Dataflow 最为相关的图表构建 Monitoring 信息中心。 如需将图表添加到信息中心,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,选择 Monitoring

    进入 Monitoring

  2. 在导航窗格中,选择信息中心

  3. 点击创建信息中心

  4. 点击添加微件

  5. 添加微件窗口中,对于数据,选择指标

  6. 选择指标窗格中,对于指标,输入 Dataflow Job

  7. 选择指标类别和指标。

您可以根据需要向信息中心添加任意数量的图表。

从 Monitoring 代理接收工作器虚拟机指标

您可以使用 Monitoring 来监控永久性磁盘、CPU、网络和进程指标。运行流水线时,请从 Dataflow 工作器虚拟机实例启用 Monitoring 代理。请参阅可用的 Monitoring 代理指标列表。

要启用 Monitoring 代理,请在运行流水线时使用 --experiments=enable_stackdriver_agent_metrics 选项。工作器服务账号必须具有 roles/monitoring.metricWriter 角色。

要在不停止流水线的情况下停用 Monitoring 代理,请启动替换作业并且不指定 --experiments=enable_stackdriver_agent_metrics 参数,以更新流水线。

存储和保留

已完成或已取消的 Dataflow 作业的相关信息会存储 30 天。

操作日志存储在 _Default 日志存储桶中。 Logging API 服务名称为 dataflow.googleapis.com。如需详细了解 Cloud Logging 中使用的 Google Cloud 受监控的资源类型和服务,请参阅受监控的资源和服务

如需详细了解 Logging 将保留日志条目多长时间,请参阅“配额和限制:日志保留期限”中的保留期限信息。

如需了解如何查看操作日志,请参阅监控和查看流水线日志

后续步骤

如需了解详情,请考虑探索以下资源: