Monitorování nákladů na výpočetní prostředky bez serveru

Tento článek vysvětluje, jak použít fakturovatelnou systémovou tabulku k monitorování nákladů na využití bezserverového výpočetního prostředí.

Využití bezserverového výpočetního výkonu pro poznámkové bloky a úlohy můžete monitorovat dotazem na fakturovatelnou systémovou tabulku (system.billing.usage), která zahrnuje atributy uživatelů a úloh souvisejících s bezserverovými náklady na výpočetní prostředky. Mezi příslušná pole patří:

  • Sloupec identity_metadata obsahuje pole run_as, které zobrazuje uživatele nebo službu, jejíž přihlašovací údaje byly použity ke spuštění úlohy.
  • Sloupec usage_metadata obsahuje pole, která popisují úlohu: job_run_id, job_name, notebook_ida notebook_path.

Poznámka:

Vzhledem k naší distribuované architektuře se může v daném časovém rámci zobrazit několik záznamů přidružených k dané bezserverové výpočetní úloze. Můžete například vidět více záznamů se stejnými job_idjob_run_id, nebo job_name s různými hodnotami spotřeby DBU pro každou z nich. Součet těchto jednotek DBU představuje hodinovou spotřebu DBU pro danou úlohu spuštěnou v daném časovém rámci.

Další funkce fakturované jako bezserverové

Azure Databricks nabízí několik funkcí, které na pozadí využívají bezserverové výpočty, ale nevyžadují, aby měl váš účet povolené bezserverové výpočty pro poznámkové bloky, pracovní postupy a kanály Lakeflow.

Pod položkou SKU serverless jobs se účtují následující funkce:

Monitorování útraty pomocí rozpočtů

Správci účtů můžou nastavit rozpočty pro seskupení nákladů a nastavení upozornění. Viz Vytváření a monitorování rozpočtů.

Importovat panel využití

Správci účtů můžou importovat řídicí panely správy nákladů do libovolného pracovního prostoru s podporou katalogu Unity ve svém účtu. Podívejte se na Import řídicího panelu využití.

Vyhledání úlohy nebo poznámkového bloku v uživatelském rozhraní

Pokud chcete najít úlohu nebo poznámkový blok v uživatelském rozhraní na základě fakturačního záznamu, zkopírujte hodnotu usage_metadata.job_id nebo usage_metadata.notebook_id ze záznamu o využití. Tato ID jsou neměnná a dá se použít i v případě, že se změní název úlohy nebo cesta k poznámkovému bloku.

Najít práci v uživatelském rozhraní podle jejího job_id:

  1. Zkopírujte job_id ze záznamu o využití. V tomto příkladu předpokládejme, že ID je 700809544510906.
  2. Přejděte na Uživatelské rozhraní Úlohy a Pipeliny ve stejném pracovním prostoru Azure Databricks jako úloha.
  3. Vyberte filtr Přístupné pro mě.
  4. Vložte ID (700809544510906) do vyhledávacího panelu Filtrovat úlohy.

Chcete-li najít notebook v uživatelském rozhraní na základě jeho notebook_id, použijte následující pokyny:

  1. Zkopírujte notebook_id ze záznamu o využití. V tomto příkladu předpokládejme, že ID je 700809544510906.
  2. Přejděte do uživatelského rozhraní Workspaces ve stejném pracovním prostoru Azure Databricks jako poznámkový blok.
  3. Klikněte na libovolný poznámkový blok v seznamu.
  4. Po otevření notebooku zkontrolujte adresu URL v adresním řádku prohlížeče. Měl by vypadat jako https://<databricks-account-url>/?o=<workspace-ID>#notebook/<notebook ID>/command/<command ID>.
  5. V adresním řádku prohlížeče nahraďte ID poznámkového bloku za ID, které jste zkopírovali v prvním kroku, a poté odstraňte vše, co je za ním. Měl by vypadat jako https://<databricks-account-url>/?o=<workspace ID>#notebook/700809544510906.
  6. Po otevření poznámkového bloku můžete kliknutím na tlačítko Sdílet zobrazit vlastníka poznámkového bloku.

Sledování nákladů na bezserverové služby pomocí upozornění

Výstrahy představují účinný způsob, jak být informováni o bezserverových nákladech. S upozorněními můžete dostávat oznámení, když jsou ve výsledcích dotazu splněny určité podmínky. Informace o vytváření upozornění najdete v tématu Vytvoření výstrahy.

Pokud chcete monitorovat rozpočty, můžete do následujících dotazů přidat upozornění. V každém dotazu nahraďte {budget} zvoleným rozpočtem.

Upozornění, když jakýkoli pracovní prostor překročí stanovený limit výdajů za posledních 30 dnů

Můžete nastavit upozornění, které se spustí, kdykoli tento dotaz vrátí řádek. Nahraďte {budget} zvoleným rozpočtem.

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}

Upozornění, když uživatel překročí prahovou hodnotu za posledních 30 dnů

Můžete nastavit upozornění, které se spustí, kdykoli tento dotaz vrátí řádek. Nahraďte {budget} zvoleným rozpočtem.

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}

Upozornění, když úloha překročí prahovou hodnotu za posledních 30 dnů

Můžete nastavit upozornění, které se spustí, kdykoli tento dotaz vrátí řádek. Nahraďte {budget} zvoleným rozpočtem.

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}

Vzorové dotazy

Pomocí následujících dotazů můžete získat přehled o využití bez serveru ve vašem účtu:

Seřaďte bezserverové poznámkové bloky podle celkových výdajů

Tento dotaz vrátí seznam zápisníků a počet jednotek DBU, které každý zápisník spotřeboval, v sestupném pořadí podle spotřeby DBU.

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

Řazení bezserverových úloh na základě celkové útraty

Tento dotaz vrátí seznam úloh a počet jednotek DBU spotřebovaných v sestupném pořadí podle spotřeby DBU:

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

Zpráva o množství jednotek DBU spotřebovaných konkrétním uživatelem

Tento dotaz vrátí seznam poznámkových bloků a úloh, které používají bezserverové výpočetní prostředí spuštěné konkrétním uživatelem nebo instančním objektem, a počet jednotek DBU spotřebovaných jednotlivými úlohami:

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

Sestava DBU výpočetních jednotek bezserverového výpočtu spotřebovaných pracovními zátěžemi, které sdílejí vlastní značku.

Tento dotaz vrátí seznam úloh, které používají bezserverové výpočetní prostředky, které sdílejí stejnou vlastní značku, a počet jednotek DBU spotřebovaných jednotlivými úlohami:

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

Přehled spotřebovaných DBU v režimu výkonu

Tento dotaz shrnuje spotřebu bezserverových DBU podle režimu výkonu (PERFORMANCE_OPTIMIZED nebo STANDARD) a typu zatížení (úlohy nebo kanály) za posledních 30 dnů:

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