Abschätzen der Kosten des Verbrauchstarifs

Zurzeit gibt es drei Typen von Hostingtarifen für eine App, die in Azure Functions ausgeführt wird, wobei jeder Tarif ein eigenes Preismodell aufweist:

Planen BESCHREIBUNG
Verbrauch Ihnen wird nur die Zeit in Rechnung gestellt, die Ihre Funktions-App auch ausgeführt wird. Dieser Tarif umfasst pro Abonnement eine kostenlose Zuweisung.
Premium Bietet Ihnen dieselben Features und Skalierungsverfahren wie der Verbrauchstarif, aber mit mehr Leistung und VNET-Zugriff. Die Kosten basieren auf dem von Ihnen gewählten Tarif. Weitere Informationen finden Sie unter Premium-Plan (Premium-Tarif) für Azure Functions.
Dediziert (App Service)
(Tarif „Basic“ oder höher)
Wenn Sie in dedizierten VMs oder in Isolierung ausführen müssen, benutzerdefinierte Images verwenden oder die Überkapazität Ihres App Service-Plans nutzen möchten. Verwendet normale App Service-Planabrechnung. Die Kosten basieren auf dem von Ihnen gewählten Tarif.

Sie haben den Plan ausgewählt, der die Leistung Ihrer Funktion sowie Ihre Kostenanforderungen am besten unterstützt. Weitere Informationen finden Sie unter Skalierung und Hosting von Azure Functions.

Dieser Artikel behandelt nur den Verbrauchstarif, da dieser Tarif zu variablen Kosten führt. Dieser Artikel ersetzt den Artikel Häufig gestellte Fragen zur Abrechnung von Plankosten.

Durable Functions können auch in einem Verbrauchstarif ausgeführt werden. Weitere Informationen zu den Kostenüberlegungen bei der Verwendung von Durable Functions finden Sie unter Abrechnung von Durable Functions.

Kosten des Verbrauchstarifs

Die Ausführungskosten einer einzelnen Funktionsausführung werden in GB-Sekunden gemessen. Die Ausführungskosten werden berechnet, indem die Speichernutzung mit der Ausführungsdauer kombiniert wird. Eine Funktion, die länger ausgeführt wird, kostet mehr, ebenso wie eine Funktion, die mehr Arbeitsspeicher verbraucht.

Stellen Sie sich einen Fall vor, bei dem die von der Funktion verwendete Arbeitsspeichermenge konstant bleibt. In diesem Fall erfolgt die Berechnung der Kosten durch einfache Multiplikation. Nehmen wir beispielsweise an, dass ihre Funktion 0,5 GB für 3 Sekunden verbraucht hat. Dann betragen die Ausführungskosten 0.5GB * 3s = 1.5 GB-seconds.

Da sich die Speichernutzung im Laufe der Zeit ändert, ist die Berechnung im Wesentlichen das Integral der Arbeitsspeichernutzung im Lauf der Zeit. Das System führt diese Berechnung durch, indem die Speichernutzung des Prozesses (zusammen mit untergeordneten Prozessen) in regelmäßigen Abständen stichprobenhaft erfasst wird. Wie auf der Seite mit der Preisübersicht erwähnt, wird die Speichernutzung auf den nächstgelegenen 128-MB-Bucket aufgerundet. Wenn Ihr Prozess 160 MB verwendet, werden Ihnen 256 MB in Rechnung gestellt. Die Berechnung berücksichtigt dabei die Parallelität, bei der es sich um die gleichzeitige Ausführung mehrerer Funktionen im selben Prozess handelt.

Hinweis

Obwohl die CPU-Nutzung in den Ausführungskosten nicht direkt berücksichtigt wird, kann sie sich auf die Kosten auswirken, wenn sie die Ausführungszeit der Funktion beeinflusst.

Bei durch HTTP ausgelösten Funktionen werden Ihnen keine Ausführungen in Rechnung gestellt, wenn ein Fehler auftritt, bevor die Ausführung Ihres Funktionscodes beginnt. Dies bedeutet, dass 401-Antworten von der Plattform aufgrund der API-Schlüsselüberprüfung oder des Authentifizierungs-/Autorisierungsfeatures von App Service nicht auf Ihre Ausführungskosten angerechnet werden. Ebenso werden 5xx-Statuscodeantworten nicht gezählt, wenn diese auf der Plattform auftreten, bevor eine Funktion die Anforderung verarbeitet. Eine 5xx-Antwort, die nach dem Ausführungsbeginn Ihres Funktionscodes generiert wurde, wird dennoch als Ausführung gezählt, selbst wenn der Fehler nicht von Ihrem Funktionscode ausgelöst wird.

