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 le champ de saisie "Filtrer par nom de ressource ou de métrique", saisissez "dataproc" pour afficher les métriques Dataproc. Parcourez la hiérarchie des métriques Cloud Dataproc pour sélectionner une métrique de cluster, de tâche, de lot ou de session.
    3. Cliquez sur Appliquer.
    4. Cliquez sur Suivant pour ouvrir le volet Configurer le 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 tâche Dataproc de longue durée

Dataproc émet la métrique dataproc.googleapis.com/job/state, qui suit la durée pendant laquelle une tâche a été 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 Monitoring Query Language (MQL) 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'une tâche s'exécute 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 également utiliser des métriques OSS 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 durée 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 jobs 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 tâches dont la durée d'exécution est supérieure à 1 440 minutes.

Par exemple, une tâche exécutée pendant 72 minutes sera enregistrée 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 de 30, 60 et 90 minutes, la commande gcloud dataproc clusters create doit inclure les options suivantes:

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

  • forçages 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 d'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 en cas de clusters correspondant à un modèle.

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

Alerte de tâche Dataproc ayant échoué

Vous pouvez également utiliser la métrique dataproc.googleapis.com/job/state (voir Alerte de tâche Dataproc de longue durée) pour être averti lorsqu'une tâche Dataproc échoue.

É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 de déviation de la capacité du cluster

Dataproc émet la métrique dataproc.googleapis.com/cluster/capacity_deviation, qui indique la différence entre le nombre de nœuds prévu dans 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é attendue pendant plus d'une durée de seuil spécifiée.

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

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

  • Actions d'initialisation de 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 Monitoring Query Language (MQL) 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 lorsque l'é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 afficher les incidents à partir de la page Alertes Monitoring dans 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