Dataproc 指標アラートを作成する

Dataproc クラスタまたはジョブの指標が指定されたしきい値を超えた場合に通知する Monitoring アラートを作成できます。

アラートの作成手順

アラートを作成するには、次の手順を行います。

  1. Google Cloud コンソールで [アラート] ページを開きます。

  2. [+ ポリシーを作成] をクリックして、[アラート ポリシーの作成] ページを表示します。

    1. [指標を選択] をクリックします。
    2. [リソース名または指標名でフィルタ] 入力ボックスに「dataproc」と入力して、Dataproc 指標を一覧表示します。[Cloud Dataproc ]指標の階層内を移動し、クラスタ、ジョブ、バッチ、セッションの指標を選択します。
    3. [Apply](適用)をクリックします。
    4. [次へ] をクリックして [アラート トリガーの構成] ペインを開きます。
    5. アラートをトリガーするしきい値を設定します。
    6. [次へ] をクリックして [通知の構成とアラートの完了] ペインを開きます。
    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 ~ 1,440 分のジョブの数を記録します。

  • running_1440 は、ランタイムが 1,440 分を超えるジョブの数を記録します。

たとえば、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 の、[VM インスタンス](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 のアラートページから表示できます。

アラート ポリシーに通知メカニズム(メールや SMS 通知など)を定義した場合も、Monitoring によってインシデントの通知が送信されます。

次のステップ