创建 Dataproc 指标提醒

您可以创建 Monitoring 提醒,以便在 Dataproc 集群或作业指标超过指定阈值时收到通知。

创建提醒的步骤

要创建提醒,请执行以下操作:

  1. 打开 Google Cloud 控制台中的提醒页面。

  2. 点击 + 创建政策以打开创建提醒政策页面。

    1. 点击选择指标
    2. 在“按资源或指标名称过滤”输入框中,输入“dataproc”以列出 Dataproc 指标。浏览 Cloud Dataproc 指标的层次结构,选择集群、作业、批处理或会话指标。
    3. 点击应用
    4. 点击下一步,打开配置提醒触发器窗格。
    5. 设置触发提醒的阈值。
    6. 点击下一步,打开配置通知并最终确定提醒窗格。
    7. 设置通知渠道、文档和提醒政策名称。
    8. 点击下一步查看提醒政策。
    9. 点击创建政策以创建提醒。

提醒示例

本部分介绍了针对提交到 Dataproc 服务的作业的示例提醒,以及针对作为 YARN 应用运行的作业的示例提醒。

长时间运行的 Dataproc 作业提醒

Dataproc 会发出 dataproc.googleapis.com/job/state 指标,用于跟踪作业在不同状态下所花费的时间。您可以在 Google Cloud 控制台 Metrics Explorer 的 Cloud Dataproc Job (cloud_dataproc_job) 资源下找到此指标。您可以使用此指标设置提醒,以便在作业的 RUNNING 状态超出时长阈值时通知您。

作业时长提醒设置

此示例使用 Monitoring Query Language (MQL) 创建提醒政策(请参阅创建 MQL 提醒政策 [控制台])。

fetch cloud_dataproc_job
| metric 'dataproc.googleapis.com/job/state'
| filter metric.state == 'RUNNING'
| group_by [resource.job_id, metric.state], 1m
| condition val() == true()

在以下示例中,当作业运行时间超过 30 分钟时,系统会触发提醒。

您可以按 resource.job_id 过滤查询,以将其应用于特定作业:

fetch cloud_dataproc_job
| metric 'dataproc.googleapis.com/job/state'
| filter (resource.job_id == '1234567890') && (metric.state == 'RUNNING')
| group_by [resource.job_id, metric.state], 1m
| condition val() == true()

长时间运行的 YARN 应用提醒

上例展示了当 Dataproc 作业的运行时间超过指定时长时触发的提醒,但它仅适用于通过 Google Cloud 控制台、Google Cloud CLI 或直接调用 Dataproc jobs API 提交到 Dataproc 服务的作业。您还可以使用 OSS 指标设置类似的提醒,以监控 YARN 应用的运行时间。

首先,介绍一些背景信息。YARN 会将运行时间指标发送到多个存储分区。默认情况下,YARN 将 60 分钟、300 分钟和 1440 分钟作为存储桶阈值,并发出 4 个指标:running_0running_60running_300running_1440

  • running_0 会记录运行时长介于 0 到 60 分钟的作业数量。

  • running_60 会记录运行时长介于 60 到 300 分钟的作业数量。

  • running_300 会记录运行时长介于 300 到 1440 分钟的作业数量。

  • running_1440 会记录运行时长超过 1440 分钟的作业数量。

例如,运行时长为 72 分钟的作业将记录在 running_60 中,但不会记录在 running_0 中。

您可以在创建 Dataproc 集群时向 yarn:yarn.resourcemanager.metrics.runtime.buckets 集群属性传递新值,以修改这些默认分桶阈值。定义自定义分桶阈值时,您还必须定义指标替换项。例如,如需指定 30、60 和 90 分钟的存储桶阈值,gcloud dataproc clusters create 命令应包含以下标志:

  • 存储桶阈值:‑‑properties=yarn:yarn.resourcemanager.metrics.runtime.buckets=30,60,90

  • 指标替换项:‑‑metric-overrides=yarn:ResourceManager:QueueMetrics:running_0, yarn:ResourceManager:QueueMetrics:running_30,yarn:ResourceManager:QueueMetrics:running_60, yarn:ResourceManager:QueueMetrics:running_90

集群创建命令示例

gcloud dataproc clusters create test-cluster  \
   --properties ^#^yarn:yarn.resourcemanager.metrics.runtime.buckets=30,60,90  \
   --metric-sources=yarn  \
   --metric-overrides=yarn:ResourceManager:QueueMetrics:running_0,yarn:ResourceManager:QueueMetrics:running_30,yarn:ResourceManager:QueueMetrics:running_60,yarn:ResourceManager:QueueMetrics:running_90

这些指标列在 Google Cloud 控制台 Metrics Explorer 的虚拟机实例 (gce_instance) 资源下。

YARN 应用提醒设置

  1. 创建已启用所需存储分区和指标的集群

  2. 创建一项提醒政策,以便在 YARN 指标分桶中的应用数量超出指定阈值时触发提醒。

    • (可选)添加过滤条件,以便在出现与模式匹配的集群时发出提醒。

    • 配置触发提醒的阈值。

Dataproc 作业失败提醒

您还可以使用 dataproc.googleapis.com/job/state 指标(请参阅Dataproc 作业运行时间过长提醒),在 Dataproc 作业失败时提醒您。

招聘信息提醒设置失败

此示例使用 Monitoring Query Language (MQL) 创建提醒政策(请参阅创建 MQL 提醒政策 [控制台])。

提醒 MQL
fetch cloud_dataproc_job
| metric 'dataproc.googleapis.com/job/state'
| filter metric.state == 'ERROR'
| group_by [resource.job_id, metric.state], 1m
| condition val() == true()
提醒触发器配置

在以下示例中,当项目中的任何 Dataproc 作业失败时,系统会触发提醒。

您可以按 resource.job_id 过滤查询,以将其应用于特定作业:

fetch cloud_dataproc_job
| metric 'dataproc.googleapis.com/job/state'
| filter (resource.job_id == '1234567890') && (metric.state == 'ERROR')
| group_by [resource.job_id, metric.state], 1m
| condition val() == true()

集群容量偏差提醒

Dataproc 会发出 dataproc.googleapis.com/cluster/capacity_deviation 指标,该指标会报告集群中预期节点数与活跃 YARN 节点数之间的差异。您可以在 Google Cloud 控制台 Metrics ExplorerCloud Dataproc 集群资源下找到此指标。您可以使用此指标创建提醒,以便在集群容量与预期容量偏差的时间超过指定阈值时向您发送通知。

以下操作可能会导致 capacity_deviation 指标中的集群节点暂时报告不足。为避免出现误报提醒,请设置指标提醒阈值,以涵盖以下操作:

  • 集群创建和更新:在集群创建或更新操作期间,系统不会发出 capacity_deviation 指标。

  • 集群初始化操作:初始化操作在预配节点后执行。

  • 辅助工作器更新:辅助工作器会在更新操作完成后异步添加。

容量偏差提醒设置

此示例使用 Monitoring Query Language (MQL) 创建提醒政策

fetch cloud_dataproc_cluster
| metric 'dataproc.googleapis.com/cluster/capacity_deviation'
| every 1m
| condition val() <> 0 '1'

在下例中,当集群容量偏差超过 30 分钟且不为零时,系统会触发提醒。

查看提醒

每次指标阈值条件触发提醒时,Monitoring 都会创建一个突发事件和相应的事件。您可以在 Google Cloud 控制台的 Monitoring Alerting 页面中查看突发事件。

如果您在提醒政策中定义了通知机制(例如电子邮件或短信通知),Monitoring 会发送突发事件通知。

后续步骤