Wenn Sie die Gesamtkosten der Ausführung ihrer Funktionen in einem beliebigen Plan abschätzen, denken Sie daran, dass die Functions-Laufzeit mehrere andere Azure-Dienste verwendet, die jeweils gesondert abgerechnet werden. Wenn Sie Preise für Funktions-Apps berechnen, müssen Sie für alle Trigger und Bindungen, die in andere Azure-Dienste integriert werden, diese zusätzlichen Dienste erstellen und dafür bezahlen.

Für Funktionen, die in einem Verbrauchstarif ausgeführt werden, bestehen die Gesamtkosten aus den Ausführungskosten ihrer Funktionen plus die Kosten für Bandbreite und zusätzliche Dienste.

Wenn Sie die Gesamtkosten für ihre Funktions-App und der zugehörige Dienste abschätzen, verwenden Sie den Azure-Preisrechner.

Verwandte Kosten BESCHREIBUNG
Speicherkonto Für jede Funktions-App ist es erforderlich, dass Sie über ein zugeordnetes universelles Azure Storage-Konto verfügen, das gesondert abgerechnet wird. Dieses Konto wird von der Functions-Laufzeit intern verwendet, aber Sie können es auch für Storage-Trigger und -Bindungen verwenden. Wenn Sie kein Speicherkonto besitzen, wird mit der Erstellung der Funktions-App eins für Sie erstellt. Weitere Informationen finden Sie unter Speicherkontoanforderungen.
Application Insights Functions basiert auf Application Insights, um eine Hochleistungsüberwachungs-Erfahrung für Ihre Funktions-Apps bereitzustellen. Wenn dies auch nicht erforderlich ist, sollten Sie doch die Application Insights-Integration aktivieren. Monatlich ist eine kostenlose Zuweisung von Telemetriedaten enthalten. Weitere Informationen finden Sie auf der Seite mit der Preisübersicht für Azure Monitor.
Netzwerkbandbreite Je nach Richtung und Szenario der Datenverschiebung können Kosten für die Datenübertragung anfallen. Weitere Informationen finden Sie in den Bandbreitenpreisdetails.

Verhalten, die die Ausführungszeit beeinflussen

