创建 Dataproc 指标提醒

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

创建提醒的步骤

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

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

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

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

提醒示例

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

长时间运行的 Dataproc 作业提醒

Dataproc 会发出 dataproc.googleapis.com/job/state 指标,该指标用于跟踪作业处于不同状态的时长。此指标位于 Google Cloud 控制台 Metrics Explorer 中的 Cloud Dataproc 作业 (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

  • metrics overrides: ‑‑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 会发送突发事件通知。

后续步骤