Créer des alertes de métrique Dataproc

Vous pouvez créer une alerte Monitoring qui vous avertit lorsqu'une métrique de cluster ou de tâche Dataproc dépasse un seuil spécifié.

Procédure de création d'une alerte

Pour créer une alerte, procédez comme suit :

  1. Ouvrez la page Alertes dans la console Google Cloud.

  2. Cliquez sur + Créer une règle pour ouvrir la page Créer une règle d'alerte.

    1. Cliquez sur Sélectionner une métrique.
    2. Dans la colonne "Filtrer par nom de ressource ou de métrique", zone de saisie, saisissez "dataproc" pour répertorier les métriques Dataproc. Parcourez la hiérarchie des des métriques Cloud Dataproc pour sélectionner un cluster, un job, un lot, ou la métrique de session.
    3. Cliquez sur Appliquer.
    4. Cliquez sur Suivant pour ouvrir le volet Configurer un déclencheur d'alerte.
    5. Définissez une valeur de seuil pour déclencher l'alerte.
    6. Cliquez sur Suivant pour ouvrir le volet Configurer les notifications et finaliser l'alerte.
    7. Définissez les canaux de notification, la documentation et le nom de la règle d'alerte.
    8. Cliquez sur Suivant pour examiner la règle d'alerte.
    9. Cliquez sur Créer une règle pour créer l'alerte.

Exemples d'alertes

Cette section décrit un exemple d'alerte pour une tâche envoyée au service Dataproc et une alerte pour une tâche exécutée en tant qu'application YARN.

Alerte de job Dataproc de longue durée

Dataproc émet la métrique dataproc.googleapis.com/job/state, qui permet de suivre la durée de vie d'une tâche dans différents états. Cette métrique se trouve dans l'explorateur de métriques de la console Google Cloud, sous la ressource Tâche Cloud Dataproc (cloud_dataproc_job). Vous pouvez utiliser cette métrique pour configurer une alerte qui vous avertit lorsque l'état RUNNING de la tâche dépasse un seuil de durée.

Configuration de l'alerte de durée de la tâche

Cet exemple utilise le langage MQL (Monitoring Query Language) pour créer une règle d'alerte (voir Créer des règles d'alerte MQL ; (console)).

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()

Dans l'exemple suivant, l'alerte se déclenche lorsqu'un job est en cours d'exécution. pendant plus de 30 minutes.

Vous pouvez modifier la requête en filtrant sur resource.job_id pour l'appliquer à une tâche spécifique :

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()

Alerte d'application YARN de longue durée

L'exemple précédent montre une alerte déclenchée lorsqu'une tâche Dataproc s'exécute plus longtemps que la durée spécifiée, mais elle ne s'applique qu'aux tâches envoyées au service Dataproc via la console Google Cloud, la Google Cloud CLI ou par des appels directs à l'API Dataproc jobs. Vous pouvez aussi utiliser les métriques Open Source pour configurer des alertes similaires qui surveillent la durée d'exécution des applications YARN.

Commençons par quelques informations générales. YARN émet des métriques de temps d'exécution dans plusieurs buckets. Par défaut, YARN maintient des seuils de bucket de 60, 300 et 1 440 minutes et émet quatre métriques : running_0, running_60, running_300 et running_1440 :

  • running_0 enregistre le nombre de jobs dont la durée d'exécution est comprise entre 0 et 60 minutes.

  • running_60 enregistre le nombre de tâches dont la durée d'exécution est comprise entre 60 et 300 minutes.

  • running_300 enregistre le nombre de tâches dont la durée d'exécution est comprise entre 300 et 1 440 minutes.

  • running_1440 enregistre le nombre de jobs dont le temps d'exécution est supérieur à 1 440 minutes.

Par exemple, un job exécuté pendant 72 minutes sera enregistré dans running_60, mais pas dans running_0.

