Überwachen der Kosten für serverlose Berechnung
In diesem Artikel wird erläutert, wie Sie die abrechnungsfähige Systemtabelle (Public Preview) verwenden, um die Kosten Ihrer serverlosen Computenutzung zu überwachen.
Sie können die Verwendung des serverlosen Computing für Notebooks und Aufträge überwachen, indem Sie die Systemtabelle für die abrechenbare Nutzung (system.billing.usage
) abfragen, die Benutzer- und Workloadattribute für serverlose Computingkosten enthält. Zu den entsprechenden Feldern gehören:
- Die
identity_metadata
Spalte enthält dasrun_as
Feld, das den Benutzer- oder Dienstprinzipal anzeigt, dessen Anmeldeinformationen zum Ausführen der Workload verwendet wurden. - Die
usage_metadata
Spalte enthält Felder, die die Arbeitsauslastung beschreiben:job_run_id
undnotebook_id
.
Überlegungen für serverlose Verwendungsdatensätze
Berücksichtigen Sie bei der Analyse der serverlosen Nutzung Folgendes:
- Möglicherweise werden in einer bestimmten Stunde mehrere Datensätze angezeigt, die einer bestimmten serverlosen Computearbeitsauslastung zugeordnet sind. Beispielsweise werden möglicherweise mehrere Datensätze mit demselben
job_id
undjob_run_id
aber mit unterschiedlichen DBU-Verbrauchswerten für jeden angezeigt. Die Summe dieser DBUs stellt den stündlichen DBU-Verbrauch für einen bestimmten Auftragslauf dar. - Möglicherweise werden auch Datensätze mit DBU-Verbrauch angezeigt, die mit einer serverlosen SKU in Rechnung gestellt werden, aber mit Nullwerten für
run_as
,job_id
,job_run_id
undnotebook_id
. Diese stellen Kosten im Zusammenhang mit gemeinsam genutzten Ressourcen dar, die nicht direkt auf eine bestimmte Arbeitsauslastung zurückzuführen sind. Wenn Sie die Nutzung der serverlosen Berechnung erhöhen und mehr Workloads hinzufügen, verringert sich der Anteil dieser gemeinsam genutzten Kosten auf Ihrer Rechnung, da sie zwischen mehr Workloads verteilt werden.
Hinweis
Informationen zu einem Update der Workloadzuordnung von NULL finden Sie unter Neuerungen.
Dashboard zur Kostenüberwachung
Um Ihnen den Einstieg in die Überwachung Ihrer serverlosen Kosten zu erleichtern, laden Sie das folgende Dashboard zur Kostenüberwachung von Github herunter. Weitere Informationen finden Sie unter Dashboard zur Überwachung Ihrer serverlosen Kosten.
Nachdem Sie die JSON-Datei heruntergeladen haben, importieren Sie das Dashboard in Ihren Arbeitsbereich. Anweisungen zum Importieren von Dashboards finden Sie unter Importieren einer Dashboarddatei.
Verwenden von Benachrichtigungen zum Nachverfolgen von serverlosen Ausgaben
Benachrichtigungen sind eine leistungsstarke Möglichkeit, um über Ihre serverlosen Ausgaben auf dem Laufenden zu bleiben. Sie können Benachrichtigungen empfangen, wenn bestimmte Bedingungen in Ihren Abfrageergebnissen erfüllt sind. Informationen zum Erstellen von Benachrichtigungen finden Sie unter Erstellen einer Benachrichtigung.
Sie können Benachrichtigungen zu den folgenden Abfragen hinzufügen, um Budgets zu überwachen. Ersetzen Sie in jeder Abfrage {budget}
durch Ihr ausgewähltes Budget.
Benachrichtigung, wenn ein Arbeitsbereich einen Schwellenwert in den letzten 30 Tagen überschreitet
Sie können eine Benachrichtigung festlegen, die ausgelöst wird, wenn diese Abfrage eine Zeile zurückgibt. Ersetzen Sie {budget}
durch Ihr ausgewähltes Budget.
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", "NOTEBOOKS")
AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
t1.workspace_id
HAVING
list_cost > {budget}
Benachrichtigung, wenn eine Benutzerin oder ein Benutzer den Schwellenwert in den letzten 30 Tagen überschreitet
Sie können eine Benachrichtigung festlegen, die ausgelöst wird, wenn diese Abfrage eine Zeile zurückgibt. Ersetzen Sie {budget}
durch Ihr ausgewähltes Budget.
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", "NOTEBOOKS")
AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
t1.identity_metadata.run_as
HAVING
list_cost > {budget}
Benachrichtigung, wenn ein Auftrag den Schwellenwert in den letzten 30 Tagen überschreitet
Sie können eine Benachrichtigung festlegen, die ausgelöst wird, wenn diese Abfrage eine Zeile zurückgibt. Ersetzen Sie {budget}
durch Ihr ausgewähltes Budget.
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}
Beispielabfragen
Verwenden Sie die folgenden Abfragen, um Einblicke in die serverlose Nutzung in Ihrem Konto zu erhalten:
- Identifizieren von teuren serverlosen Computing-Notebooks
- Identifizieren von teuren serverlosen Computing-Aufträgen
- Bericht über DBUs, die von einem bestimmten Benutzerkonto verwendet werden
- Bericht über serverlose Computing-DBUs, die von Workloads genutzt werden, die ein benutzerdefiniertes Tag gemeinsam nutzen
Identifizieren von teuren serverlosen Compute-Notebooks
Diese Abfrage gibt eine Liste von Notebooks und die Anzahl der DBUs zurück, die jedes Notebook verbraucht hat, in absteigender Reihenfolge nach DBU-Verbrauch:
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
Identifizieren von teuren serverlosen Computeaufträgen
Diese Abfrage gibt eine Liste von Aufträgen und wie viele DBUs jeder Auftrag verbraucht hat, in absteigender Reihenfolge nach DBU-Verbrauch:
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
Bericht über dbUs, die von einem bestimmten Benutzer verwendet werden
Diese Abfrage gibt eine Liste von Notebooks und Aufträgen zurück, die serverlose Berechnung verwenden, die von einem bestimmten Benutzer oder Dienstprinzipal ausgeführt werden, und die Anzahl der von den einzelnen Arbeitslasten verbrauchten DBUs:
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
Bericht über serverlose Compute-DBUs, die von Workloads genutzt werden, die ein benutzerdefiniertes Tag gemeinsam nutzen
Diese Abfrage gibt eine Liste von Aufträgen zurück, die serverlose Compute verwenden, die dasselbe benutzerdefinierte Tag gemeinsam verwenden, und die Anzahl der von den einzelnen Arbeitslasten verbrauchten DBUs:
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