Créer des alertes de métriques 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é.

Créer 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 zone de saisie "Filtrer par nom de ressource ou de métrique", saisissez "dataproc" pour répertorier les métriques Dataproc. Naviguez dans 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 job Dataproc de longue durée

Dataproc émet la métrique dataproc.googleapis.com/job/state, qui suit la durée d'affichage 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 du job dépasse un seuil de durée.

Configuration de l'alerte de durée du job

Cet exemple utilise le langage de requête Monitoring (MQL) pour créer une règle d'alerte (consultez la section 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 est en cours d'exécution depuis 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 de l'application YAML de longue durée

L'exemple précédent montre une alerte qui se déclenche lorsqu'une tâche Dataproc s'exécute plus longtemps que la durée spécifiée, mais qui 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 les métriques OSS pour configurer des alertes similaires qui surveillent le temps d'exécution des applications YARN.

Tout d'abord, quelques informations générales. YAML émet des métriques de temps d'exécution dans plusieurs buckets. Par défaut, YAML gère 60, 300 et 1 440 minutes en tant que seuils de bucket, et émet quatre métriques, running_0, running_60, running_300 et running_1440:

  • running_0 enregistre le nombre de tâches dont l'exécution est comprise entre 0 et 60 minutes.

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

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

  • running_1440 enregistre le nombre de jobs dont l'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.

Ces seuils de bucket par défaut peuvent être modifiés en transmettant de nouvelles valeurs à la propriété de 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 remplacements 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

  • metrics overrides: ‑‑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 répertorié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 YAML dépasse un seuil spécifié.

    • Si vous le souhaitez, ajoutez un filtre pour déclencher 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 (consultez la section Alerte de job 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 de requête Monitoring (MQL) pour créer une règle d'alerte (consultez la section Créer des règles d'alerte MQL (console)).

MQL de l'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 lorsqu'une tâche Dataproc échoue 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 la métrique dataproc.googleapis.com/cluster/capacity_deviation, qui indique la différence entre le nombre de nœuds attendu 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 s'écarte de la capacité prévue pendant une durée supérieure à un seuil spécifié.

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 émise 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 de l'alerte d'écart de capacité

Cet exemple utilise le langage de requête Monitoring (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 sur la 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