Vous pouvez modifier ces seuils de bucket par défaut en transmettant de nouvelles valeurs à la propriété du cluster yarn:yarn.resourcemanager.metrics.runtime.buckets lors de la création du cluster Dataproc. Lorsque vous définissez des seuils de buckets personnalisés, vous devez également définir des forçages de métriques. Par exemple, pour spécifier des seuils de bucket 30, 60 et 90 minutes, la commande gcloud dataproc clusters create doit inclure les indicateurs suivants:

  • seuils de bucket: ‑‑properties=yarn:yarn.resourcemanager.metrics.runtime.buckets=30,60,90

  • remplacements de métriques: ‑‑metric-overrides=yarn:ResourceManager:QueueMetrics:running_0, yarn:ResourceManager:QueueMetrics:running_30,yarn:ResourceManager:QueueMetrics:running_60, yarn:ResourceManager:QueueMetrics:running_90

Exemple de commande de création de cluster

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

Ces métriques sont listées dans l'explorateur de métriques de la console Google Cloud sous la ressource Instance de VM (gce_instance).

Configuration des alertes de l'application YARN

  1. Créez un cluster avec les buckets et les métriques requis activés.

  2. Créez une règle d'alerte qui se déclenche lorsque le nombre d'applications dans un bucket de métriques YARN dépasse un seuil spécifié.

    • Vous pouvez également ajouter un filtre pour générer une alerte sur les clusters qui correspondent à un schéma.

    • Configurez le seuil de déclenchement de l'alerte.

Alerte de job Dataproc ayant échoué

Vous pouvez également utiliser la métrique dataproc.googleapis.com/job/state. (voir Alerte de job Dataproc de longue durée). pour vous alerter en cas d'échec d'un job Dataproc.

Échec de la configuration des alertes d'emploi

Cet exemple utilise le langage Monitoring Query Language (MQL) pour créer une règle d'alerte (voir Créer des règles d'alerte MQL (console)).

MQL d'alerte
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()
Configuration du déclencheur d'alerte

Dans l'exemple suivant, l'alerte se déclenche en cas d'échec d'une tâche Dataproc dans votre projet.

Vous pouvez modifier la requête en filtrant sur resource.job_id pour l'appliquer à une tâche spécifique :

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()

Alerte d'écart de capacité du cluster

Dataproc émet le dataproc.googleapis.com/cluster/capacity_deviation qui indique la différence entre le nombre de nœuds attendu le cluster et le nombre de nœuds YARN actifs. Vous trouverez cette métrique dans l'explorateur de métriques de la console Google Cloud, sous la ressource Cluster Cloud Dataproc. Vous pouvez utiliser cette métrique pour créer une alerte qui vous avertit lorsque la capacité du cluster diffère de la capacité prévue pendant plus longtemps que la valeur spécifiée la durée du seuil.

Les opérations suivantes peuvent entraîner une sous-création temporaire des nœuds de cluster dans la métrique capacity_deviation. Pour éviter les alertes de faux positifs, définissez le seuil d'alerte de métrique pour tenir compte de ces opérations:

  • Création et mise à jour du cluster:la métrique capacity_deviation n'est pas émises lors des opérations de création ou de mise à jour du cluster.

  • Actions d'initialisation du cluster:les actions d'initialisation sont effectuées après le provisionnement d'un nœud.

  • Mises à jour des nœuds de calcul secondaires:les nœuds de calcul secondaires sont ajoutés de manière asynchrone. une fois l'opération de mise à jour terminée.

Configuration d'une alerte de dérive de la capacité

Cet exemple utilise le langage MQL (Monitoring Query Language) pour créer une règle d'alerte.

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

Dans l'exemple suivant, l'alerte se déclenche en cas d'écart de capacité du cluster. est différent de zéro pendant plus de 30 minutes.

Afficher les alertes

Lorsqu'une condition de seuil de métrique déclenche une alerte, Monitoring crée un incident (et un événement correspondant). Vous pouvez consulter les incidents Page Alertes Monitoring de la console Google Cloud.

Si vous avez défini un mécanisme de notification dans la règle d'alerte, telle qu'une notification par e-mail ou SMS, Monitoring envoie une notification de l'incident.

Étape suivante