Die folgenden Verhalten Ihrer Funktionen können sich auf die Ausführungszeit auswirken:

  • Trigger und Bindungen: Die Zeit, die das Lesen von Eingaben aus Ihren und das Schreiben der Ausgaben in Ihre Funktionsbindungen benötigt, wird als Ausführungszeit gezählt. Wenn Ihre Funktion beispielsweise eine Ausgabenbindung verwendet, um eine Nachricht in eine Azure Storage-Warteschlange zu schreiben, beinhaltet Ihre Ausführungszeit die Zeit, die zum Schreiben der Nachricht in die Warteschlange benötigt wird, was in die Berechnung der Funktionskosten einfließt.

  • Asynchrone Ausführung: Die Zeit, die Ihre Funktion auf die Ergebnisse einer asynchronen Anforderung wartet (await in C#), wird als Ausführungszeit gezählt. Die GB-Sekunden-Berechnung basiert auf der Start- und Endzeit der Funktion und der Arbeitsspeichernutzung in diesem Zeitraum. Was im Verlauf dieses Zeitraums hinsichtlich der CPU-Aktivität geschieht, wird nicht in die Berechnung einbezogen. Sie können die Kosten möglicherweise während asynchroner Vorgänge verringern, indem Sie Durable Functions verwenden. In awaits verbrachte Zeit wird Ihnen für Orchestratorfunktionen nicht berechnet.

In Ihrer Rechnung können Sie die kostenbezogenen Daten Total Executions – Functions (Ausführungen gesamt) und Execution Time – Functions (Ausführungszeit) zusammen mit den tatsächlich abgerechneten Kosten sehen. Diese Rechnungsdaten stellen jedoch eine monatliche Aggregation für einen vergangenen Abrechnungszeitraum dar.

Metriken auf Ebene der Funktions-App

Um die Kostenauswirkungen Ihrer Funktionen besser zu verstehen, können Sie Azure Monitor verwenden, um kostenbezogene Metriken anzuzeigen, die von Ihren Funktions-Apps generiert werden.

Verwenden Sie den Azure Monitor-Metrik-Explorer, um kostenbezogene Daten für Ihre Funktions-Apps im Verbrauchstarif in einem grafischen Format anzuzeigen.

  1. Navigieren Sie im Azure-Portal zu Ihrer Funktions-App.

  2. Scrollen Sie im linken Bereich nach unten zu Überwachung, , und wählen Sie die Option Metriken aus.

  3. Wählen Sie in Metrik die Einträge Ausführungsanzahl für Funktion und Summe für Aggregation aus. Dadurch wird die Summe der Ausführungen während des gewählten Zeitraums dem Diagramm hinzugefügt.

    Define a functions app metric to add to the chart

  4. Wählen Sie Metrik hinzufügen aus, und wiederholen Sie die Schritte 2–4, um dem Diagramm Ausführungseinheiten für Funktion hinzuzufügen.

Das resultierende Diagramm enthält die Summen für beide Ausführungsmetriken im ausgewählten Zeitraum, der in diesem Fall zwei Stunden beträgt.

Graph of function execution counts and execution units

Da die Anzahl der Ausführungseinheiten so viel höher ist, als die Ausführungen, zeigt das Diagramm nur die Ausführungseinheiten an.

Dieses Diagramm zeigt eine Gesamtzahl von 1,11 Mrd. Function Execution Units, die in einem Zeitraum von zwei Stunden verbraucht wurden, gemessen in MB-Millisekunden. Um den Wert in GB-Sekunden umzuwandeln, teilen Sie durch 1.024.000. In diesem Beispiel hat die Funktions-App 1110000000 / 1024000 = 1083.98 GB-Sekunden verbraucht. Sie können diesen Wert mit dem aktuellen Preis der Ausführungszeit auf der Seite mit den Preisen für Azure Functions multiplizieren, wodurch Sie die Kosten für diese zwei Stunden erhalten – vorausgesetzt, Sie haben bereits alle zugewiesenen kostenlosen Ausführungszeiten verbraucht.

Metriken auf Funktionsebene

Funktionsausführungseinheiten sind eine Kombination aus Ausführungszeit und Ihrer Speichernutzung, was diese zu einer schwierigen Metrik macht, um die Speichernutzung zu verstehen. Arbeitsspeicherdaten sind keine aktuell in Azure Monitor verfügbare Metrik. Wenn Sie jedoch die Speichernutzung Ihrer App optimieren möchten, können Sie die von Application Insights erfassten Daten der Leistungsindikatoren verwenden.

Falls noch nicht geschehen, aktivieren Sie Application Insights in Ihrer Funktions-App. Mit dieser aktivierten Integration können Sie diese Telemetriedaten im Portal abfragen.

Zum Abrufen der Metrikdaten von Azure Monitor können Sie entweder den Azure Monitor-Metrik-Explorer im Azure-Portal oder REST-APIs verwenden.

Arbeitsspeichernutzung ermitteln

Wählen Sie unter Überwachung den Eintrag Protokolle (Analytics) aus, kopieren Sie dann die folgende Telemetrieabfrage, fügen Sie sie in das Abfragefenster ein, und wählen Sie Ausführen aus. Diese Abfrage gibt die Gesamtarbeitsspeichernutzung zu jedem Stichprobenzeitpunkt zurück.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

Die Ergebnisse sehen ungefähr wie folgt aus:

Zeitstempel [UTC] name value
12.9.2019, 1:05:14,947 Uhr Private Bytes 209.932.288
12.9.2019, 1:06:14,994 Uhr Private Bytes 212.189.184
12.9.2019, 1:06:30,010 Uhr Private Bytes 231.714.816
12.9.2019, 1:07:15,040 Uhr Private Bytes 210.591.744
12.9.2019, 1:12:16,285 Uhr Private Bytes 216.285.184
12.9.2019, 1:12:31,376 Uhr Private Bytes 235.806.720

Bestimmen der Dauer

Azure Monitor erfasst Metriken auf Ressourcenebene, wobei es sich für Functions um die Funktions-App handelt. Application Insights-Integration gibt Metriken pro Funktion aus. Im Folgenden finden Sie ein Beispiel für eine Analytics-Abfrage, mit der die durchschnittliche Dauer einer Funktion abgefragt wird:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
name averageDurationMilliseconds
QueueTrigger AvgDurationMs 16,087
QueueTrigger MaxDurationMs 90,249
QueueTrigger MinDurationMs 8,522

Nächste Schritte