Cloud Monitoring 提供了强大的日志记录和诊断功能。通过 Dataflow 与 Monitoring 的集成,您可以从 Monitoring 信息中心访问各种 Dataflow 作业指标,例如作业状态、元素计数、系统延隔时间(适用于流式传输作业)和用户计数器。您还可以使用 Monitoring 提醒功能来接收各种条件的通知,例如,流式传输系统延隔时间过长或作业失败。
准备工作
按照 Java 快速入门、Python 快速入门或 Go 快速入门设置 Dataflow 项目。然后,构建并运行流水线。
如需在 Metrics Explorer 中查看日志,工作器服务账号必须具有 roles/monitoring.metricWriter
角色。
自定义指标
对于您在 Apache Beam 流水线中定义的任何指标,Dataflow 都会将其作为自定义指标报告给 Monitoring。Apache Beam 具有三种流水线指标:Counter
、Distribution
和 Gauge
。
- Dataflow 向 Monitoring 报告
Counter
和Distribution
指标。 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-name
和ptransform: ptransform-name
的dataflow.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 创建图表。
在 Google Cloud 控制台中,选择 Monitoring:
在导航窗格中,选择 Metrics Explorer。
在选择指标窗格中,在过滤条件中输入
Dataflow Job
。从显示的列表中,选择要观察的某个作业的指标。
运行 Dataflow 作业时,您可能还需要监控来源和接收器的指标。例如,您可能希望监控 BigQuery Storage API 指标。如需了解详情,请参阅创建信息中心、图表和提醒,以及来自 BigQuery Data Transfer Service 的指标的完整列表。
创建提醒政策和信息中心
利用 Monitoring,您可以访问与 Dataflow 相关的指标。创建信息中心以绘制指标的时间序列,并创建提醒政策以便在指标达到指定值时通知您。
创建资源组
为了更轻松地设置提醒和构建信息中心,请创建包含多个 Apache Beam 流水线的资源组。
在 Google Cloud 控制台中,选择 Monitoring:
在导航窗格中,选择群组。
点击创建群组。
输入群组名称。
添加过滤条件以定义此群组包含的 Dataflow 资源。 例如,您可以使用流水线的名称前缀作为其中一个过滤条件。
创建群组后,您就可以看到与该群组中资源相关的基本指标。
为 Dataflow 指标创建提醒政策
通过 Monitoring,您可以创建提醒并在指标超过指定阈值时收到通知。例如,当流处理流水线的系统延隔时间增加到预定义值以上时,您可以收到通知。
在 Google Cloud 控制台中,选择 Monitoring:
在导航窗格中,选择提醒。
点击创建政策。
在新建提醒政策页面上,定义提醒发出条件和通知渠道。
例如,要为WindowedWordCount
Apache Beam 流水线群组的系统延隔时间设置提醒,请执行以下步骤:- 点击选择指标。
- 在选择指标字段中,输入
Dataflow Job
。 - 对于指标类别,请选择作业。
- 对于指标,选择系统延隔时间。
每次触发提醒时,都会创建一个突发事件和相应的事件。如果您在提醒中指定了通知机制(例如电子邮件或短信),您将会收到通知。
构建自定义监控信息中心
您可以使用与 Dataflow 最为相关的图表构建 Monitoring 信息中心。 如需将图表添加到信息中心,请按以下步骤操作:
在 Google Cloud 控制台中,选择 Monitoring:
在导航窗格中,选择信息中心。
点击创建信息中心。
点击添加微件。
在添加微件窗口中,对于数据,选择指标。
在选择指标窗格中,对于指标,输入
Dataflow Job
。选择指标类别和指标。
您可以根据需要向信息中心添加任意数量的图表。
从 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 将保留日志条目多长时间,请参阅“配额和限制:日志保留期限”中的保留期限信息。
如需了解如何查看操作日志,请参阅监控和查看流水线日志。
后续步骤
如需了解详情,请考虑探索以下资源: