Monitorowanie kosztów obliczeń bezserwerowych
W tym artykule wyjaśniono, jak używać rozliczanej tabeli systemu użycia do monitorowania kosztów użycia zasobów obliczeniowych bezserwerowych.
Użycie bezserwerowych zasobów obliczeniowych dla notesów i zadań można monitorować, 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 polerun_as
, które pokazuje użytkownika lub jednostkę usługi, której poświadczenia zostały użyte do uruchomienia obciążenia. - Kolumna
usage_metadata
zawiera pola opisujące obciążenie:job_run_id
,job_name
,notebook_id
inotebook_path
.
- Kolumna
custom_tags
, która będzie zawierać wszystkie tagi dziedziczone z polityk budżetowych. Zobacz Atrybut użycia bezserwerowego przy użyciu zasad budżetu.
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żesz widzieć wiele rekordów z tymi samymi
job_id
,job_run_id
lubjob_name
, ale z różnymi wartościami zuż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ę dotyczącą przypisania obciążenia o wartości null, zobacz Co nadchodzi?.
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 Tworzenie i monitorowanie budżetów.
Importowanie pulpitu nawigacyjnego użycia
Administratorzy kont mogą importować pulpity nawigacyjne zarządzania kosztami do dowolnego obszaru roboczego z włączonym Unity Catalog 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_id
elementu :
- Skopiuj wartość
job_id
z rekordu użycia. W tym przykładzie załóżmy, że identyfikator to700809544510906
. - Przejdź do interfejsu użytkownika przepływów pracy w tym samym obszarze roboczym usługi Azure Databricks co zadanie.
- Upewnij się, że filtr Tylko zadania należące do mnie nie jest zaznaczony.
- Wklej identyfikator (700809544510906) na pasku wyszukiwania Filtr zadań.
Aby znaleźć notes w interfejsie użytkownika na podstawie interfejsu notebook_id
użytkownika, wykonaj następujące instrukcje:
- Skopiuj wartość
notebook_id
z rekordu użycia. W tym przykładzie załóżmy, że identyfikator to700809544510906
. - Przejdź do interfejsu użytkownika obszarów roboczych w tym samym obszarze roboczym usługi Azure Databricks co notes.
- Kliknij dowolny notes na liście.
- 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>
. - 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
. - 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
Można ustawić alert 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
Można ustawić alert 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
Można ustawić alert 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
- Identyfikowanie kosztownych zadań obliczeniowych bezserwerowych
- Raport dotyczący jednostek DBU używanych przez określonego użytkownika
- Raport dotyczący bezserwerowych jednostek DBU używanych przez obciążenia współużytkujące tag niestandardowy
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,
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
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,
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
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.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
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.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