Partager via


Surveiller le coût du calcul serverless

Cet article explique comment utiliser la table système d’utilisation facturable (préversion publique) pour surveiller le coût de votre utilisation de calcul serverless.

Vous pouvez surveiller 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 des 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.

Considérations relatives aux enregistrements d’utilisation serverless

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 les mêmes job_id et job_run_id, ou job_name`, mais avec des valeurs de consommation DBU différentes pour chacun. La somme de ces DBU représente collectivement la consommation horaire de DBU pour une exécution de travail donnée.

Remarque

Pour découvrir la mise à jour sur l’attribution de charge de travail nulle, voir Nouveautés.

Utilisez des budgets pour surveiller les dépenses des comptes

Les administrateurs de compte peuvent configurer des budgets pour regrouper les coûts et configurer des alertes. Consultez la section Utiliser des budgets pour surveiller les dépenses des compte.

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 une tâche ou un notebook dans l’interface utilisateur

Pour rechercher une tâche 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 à partir 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 de Flux de travail dans le même espace de travail Azure Databricks que le travail.
  3. Vérifiez que le filtre Uniquement les travaux qui m’appartiennent est désactivé.
  4. Collez l’ID (700809544510906) dans la barre de recherche Filtrer les travaux.

Pour rechercher un notebook dans l’interface utilisateur en fonction de son notebook_id, utilisez les instructions suivantes :

  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 notebook, 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 :

Identifier les notebooks de calcul serverless coûteux

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,
  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
ORDER BY
  total_dbu DESC

Identifier les travaux de calcul serverless coûteux

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,
  SUM(usage_quantity) as total_dbu
FROM
  system.billing.usage
WHERE
  usage_metadata.job_id is not null
  and billing_origin_product = 'JOBS'
  and product_features.is_serverless
  and usage_unit = 'DBU'
  and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
  1
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és 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.notebook_id,
  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
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.notebook_id,
  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
ORDER BY
  total_dbu DESC