Aller au contenu principal

Surveiller le coût du compute Serverless

Cet article explique comment utiliser la table système d'utilisation facturable pour surveiller le coût de votre utilisation du compute serverless.

Vous pouvez surveiller l'utilisation du compute Serverless pour les Notebooks et les Jobs en interrogeant la table système d'utilisation facturable (system.billing.usage), qui inclut les attributs d'utilisateur et de charge de travail liés aux coûts du compute Serverless. Les champs applicables comprennent :

  • La colonne identity_metadata inclut le champ run_as, qui affiche l'utilisateur ou le Service Principal dont les identifiants ont été utilisés pour exécuter la charge de travail.

  • La colonne usage_metadata contient des champs qui décrivent la charge de travail : job_run_id, job_name, notebook_id et notebook_path.

  • La colonne custom_tags, qui inclura toutes les balises héritées des politiques d'utilisation serverless. Voir Attribuer l’utilisation avec les politiques d’utilisation serverless.

remarque

En raison de notre architecture distribuée, vous pourriez voir plusieurs enregistrements associés à une charge de travail compute Serverless donnée au cours d'une période donnée. Par exemple, vous pourriez voir plusieurs enregistrements avec les mêmes job_id, job_run_id ou job_name, mais avec des valeurs de consommation de DBU différentes pour chacun. La somme de ces DBU représente la consommation horaire de DBU pour l'exécution d'un Job donné au cours de cette période.

Fonctionnalités supplémentaires facturées en tant que serverless

Il existe plusieurs fonctionnalités Databricks qui tirent parti du compute Serverless en arrière-plan, mais ne nécessitent pas que votre compte soit activé pour le compute Serverless pour les notebooks, les workflows et les LakeFlow Pipelines.

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

  • Data quality monitoring: Enregistré dans la table de facturation avec une valeur billing_origin_product de LAKEHOUSE_MONITORING.

  • Optimisation prédictive: journalisée 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 SQL Warehouse, un pipeline Serverless est créé pour traiter les refresh. Vous pouvez afficher les enregistrements de facturation de la vue matérialisée en interrogeant les enregistrements où billing_origin_product = 'SQL' et usage_metadata.dlt_pipeline_id IS NOT NULL.

  • Contrôle d’accès précis sur un compute dédié: Identifiable par une valeur billing_origin_product de FINE_GRAINED_ACCESS_CONTROL.

  • Lakeflow Connect: l'ingestion par connecteur géré est enregistrée avec une valeur billing_origin_product de LAKEFLOW_CONNECT.

  • Recherche IA: Journalisé avec une valeur de billing_origin_product de VECTOR_SEARCH.

  • Salles blanches: la salle blanche spécifique liée à l'utilisation est enregistrée sous usage_metadata.central_clean_room_id.

  • Tables en ligne (héritées) : Enregistrées avec une valeur billing_origin_product de ONLINE_TABLES. Voir Migrer des tables en ligne héritées et tierces.

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. Consultez Créer et surveiller des budgets.

Importer un tableau de bord d’utilisation

Les administrateurs de compte peuvent importer des tableaux de bord de gestion des coûts vers n'importe quel workspace compatible Unity Catalog de leur compte. Consultez Importer un tableau de bord d'utilisation.

Trouvez un Job ou un Notebook dans l'interface utilisateur

Pour trouver un job 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 IDs sont immuables et peuvent être utilisés même si le nom du job ou le chemin du notebook change.

Pour trouver un Job dans l'interface utilisateur en fonction de son job_id:

  1. Copiez le job_id de l’enregistrement d’utilisation. Dans cet exemple, supposons que l'ID soit 700809544510906.
  2. Accédez à l’interface utilisateur Jobs & Pipelines dans le même Databricks Workspace que le Job.
  3. Sélectionnez le filtre Accessible par moi .
  4. Collez l'ID ( 700809544510906 ) dans la barre de recherche Filtrer les jobs .

