Condividi tramite


Monitorare il costo dell’elaborazione serverless

Questo articolo illustra come usare la tabella del sistema di utilizzo fatturabile (anteprima pubblica) per monitorare il costo dell'utilizzo del calcolo serverless.

È possibile monitorare l'utilizzo dell'ambiente di calcolo serverless per notebook e processi eseguendo una query sulla tabella del sistema di utilizzo fatturabile (system.billing.usage), che include attributi utente e carico di lavoro correlati ai costi di calcolo serverless. I campi applicabili includono:

  • La colonna identity_metadata include il campo run_as, che mostra l'utente o l'entità servizio le cui credenziali sono state usate per eseguire il carico di lavoro.
  • La colonna usage_metadata contiene campi che descrivono il carico di lavoro: job_run_id, job_name, notebook_id e notebook_path.

Considerazioni per i record di utilizzo serverless

Quando si analizza l'utilizzo serverless, considerare quanto segue:

  • È possibile che vengano visualizzati più record associati a un determinato carico di lavoro di elaborazione serverless in un'ora specifica. Ad esempio, è possibile che vengano visualizzati più record con lo stesso job_id, job_run_id o job_name' ma con valori di consumo unità Databricks diversi per ognuno di essi. La somma di queste unità Databricks rappresenta collettivamente il consumo di unità Databricks orario per una determinata esecuzione del processo.

Nota

Per un aggiornamento sull'attribuzione del carico di lavoro Null, vedere Cosa c’è di nuovo?.

Usare i budget per monitorare la spesa

Gli amministratori degli account possono configurare i budget per raggruppare i costi e configurare gli avvisi. Vedere Usare i budget per monitorare la spesa dell'account.

Importare un dashboard

Gli amministratori degli account possono importare dashboard di gestione dei costi in qualsiasi area di lavoro abilitata per Unity Catalog nel proprio account. Vedere Importare un dashboard di utilizzo.

Trovare un processo o un notebook nell'interfaccia utente

Per trovare un processo o un notebook nell'interfaccia utente in base a un record di fatturazione, copiare il valore usage_metadata.job_id o usage_metadata.notebook_id dal record di utilizzo. Questi ID non sono modificabili e possono essere usati anche se il nome del processo o il percorso del notebook cambia.

Per trovare un processo nell'interfaccia utente in base al relativo job_id:

  1. Copiare job_id dal record di utilizzo. Per questo esempio, si supponga che l'ID sia 700809544510906.
  2. Passare all'interfaccia utente Flussi di lavoro nella stessa area di lavoro di Azure Databricks del processo.
  3. Verificare che il filtro Solo processi di mia proprietà siano deselezionati.
  4. Incollare l'ID (700809544510906) nella barra di ricerca Filtri processi.

Per trovare un notebook nell'interfaccia utente in base a notebook_id, usare le istruzioni seguenti:

  1. Copiare notebook_id dal record di utilizzo. Per questo esempio, si supponga che l'ID sia 700809544510906.
  2. Passare all'interfaccia utente aree di lavoro nella stessa area di lavoro di Azure Databricks del notebook.
  3. Fare clic su un blocco appunti nell'elenco.
  4. Dopo aver aperto il notebook, esaminare l'URL nella barra degli indirizzi del browser. L'aspetto dovrebbe essere simile a https://<account-console-url>/?o=<workspace ID>#notebook/<notebook ID>/command/<command ID>.
  5. Nella barra degli indirizzi del browser sostituire l'ID del notebook con l'ID copiato nel primo passaggio, quindi eliminare tutti gli elementi dopo l'ID del notebook. L'aspetto dovrebbe essere simile a https://<account-console-url>/?o=<workspace ID>#notebook/700809544510906.
  6. Dopo aver aperto il notebook, è possibile fare clic sul pulsante Condividi per visualizzare il proprietario del notebook.

Usare gli avvisi per tenere traccia della spesa serverless

Gli avvisi sono un modo efficace per rimanere informati sulla spesa serverless. Con gli avvisi, è possibile ricevere notifiche quando vengono soddisfatte determinate condizioni nei risultati della query. Per informazioni su come creare avvisi, vedere Creare un avviso.

È possibile aggiungere avvisi alle query seguenti per monitorare i budget. In ogni query sostituire {budget} con il budget scelto.

Avvisa quando una spesa dell'area di lavoro supera una soglia negli ultimi 30 giorni

È possibile impostare un avviso da attivare ogni volta che la query restituisce una riga. Sostituire {budget} con il budget scelto.

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}

Avvisare quando un utente supera la soglia negli ultimi 30 giorni

È possibile impostare un avviso da attivare ogni volta che la query restituisce una riga. Sostituire {budget} con il budget scelto.

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}

Avvisare quando un processo supera la soglia negli ultimi 30 giorni

È possibile impostare un avviso da attivare ogni volta che la query restituisce una riga. Sostituire {budget} con il budget scelto.

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}

Query di esempio

Usare le query seguenti per ottenere informazioni dettagliate sull'utilizzo serverless nell'account:

Identificare i notebook di calcolo serverless costosi

Questa query restituisce un elenco di notebook e il numero di unità Databricks utilizzate da ogni notebook, in ordine decrescente in base al consumo di unità Databricks:

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

Identificare processi di calcolo serverless costosi

Questa query restituisce un elenco di processi e il numero di unità Databricks utilizzate da ogni processo, in ordine decrescente in base al consumo unità Databricks:

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

Report sulle unità Databricks utilizzate da un determinato utente

Questa query restituisce un elenco di notebook e processi che usano risorse di calcolo serverless eseguite da un determinato utente o entità servizio e il numero di unità Databricks utilizzate da ogni carico di lavoro:

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

Report sulle unità Databricks di calcolo serverless utilizzate dai carichi di lavoro che condividono un tag personalizzato

Questa query restituisce un elenco di processi che usano risorse di calcolo serverless che condividono lo stesso tag personalizzato e il numero di unità Databricks utilizzate da ogni carico di lavoro:

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