Partager via


Surveiller le coût de l'informatique sans serveur

Cet article explique comment utiliser le tableau d'utilisation facturable pour suivre le coût de l'utilisation de calcul sans serveur.

Vous pouvez monitorer l’utilisation du calcul serverless pour les notebooks et les travaux en interrogeant la table système de l’utilisation facturable (system.billing.usage), qui inclut les attributs des utilisateurs et des charges de travail liés aux coûts du calcul serverless. Les champs applicables sont les suivants :

  • La colonne identity_metadata inclut le champ run_as, qui indique l’utilisateur ou le principal de service dont les informations d’identification ont été utilisées pour exécuter la charge de travail.
  • La colonne usage_metadata comporte des champs qui décrivent la charge de travail : job_run_id, job_name, notebook_id et notebook_path.

Fonctionnalités supplémentaires facturées comme étant sans serveur

Il existe plusieurs fonctionnalités Azure Databricks qui exploitent le calcul sans serveur en arrière-plan, mais qui ne nécessitent pas que votre compte soit activé pour le calcul sans serveur pour les carnets, les flux de travail et les pipelines déclaratifs Lakeflow.

Les fonctionnalités suivantes sont facturées sous la référence SKU des travaux serverless :

  • Monitoring de lakehouse : journalisé dans la table de facturation avec une valeur billing_origin_product de LAKEHOUSE_MONITORING.
  • Optimisation prédictive : journalisé dans la table de facturation avec une valeur billing_origin_product de PREDICTIVE_OPTIMIZATION.
  • Vues matérialisées dans Databricks SQL : lorsque vous créez une vue matérialisée dans un entrepôt SQL, un pipeline serverless est créé pour traiter les actualisations. Vous pouvez afficher les enregistrements de facturation pour la vue matérialisée en interrogeant les enregistrements correspondant à billing_origin_product = 'SQL' et usage_metadata.dlt_pipeline_id IS NOT NULL.
  • Contrôle d’accès affiné sur le calcul dédié : identifiable par la valeur de billing_origin_productFINE_GRAINED_ACCESS_CONTROL.
  • Salles propres : la salle propre spécifique liée à l’utilisation est enregistrée sous usage_metadata.central_clean_room_id.

Considérations relatives aux enregistrements d’utilisation sans serveur

Lorsque vous analysez votre utilisation serverless, tenez compte des points suivants :

  • Vous pouvez voir plusieurs enregistrements associés à une charge de travail de calcul serverless donnée dans une heure donnée. Par exemple, vous pouvez voir plusieurs enregistrements avec le même job_id, job_run_idou job_name, mais avec des valeurs de consommation DBU différentes pour chacune d’elles. La somme de ces DBU représente collectivement la consommation horaire de DBU pour une exécution de travail donnée.

Utilisez des budgets pour surveiller les dépenses

Les administrateurs de compte peuvent configurer des budgets pour regrouper les coûts et configurer des alertes. Voir Créer et surveiller les budgets.

Importer un tableau de bord de l’utilisation

Les administrateurs de compte peuvent importer des tableaux de bord de gestion des coûts vers n’importe quel espace de travail Unity Catalog de leur compte. Consultez la section Importer un tableau de bord de l’utilisation.

Rechercher un travail ou un notebook dans l’interface utilisateur

Pour rechercher un travail ou un notebook dans l’interface utilisateur en fonction d’un enregistrement de facturation, copiez la valeur usage_metadata.job_id ou usage_metadata.notebook_id de l’enregistrement d’utilisation. Ces ID sont immuables et peuvent être utilisés même si le nom de la tâche ou le chemin d’accès du notebook change.

Pour trouver un travail dans l’interface utilisateur en fonction de son job_id :

  1. Copiez le job_id à partir de l’enregistrement d’utilisation. Pour cet exemple, supposons que l’ID est 700809544510906.
  2. Accédez à l’interface utilisateur Travaux &Pipelines dans le même espace de travail Azure Databricks que le travail.
  3. Sélectionnez le filtre Accessible par moi .
  4. Collez l’ID (700809544510906) dans la barre de recherche Filtrer les travaux.

Pour rechercher un bloc-notes dans l’interface utilisateur à partir de son notebook_id, suivez les directives ci-dessous :

  1. Copiez le notebook_id à partir de l’enregistrement d’utilisation. Pour cet exemple, supposons que l’ID est 700809544510906.
  2. Accédez à l’interface utilisateur de Espace de travail dans le même espace de travail Azure Databricks que le notebook.
  3. Cliquez sur n’importe quel notebook dans la liste.
  4. Une fois que vous avez ouvert le bloc-notes, examinez l’URL dans la barre d’adresses du navigateur. Il doit ressembler à https://<account-console-url>/?o=<workspace ID>#notebook/<notebook ID>/command/<command ID>.
  5. Dans la barre d’adresses du navigateur, remplacez l’ID de notebook par l’ID que vous avez copié à la première étape, puis supprimez tout ce qui suit l’ID du notebook. Il doit ressembler à https://<account-console-url>/?o=<workspace ID>#notebook/700809544510906.
  6. Après avoir ouvert le notebook, vous pouvez cliquer sur le bouton Partager pour afficher le propriétaire du notebook.

Utiliser des alertes pour suivre les dépenses relatives au serverless

Les alertes constituent une méthode puissante pour rester informé sur les dépenses de serverless. Grâce aux alertes, vous pouvez recevoir des notifications quand certaines conditions sont remplies dans vos résultats de requêtes. Pour découvrir comment créer des alertes, consultez Créer une alerte.

Vous pouvez ajouter des alertes aux requêtes suivantes pour surveiller vos budgets. Dans chaque requête, remplacez {budget} par le budget choisi.