Pour trouver un Notebook dans l'interface utilisateur en fonction de son notebook_id, utilisez les instructions suivantes :

  1. Copiez le notebook_id de l’enregistrement d’utilisation. Dans cet exemple, supposons que l'ID soit 700809544510906.
  2. Accédez à l'interface utilisateur Workspaces dans le même Workspace Databricks que le Notebook.
  3. Cliquez sur n'importe quel Notebook de la liste.
  4. Après avoir ouvert le notebook, examinez l'URL dans la barre d'adresse du navigateur. Cela devrait ressembler à https://<databricks-account-url>/?o=<workspace-ID>#notebook/<notebook ID>/command/<command ID>.
  5. Dans la barre d'adresse du navigateur, remplacez l'ID du notebook par l'ID que vous avez copié à la première étape, puis supprimez tout ce qui suit l'ID du notebook. Cela devrait ressembler à https://<databricks-account-url>/?o=<workspace ID>#notebook/700809544510906.
  6. Après avoir ouvert le notebook, vous pouvez cliquer sur le bouton Share pour afficher le propriétaire du notebook.

Utilisez les alertes pour suivre les dépenses serverless

Les alertes sont un moyen puissant de rester informé de vos dépenses Serverless. Avec les alertes, vous pouvez recevoir des notifications lorsque certaines conditions sont remplies dans les résultats de votre query. Pour savoir comment créer des alertes, consultez Créer une alerte.

Vous pouvez ajouter des alertes aux queries suivantes pour surveiller les budgets. Dans chaque query, remplacez {budget} par le budget de votre choix.

Alerte lorsque les dépenses d'un workspace dépassent un threshold au cours des 30 derniers jours.

Vous pouvez configurer une alerte pour qu'elle se Trigger chaque fois que cette query renvoie une ligne. Remplacez {budget} par votre budget choisi.

SQL
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}

Alerte lorsqu'un utilisateur dépasse le threshold au cours des 30 derniers jours

Vous pouvez configurer une alerte pour qu'elle se Trigger chaque fois que cette query renvoie une ligne. Remplacez {budget} par votre budget choisi.

SQL
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}

Alerter lorsqu'un Job dépasse le threshold au cours des 30 derniers jours

Vous pouvez configurer une alerte pour qu'elle se Trigger chaque fois que cette query renvoie une ligne. Remplacez {budget} par votre budget choisi.

SQL
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 query

Utilisez les queries suivantes pour obtenir des insights sur l'utilisation serverless de votre compte :

Trier les notebooks Serverless en fonction des dépenses totales

Cette query renvoie la liste des Notebooks et le nombre de DBU consommées par chaque Notebook, par ordre décroissant de consommation de DBU :

SQL
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 jobs serverless en fonction des dépenses totales

Cette query renvoie une liste de jobs et le nombre de DBU consommés par chaque job, par ordre décroissant de consommation de DBU :

SQL
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 query renvoie une liste de Notebooks et de Jobs qui utilisent le compute serverless exécutés par un utilisateur ou un service principal donné, et le nombre de DBU consommés par chaque charge de travail :

SQL
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 compute serverless consommées par les charges de travail qui partagent une balise personnalisée

Cette query renvoie une liste des Jobs qui utilisent un compute Serverless et partagent le même tag personnalisé, ainsi que le nombre de DBU consommées par chaque charge de travail :

SQL
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

Rapport sur les DBU consommées par le mode de performance

Cette query résume la consommation de DBU serverless par mode de performance (PERFORMANCE_OPTIMIZED ou STANDARD) et par type de workload (Jobs ou pipelines) au cours des 30 derniers jours :

SQL
SELECT
product_features.performance_target,
billing_origin_product,
SUM(usage_quantity) as total_dbu
FROM
system.billing.usage
WHERE
product_features.is_serverless
and billing_origin_product in ('JOBS','DLT')
and usage_unit = 'DBU'
and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
1,2
ORDER BY
total_dbu DESC