Udostępnij za pośrednictwem


Monitorowanie kosztów obliczeń bezserwerowych

W tym artykule wyjaśniono, jak używać rozliczanej tabeli systemu użycia (publiczna wersja zapoznawcza) do monitorowania kosztów użycia zasobów obliczeniowych bezserwerowych.

Możesz monitorować użycie bezserwerowych zasobów obliczeniowych dla notesów i zadań, wysyłając zapytanie do tabeli systemu użycia rozliczanego (system.billing.usage), która obejmuje atrybuty użytkownika i obciążenia związane z kosztami obliczeń bezserwerowych. Odpowiednie pola obejmują:

  • Kolumna identity_metadata zawiera run_as pole, które pokazuje użytkownika lub jednostkę usługi, którego poświadczenia zostały użyte do uruchomienia obciążenia.
  • Kolumna usage_metadata zawiera pola opisujące obciążenie: job_run_id, , job_namenotebook_idi notebook_path.

Zagadnienia dotyczące rekordów użycia bezserwerowego

Podczas analizowania użycia bezserwerowego należy wziąć pod uwagę następujące kwestie:

  • W danej godzinie może zostać wyświetlonych wiele rekordów skojarzonych z danym bezserwerowym obciążeniem obliczeniowym. Na przykład może być wyświetlanych wiele rekordów z tymi samymi job_idrekordami , job_run_idlub job_name, ale z różnymi wartościami użycia jednostek DBU dla każdego z nich. Suma tych jednostek DBU łącznie reprezentuje godzinowe użycie jednostek DBU dla danego uruchomienia zadania.

Uwaga

Aby uzyskać aktualizację przy przypisywaniu obciążenia o wartości null, zobacz Co się dzieje?

Monitorowanie wydatków przy użyciu budżetów

Administratorzy kont mogą konfigurować budżety w celu grupowania kosztów i konfigurowania alertów. Zobacz Monitorowanie wydatków na koncie przy użyciu budżetów.

Importowanie pulpitu nawigacyjnego użycia

Administratorzy konta mogą importować pulpity nawigacyjne zarządzania kosztami do dowolnego obszaru roboczego obsługującego wykaz aparatu Unity na swoim koncie. Zobacz Importowanie pulpitu nawigacyjnego użycia.

Znajdowanie zadania lub notesu w interfejsie użytkownika

Aby znaleźć zadanie lub notes w interfejsie użytkownika na podstawie rekordu rozliczeniowego, skopiuj usage_metadata.job_id wartość lub usage_metadata.notebook_id z rekordu użycia. Te identyfikatory są niezmienne i mogą być używane nawet w przypadku zmiany nazwy zadania lub ścieżki notesu.

Aby znaleźć zadanie w interfejsie użytkownika na podstawie jego job_idelementu :

  1. Skopiuj wartość job_id z rekordu użycia. W tym przykładzie załóżmy, że identyfikator to 700809544510906.
  2. Przejdź do interfejsu użytkownika przepływów pracy w tym samym obszarze roboczym usługi Azure Databricks co zadanie.
  3. Upewnij się, że filtr Tylko zadania należące do mnie nie jest zaznaczony.
  4. Wklej identyfikator (700809544510906) na pasku wyszukiwania Filtr zadań.

Aby znaleźć notes w interfejsie użytkownika na podstawie interfejsu notebook_idużytkownika, wykonaj następujące instrukcje:

  1. Skopiuj wartość notebook_id z rekordu użycia. W tym przykładzie załóżmy, że identyfikator to 700809544510906.
  2. Przejdź do interfejsu użytkownika obszarów roboczych w tym samym obszarze roboczym usługi Azure Databricks co notes.
  3. Kliknij dowolny notes na liście.
  4. Po otwarciu notesu sprawdź adres URL na pasku adresu przeglądarki. Powinien wyglądać następująco: https://<account-console-url>/?o=<workspace ID>#notebook/<notebook ID>/command/<command ID>.
  5. Na pasku adresu przeglądarki zastąp identyfikator notesu identyfikatorem skopiowanymi w pierwszym kroku, a następnie usuń wszystko po identyfikatorze notesu. Powinien wyglądać następująco: https://<account-console-url>/?o=<workspace ID>#notebook/700809544510906.
  6. Po otwarciu notesu możesz kliknąć przycisk Udostępnij , aby wyświetlić właściciela notesu.

Śledzenie wydatków bezserwerowych za pomocą alertów

Alerty to zaawansowany sposób na informowanie o wydatkach bezserwerowych. Dzięki alertom możesz otrzymywać powiadomienia o spełnieniu określonych warunków w wynikach zapytania. Aby dowiedzieć się, jak tworzyć alerty, zobacz Tworzenie alertu.

Możesz dodać alerty do następujących zapytań, aby monitorować budżety. W każdym zapytaniu zastąp {budget} element wybranym budżetem.

Alert, gdy wydatki na obszar roboczy przekraczają próg w ciągu ostatnich 30 dni

Alert można ustawić tak, aby był wyzwalany za każdym razem, gdy to zapytanie zwróci wiersz. Zastąp {budget} element wybranym budżetem.

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}

Alert, gdy użytkownik przekroczy próg w ciągu ostatnich 30 dni

Alert można ustawić tak, aby był wyzwalany za każdym razem, gdy to zapytanie zwróci wiersz. Zastąp {budget} element wybranym budżetem.

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}

Alert, gdy zadanie przekroczy próg w ciągu ostatnich 30 dni

Alert można ustawić tak, aby był wyzwalany za każdym razem, gdy to zapytanie zwróci wiersz. Zastąp {budget} element wybranym budżetem.

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}

Przykładowe zapytania

Użyj następujących zapytań, aby uzyskać wgląd w użycie bezserwerowe na koncie:

Identyfikowanie drogich notesów obliczeniowych bezserwerowych

To zapytanie zwraca listę notesów i liczbę jednostek DBU używanych przez każdy notes w kolejności malejącej według użycia jednostek DBU:

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

Identyfikowanie kosztownych zadań obliczeniowych bezserwerowych

To zapytanie zwraca listę zadań i liczbę jednostek DBU używanych przez każde zadanie w kolejności malejącej według użycia jednostek DBU:

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

Raport dotyczący jednostek DBU używanych przez określonego użytkownika

To zapytanie zwraca listę notesów i zadań, które używają bezserwerowych obliczeń uruchamianych przez określonego użytkownika lub jednostkę usługi, oraz liczbę jednostek DBU używanych przez każde obciążenie:

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

Raport dotyczący bezserwerowych jednostek DBU używanych przez obciążenia współużytkujące tag niestandardowy

To zapytanie zwraca listę zadań, które używają bezserwerowych obliczeń współużytkujących ten sam tag niestandardowy, oraz liczbę jednostek DBU używanych przez każde obciążenie:

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