Personnaliser le tableau de bord de surveillance Dataflow

Cette page explique comment personnaliser le tableau de bord de surveillance des projets Dataflow en ajoutant un graphique qui interroge les métriques Cloud Monitoring.

Le tableau de bord de surveillance des projets vous permet de surveiller une collection de jobs et de voir leur état et leurs performances globales. Le tableau de bord contient un ensemble par défaut de graphiques utiles pour la plupart des charges de travail. En personnalisant le tableau de bord, vous pouvez ajouter des graphiques spécifiques à vos besoins commerciaux.

Exemple de scénario

Pour vous montrer comment personnaliser le tableau de bord, supposons qu'une organisation souhaite suivre le coût estimé des 25 principaux jobs de son projet.

Pour ce scénario, supposons que les tâches présentent les caractéristiques suivantes :

Choisir des métriques

Les métriques suivantes sont nécessaires pour estimer le coût d'un job, en fonction des hypothèses listées dans la section précédente :

RessourceMétrique pertinente
CPU (vCPU par heure) job/total_vcpu_time
Mémoire (Go par heure) job/total_memory_usage_time
Données traitées pendant le shuffle (Go) job/total_streaming_data_processed
Utilisation de disques persistants (Go par heure, standards et SSD) job/total_pd_usage_time

Pour en savoir plus, consultez la page Tarifs de Dataflow.

Pour savoir quelles ressources sont disponibles dans Monitoring, consultez Types de ressources surveillées.

Écrire une requête PromQL

Pour interroger les métriques de Cloud Monitoring, utilisez le langage de requête Prometheus (PromQL). Cette section explique comment écrire une requête PromQL pour le scénario en la construisant à partir de clauses plus petites. Cette section ne suppose aucune connaissance préalable de PromQL. Pour en savoir plus, consultez PromQL dans Cloud Monitoring.

Mapper les noms de métriques à des chaînes PromQL

Pour utiliser les métriques Monitoring dans les requêtes PromQL, vous devez mapper le nom de la métrique à une chaîne PromQL, comme suit :

Nom de la métriqueChaîne PromQL
job/total_vcpu_time dataflow_googleapis_com:job_total_vcpu_time
job/total_memory_usage_time dataflow_googleapis_com:job_total_memory_usage_time
job/total_streaming_data_processed dataflow_googleapis_com:job_total_streaming_data_processed
job/total_pd_usage_time dataflow_googleapis_com:job_total_pd_usage_time

Pour en savoir plus, consultez Mapper des métriques Cloud Monitoring à PromQL.

Créer la requête