Recevoir une alerte lorsque les dépenses d’un espace de travail dépassent un seuil au cours des 30 derniers jours

Vous pouvez définir une alerte à déclencher quand cette requête renvoie une ligne. Remplacez {budget} par le budget choisi.

SELECT
   t1.workspace_id,
   SUM(t1.usage_quantity * list_prices.pricing.default) as list_cost
FROM system.billing.usage t1
INNER JOIN system.billing.list_prices on
   t1.cloud = list_prices.cloud and
   t1.sku_name = list_prices.sku_name and
   t1.usage_start_time >= list_prices.price_start_time and
   (t1.usage_end_time <= list_prices.price_end_time or list_prices.price_end_time is null)
WHERE
   t1.sku_name LIKE '%SERVERLESS%'
   AND billing_origin_product IN ("JOBS", "INTERACTIVE")
   AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
   t1.workspace_id
HAVING
   list_cost > {budget}

Recevoir une alerte lorsqu’un utilisateur dépasse le seuil au cours des 30 derniers jours

Vous pouvez définir une alerte à déclencher quand cette requête renvoie une ligne. Remplacez {budget} par le budget choisi.

SELECT
   t1.identity_metadata.run_as,
   SUM(t1.usage_quantity * list_prices.pricing.default) as list_cost
FROM system.billing.usage t1
INNER JOIN system.billing.list_prices on
   t1.cloud = list_prices.cloud and
   t1.sku_name = list_prices.sku_name and
   t1.usage_start_time >= list_prices.price_start_time and
   (t1.usage_end_time <= list_prices.price_end_time or list_prices.price_end_time is null)
WHERE
   t1.sku_name LIKE '%SERVERLESS%'
   AND billing_origin_product IN ("JOBS", "INTERACTIVE")
   AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
   t1.identity_metadata.run_as
HAVING
   list_cost > {budget}

Recevoir une alerte lorsqu’un travail dépasse le seuil au cours des 30 derniers jours

Vous pouvez définir une alerte à déclencher quand cette requête renvoie une ligne. Remplacez {budget} par le budget choisi.

SELECT
   t1.workspace_id,
   t1.usage_metadata.job_id,
   SUM(t1.usage_quantity * list_prices.pricing.default) as list_cost
FROM system.billing.usage t1
INNER JOIN system.billing.list_prices on
   t1.cloud = list_prices.cloud and
   t1.sku_name = list_prices.sku_name and
   t1.usage_start_time >= list_prices.price_start_time and
   (t1.usage_end_time <= list_prices.price_end_time or list_prices.price_end_time is null)
WHERE
   t1.sku_name LIKE '%SERVERLESS%'
   AND billing_origin_product IN ("JOBS")
   AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
   t1.workspace_id, t1.usage_metadata.job_id
HAVING
   list_cost > {budget}

Exemples de requêtes

Utilisez les requêtes suivantes pour obtenir des insights sur l’utilisation du serverless dans votre compte :

Trier les notebooks serverless en fonction du total des dépenses

Cette requête retourne une liste de notebooks et le nombre de DBU consommées par chaque notebook, par ordre décroissant de consommation de DBU :

SELECT
  usage_metadata.notebook_id,
  usage_metadata. notebook_path,
  SUM(usage_quantity) as total_dbu
FROM
  system.billing.usage
WHERE
  usage_metadata.notebook_id is not null
  and billing_origin_product = 'INTERACTIVE'
  and product_features.is_serverless
  and usage_unit = 'DBU'
  and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
  1,2
ORDER BY
  total_dbu DESC

Trier les travaux serverless en fonction du montant total des dépenses

Cette requête retourne une liste de travaux et le nombre de DBU consommées par chaque travail, par ordre décroissant de consommation de DBU :

SELECT
  usage_metadata.job_id,
  usage_metadata.job_name,
  SUM(usage_quantity) as total_dbu
FROM
  system.billing.usage
WHERE
  usage_metadata.job_id is not null
  and usage_unit = 'DBU'
  and usage_date >= DATEADD(day, -30, current_date)
  and sku_name like '%JOBS_SERVERLESS_COMPUTE%'
GROUP BY
  1,2
ORDER BY
  total_dbu DESC

Rapport sur les DBU consommées par un utilisateur particulier

Cette requête retourne une liste de notebooks et de travaux qui utilisent le calcul serverless exécuté par un utilisateur ou un principal de service particulier, ainsi que le nombre de DBU consommées par chaque charge de travail :

SELECT
  usage_metadata.job_id,
  usage_metadata.job_name,
  usage_metadata.notebook_id,
  usage_metadata. notebook_path,
  SUM(usage_quantity) as total_dbu
FROM
  system.billing.usage
WHERE
  identity_metadata.run_as = '<emailaddress@domain.com>'
  and billing_origin_product in ('JOBS','INTERACTIVE')
  and product_features.is_serverless
  and usage_unit = 'DBU'
  and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
  1,2,3,4
ORDER BY
  total_dbu DESC

Rapport sur les DBU de calcul serverless consommées par les charges de travail qui partagent une étiquette personnalisée

Cette requête retourne une liste de travaux qui utilisent le calcul serverless et qui partagent la même étiquette personnalisée, ainsi que le nombre de DBU consommées par chaque charge de travail :

SELECT
  usage_metadata.job_id,
  usage_metadata.job_name,
  usage_metadata.notebook_id,
  usage_metadata. notebook_path,
  SUM(usage_quantity) as total_dbu
FROM
  system.billing.usage
WHERE
  custom_tags.<key> = '<value>'
  and billing_origin_product in ('JOBS','INTERACTIVE')
  and product_features.is_serverless
  and usage_unit = 'DBU'
  and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
  1,2,3,4
ORDER BY
  total_dbu DESC