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 camporun_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
enotebook_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
:
- Copiare
job_id
dal record di utilizzo. Per questo esempio, si supponga che l'ID sia700809544510906
. - Passare all'interfaccia utente Flussi di lavoro nella stessa area di lavoro di Azure Databricks del processo.
- Verificare che il filtro Solo processi di mia proprietà siano deselezionati.
- 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:
- Copiare
notebook_id
dal record di utilizzo. Per questo esempio, si supponga che l'ID sia700809544510906
. - Passare all'interfaccia utente aree di lavoro nella stessa area di lavoro di Azure Databricks del notebook.
- Fare clic su un blocco appunti nell'elenco.
- 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>
. - 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
. - 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
- Identificare processi di calcolo serverless costosi
- Report sulle unità Databricks utilizzate da un determinato utente
- Report sulle unità Databricks di calcolo serverless utilizzate dai carichi di lavoro che condividono un tag personalizzato
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