Pour obtenir le coût estimé, calculez le prix de chaque composant en fonction de la valeur la plus récente de chaque métrique. Les métriques sont échantillonnées toutes les 60 secondes. Pour obtenir la dernière valeur, utilisez une fonction de fenêtrage d'une minute et prenez la valeur maximale dans chaque fenêtre.

  • Pour obtenir le coût estimé du processeur, commencez par convertir job/total_vcpu_time de secondes en heures. Multipliez par le prix du processeur par vCPU et par heure.

    # ((vCPU time)[Bucket 1m] / Seconds per hour * vCPU Price)
    max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
    

    Cette formule donne le coût estimé du processeur pour tous les jobs du projet. Pour obtenir le coût estimé du processeur par job, utilisez l'opérateur d'agrégation sum et regroupez les résultats par ID de job.

    sum(
      max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
    ) by (job_id)
    
  • Pour obtenir le coût mémoire estimé, convertissez job/total_memory_usage_time de secondes en heures. Multipliez par le prix de la mémoire par Go et par heure, puis regroupez par ID de job.

    #((Memory time)[Bucket 1m] / Seconds per hour) * Memory Price
    sum(
      max_over_time(dataflow_googleapis_com:job_total_memory_usage_time[1m]) / 3600 * MEMORY_PRICE
    ) by (job_id)
    
  • Pour obtenir le coût de shuffle estimé, convertissez job/total_streaming_data_processed d'octets en Go. Multipliez le résultat par le prix des données traitées lors du shuffle par Go et regroupez les résultats par ID de job.

    # Shuffle Billing. Reported once every 60 seconds, measured in bytes.
    # Formula: (Shuffle Data)[Bucket 1m] / (Bytes in GB) * (Shuffle Price)
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_streaming_data_processed[1m]
     ) / 1000000000 * SHUFFLE_PRICE
    ) by (job_id)
    
  • Pour obtenir une estimation des coûts d'utilisation des disques persistants, indexez le libellé storage_type pour séparer les coûts par type de disque (standard ou SSD). Convertissez chaque valeur de Go-secondes en Go-heures et regroupez-les par ID de job.

    # Formula: ((Standard PD time)[Bucket 1m] / Seconds per hour) * Standard PD price
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_pd_usage_time{storage_type="HDD"}[1m]
      ) / 3600 * STANDARD_PD_PRICE
    ) by (job_id)
    
    # Formula: ((SSD PD time)[Bucket 1m] / Seconds per hour) * SSD PD price
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_pd_usage_time{storage_type="SSD"}[1m]
      ) / 3600 * SSD_PD_PRICE
    ) by (job_id)
    
  • En additionnant les valeurs précédentes, vous obtenez le coût estimé par job. Pour obtenir les 25 premiers postes, utilisez un filtre top K :

    topk(25,
      # Sum the individual values.
    )
    

Rédiger la requête complète

Voici la requête complète :

topk(25,
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_memory_usage_time[1m]) / 3600 * MEMORY_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_streaming_data_processed[1m]) / 1000000000 * SHUFFLE_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_pd_usage_time{storage_type="HDD"}[1m]) / 3600 * STANDARD_PD_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_pd_usage_time{storage_type="SSD"}[1m]) / 3600 * SSD_PD_PRICE
  )
  by (job_id)
)

Remplacez les variables suivantes par les valeurs de la page de tarification Dataflow pour votre région.

  • CPU_PRICE : prix du processeur, par vCPU et par heure
  • MEMORY_PRICE : prix de la mémoire, par Go et par heure
  • SHUFFLE_PRICE : prix du shuffle, par Go
  • STANDARD_PD_PRICE : prix du disque persistant standard, par Go et par heure
  • SSD_PD_PRICE : prix du disque persistant SSD, par Go et par heure

Modifier le tableau de bord

Si vous n'avez pas encore créé de tableau de bord personnalisé pour Dataflow dans ce projet, créez-en un comme suit :

  1. Dans la console Google Cloud , accédez à la page Dataflow > Surveillance.

    Accéder à Monitoring

  2. Dans le menu déroulant Prédéfini, cliquez sur Personnaliser le tableau de bord.

  3. Facultatif : Saisissez un nom pour le tableau de bord dans la zone Nom de la vue personnalisée.

Si vous avez déjà créé un tableau de bord personnalisé, procédez comme suit pour le modifier :

  1. Dans la console Google Cloud , accédez à la page Dataflow > Surveillance.

    Accéder à Monitoring

  2. Dans le menu déroulant Prédéfini, sélectionnez le tableau de bord personnalisé.

  3. Cliquez sur Modifier le tableau de bord.

Ajouter un graphique de métriques

Pour ajouter un graphique de métriques au tableau de bord, procédez comme suit :

  1. Cliquez sur Ajouter le widget.
  2. Dans le volet Ajouter un widget, sélectionnez Métrique.
  3. Dans la zone Titre du widget, saisissez un titre pour le graphique, par exemple Estimated cost (top 25).
  4. Cliquez sur PROMQL.
  5. Collez la requête PromQL affichée précédemment.
  6. Cliquez sur Exécuter la requête.
  7. Cliquez sur Appliquer.
  8. Facultatif : Faites glisser le graphique pour le positionner sur le tableau de bord.

Étapes suivantes