Pular para o conteúdo principal

Monitorar o custo de serverless compute

Este artigo explica como usar a tabela do sistema de uso faturável para monitorar o custo de seu uso do serverless compute .

É possível monitorar o uso do serverless compute para Notebook e Job consultando a tabela do sistema de uso faturável (system.billing.usage), que inclui atributos de usuário e carga de trabalho relacionados aos custos do serverless compute . Os campos aplicáveis incluem:

  • A coluna identity_metadata inclui o campo run_as, que mostra o usuário ou a entidade de serviço cujas credenciais foram usadas para executar a carga de trabalho.

  • A coluna usage_metadata tem campos que descrevem a carga de trabalho: job_run_id, job_name, notebook_id e notebook_path.

  • A coluna custom_tags , que incluirá quaisquer tags herdadas das políticas de uso serverless . Consulte Uso de atributos com políticas de uso serverless.

nota

Devido à nossa arquitetura distribuída, você poderá ver vários registros associados a uma determinada carga de trabalho compute serverless em um determinado período de tempo. Por exemplo, você pode ver vários registros com os mesmos job_id, job_run_id ou job_name , mas com valores de consumo de DBU diferentes para cada um. A soma dessas DBUs representa o consumo horário DBU para uma determinada execução de tarefa nesse período.

Recurso adicional faturado como serverless​

Existem vários recursos do Databricks que aproveitam o compute serverless em segundo plano, mas não exigem que sua account seja habilitada para compute serverless para notebooks, fluxos de trabalho e LakeFlow Pipelines.

Os seguintes recursos são cobrados no site serverless Job SKU:

  • Monitoramento da qualidade dos dados: registro na tabela de faturamento com um valor billing_origin_product de LAKEHOUSE_MONITORING.

  • Otimização preditiva: faça o login na tabela de faturamento com um valor billing_origin_product de PREDICTIVE_OPTIMIZATION.

  • Visualização materializada em Databricks SQL: Quando o senhor cria uma view materializada em uma SQL warehouse, uma serverless pipeline é criada para processar a atualização. O senhor pode acessar view registros de faturamento para o materializado view consultando os registros where billing_origin_product = 'SQL' e usage_metadata.dlt_pipeline_id IS NOT NULL.

  • Controle de acesso refinado em computededicado: identificável por ter um valor billing_origin_product de FINE_GRAINED_ACCESS_CONTROL.

  • LakeFlow Connect: o conector de gerenciamento de ingestão de logs tem um valor billing_origin_product de LAKEFLOW_CONNECT.

  • Pesquisa de AI: registrada com um valor billing_origin_product de VECTOR_SEARCH.

  • Salas limpas: A sala limpa específica relacionada ao uso é registrada em usage_metadata.central_clean_room_id.

  • Tabelas online (legado): registradas com um valor de billing_origin_product de ONLINE_TABLES.

Use orçamentos para monitorar gastos​

Os administradores de contas podem definir orçamentos para agrupar custos e configurar alertas. Consulte Criar e monitorar orçamentos.

Importar um painel de uso​

Os administradores de conta podem importar painéis de gerenciamento de custos para qualquer workspace habilitado para o Unity Catalog em seu account. Consulte Importar um painel de uso.

Localizar um trabalho ou notebook na interface do usuário​

Para localizar um Job ou Notebook na UI com base em um registro de faturamento, copie o valor usage_metadata.job_id ou usage_metadata.notebook_id do registro de uso. Essas IDs são imutáveis e podem ser usadas mesmo que o nome do trabalho ou o caminho do Notebook seja alterado.

Para localizar um trabalho na UI com base em seu site job_id:

  1. Copie o job_id do registro de uso. Neste exemplo, suponha que o ID seja 700809544510906.
  2. Navegue até a UI do pipeline do Jobs & no mesmo Databricks workspace que o Job.
  3. Selecione o filtro Acessível por mim .
  4. Cole o ID (700809544510906) na barra de pesquisa Filter Job .

Para localizar um Notebook na UI com base em seu endereço notebook_id, use as instruções a seguir:

  1. Copie o notebook_id do registro de uso. Neste exemplo, suponha que o ID seja 700809544510906.
  2. Navegue até a interface do usuário do espaço de trabalho no mesmo Databricks workspace que o Notebook.
  3. Clique em qualquer Notebook da lista.
  4. Depois de abrir o Notebook, examine o URL na barra de endereços do navegador. Deve ter a aparência de https://<databricks-account-url>/?o=<workspace-ID>#notebook/<notebook ID>/command/<command ID>.
  5. Na barra de endereços do navegador, substitua o ID do Notebook pelo ID que o senhor copiou na primeira etapa e, em seguida, exclua tudo após o ID do Notebook. Deve ter a aparência de https://<databricks-account-url>/?o=<workspace ID>#notebook/700809544510906.
  6. Depois de abrir o Notebook, o senhor pode clicar no botão Share (Compartilhar ) para view o proprietário do Notebook.

Use o alerta para monitorar as despesas em serverless​

O alerta é uma maneira poderosa de se manter informado sobre suas despesas no site serverless. Com o alerta, o senhor pode receber notificações quando determinadas condições forem atendidas nos resultados da consulta. Para saber como criar um alerta, consulte Criar um alerta.

Você pode adicionar alertas às consultas a seguir para monitorar os orçamentos. Em cada consulta, substitua {budget} pelo orçamento escolhido.

alerta quando qualquer despesa do workspace exceder um limite nos últimos 30 dias​

Você pode definir um alerta para ser acionado sempre que esta consulta retornar uma linha. Substitua {budget} pelo orçamento escolhido.

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}

alerta quando um usuário excede o limite nos últimos 30 dias​

Você pode definir um alerta para ser acionado sempre que esta consulta retornar uma linha. Substitua {budget} pelo orçamento escolhido.

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}

alerta quando um trabalho excede o limite nos últimos 30 dias​

Você pode definir um alerta para ser acionado sempre que esta consulta retornar uma linha. Substitua {budget} pelo orçamento escolhido.

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}

Exemplos de consultas​

Use as seguintes consultas para obter insights sobre o uso serverless em sua conta:

Classifique o serverless Notebook com base no total de despesas​

Essa consulta retorna uma lista de notebooks e quantas DBUs cada notebook consumiu, em ordem decrescente de consumo de DBUs:

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

Classificar serverless Job com base no total de despesas​

Essa consulta retorna uma lista de trabalhos e quantas DBUs cada trabalho consumiu, em ordem decrescente por consumo de DBUs:

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

Relatório sobre DBus consumidos por um usuário específico​

Essa consulta retorna uma lista de notebooks e trabalhos que usam computação serverless executada por um determinado usuário ou entidade de serviço e o número de DBUs consumidas por cada carga de trabalho:

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

Relatório sobre serverless compute DBUs consumidas por cargas de trabalho que compartilham uma tag personalizada​

Essa consulta retorna uma lista de trabalhos que usam computação serverless que compartilham a mesma tag personalizada e o número de DBUs consumidas por cada carga de trabalho:

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

Relatório sobre DBUs consumidos pelo modo de desempenho​

Esta consulta resume o consumo DBU serverless por modo de desempenho (PERFORMANCE_OPTIMIZED ou STANDARD) e tipo de carga de trabalho (Job ou pipeline) nos últimos 30 dias:

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