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 :
- Les jobs sont tous des jobs de traitement de flux.
- Les jobs utilisent le modèle de facturation par données traitées.
- Les jobs enregistrent les fichiers sur un disque persistant, qu'il s'agisse d'un disque dur standard (HDD) ou SSD.
- Les jobs n'utilisent pas de GPU.
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 :
Ressource | Mé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étrique | Chaî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 :
Dans la console Google Cloud , accédez à la page Dataflow > Surveillance.
Dans le menu déroulant Prédéfini, cliquez sur Personnaliser le tableau de bord.
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 :
Dans la console Google Cloud , accédez à la page Dataflow > Surveillance.
Dans le menu déroulant Prédéfini, sélectionnez le tableau de bord personnalisé.
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 :
- Cliquez sur Ajouter le widget.
- Dans le volet Ajouter un widget, sélectionnez Métrique.
- Dans la zone Titre du widget, saisissez un titre pour le graphique, par exemple
Estimated cost (top 25)
. - Cliquez sur PROMQL.
- Collez la requête PromQL affichée précédemment.
- Cliquez sur Exécuter la requête.
- Cliquez sur Appliquer.
- Facultatif : Faites glisser le graphique pour le positionner sur le tableau de bord.
Étapes suivantes
- Ajoutez une ligne de référence pour voir quand une métrique dépasse un seuil prédéfini.
- Découvrez PromQL.
- En savoir plus sur les tableaux de bord