Freigeben über


Überwachen von Ausführungen in Azure Functions

Azure Functions bietet integrierte Integration in Azure-Anwendung Insights zum Überwachen von Funktionsausführungen. Dieser Artikel bietet einen Überblick über die Monitorfähigkeiten, die von Azure zur Überwachung von Azure Functions bereitgestellt werden, einschließlich wie man einen Telemetrieexporteur auswählt.

Mit Application Insights werden Protokoll-, Leistungs- und Fehlerdaten erfasst. Der Dienst erkennt Leistungsanomalien automatisch und verfügt über leistungsstarke Analysetools, sodass Sie Probleme einfacher untersuchen und besser nachvollziehen können, wie Ihre Funktionen verwendet werden. Diese Tools unterstützen Sie bei der kontinuierlichen Verbesserung der Leistung und Benutzerfreundlichkeit Ihrer Funktionen. Sie können Application Insights auch während der lokalen Entwicklung an Funktions-App-Projekten verwenden.

Da die Application Insights-Instrumentierung in Azure Functions integriert ist, benötigen Sie einen gültigen Verbindungszeichenfolge oder Instrumentierungsschlüssel, um Ihre Funktions-App mit einer Application Insights-Ressource zu verbinden. Diese Verbindung wird als Anwendungseinstellung konfiguriert, wenn Sie ihre Funktions-App-Ressource in Azure erstellen. Wenn Ihre Funktions-App noch nicht über diese Einstellung verfügt, können Sie sie manuell festlegen.

Sie können die Funktions-App auch selbst überwachen, indem Sie Azure Monitor verwenden. Weitere Informationen finden Sie unter Monitor Azure Functions.

Telemetrieexportoptionen

Azure Functions generiert Telemetriedaten sowohl aus dem Hostprozess der Funktionen als auch aus dem sprachspezifischen Arbeitsprozess, in dem Ihr Funktionscode ausgeführt wird. Sie können auswählen, wie diese Telemetriedaten exportiert werden:

Export-Methode BESCHREIBUNG Empfehlung
OpenTelemetry mit Azure Monitor Exporter Exportiert Telemetrie in einem OpenTelemetry-Format in Application Insights und optional auf jeden OTLP-kompatiblen Endpunkt. Empfohlen für neue und vorhandene Apps.
Integrierte Integration von Application Insights Die Standardintegration, die Telemetrie ohne zusätzlichen Code an Application Insights sendet. Gut für grundlegende Überwachungsanforderungen.
Klassische Anwendungseinblick-SDKs Sprachspezifische SDKs, die eine differenzierte Kontrolle über benutzerdefinierte Telemetrie bieten. Legacy. Planen Sie die Migration zu OpenTelemetry.

Wichtig

Für neue und vorhandene Anwendungen wird empfohlen, den Azure Monitor OpenTelemetry Exporter zum Senden von Telemetrie an Application Insights zu verwenden. Wenn Sie derzeit ein klassisches Application Insights SDK zum Anpassen Ihrer exportierten Telemetrie verwenden, planen Sie die Migration zu OpenTelemetry für langfristige Unterstützung und den Zugriff auf die neuesten Observability-Funktionen. Die klassischen Application Insights-SDKs erhalten keine neuen Funktionsupdates. OpenTelemetry wird für C#-In-Process-Apps nicht unterstützt.

Der Azure Monitor OpenTelemetry Exporter erfordert eine Application Insights-Verbindungszeichenfolge (APPLICATIONINSIGHTS_CONNECTION_STRING) und unterstützt nicht die Verwendung eines Instrumentierungsschlüssels.

Informationen zum Konfigurieren von OpenTelemetry in Ihrer Funktions-App finden Sie unter Use OpenTelemetry with Azure Functions.

Application Insights – Preise und Limits

Sie können die Application Insights-Integration mit Azure Functions kostenlos testen, die einen täglichen Grenzwert für die kostenlose Verarbeitung von Daten bietet.

Wenn Sie Application Insights in der Entwicklung aktivieren, kann dieser Grenzwert während der Tests erreicht werden. Azure bietet Portal- und E-Mail-Benachrichtigungen, wenn Sie sich Ihrem täglichen Grenzwert nähern. Wenn Sie diese Warnungen verpassen und den Grenzwert erreichen, werden neue Protokolle nicht in Application Insights-Abfragen angezeigt. Seien Sie sich des Grenzwerts bewusst, um unnötigen Zeitaufwand für die Problembehandlung zu vermeiden. Weitere Informationen finden Sie unter Abrechnung für Application Insights.

Wichtig

Application Insights verfügt über ein Feature zur Stichprobenentnahme als Schutz davor, dass bei Spitzenlast zu viele Telemetriedaten für erfolgte Vorgänge produziert werden. Sampling ist standardmäßig aktiviert. Wenn Ihnen Daten zu fehlen scheinen, müssen Sie möglicherweise nur die Sampling-Einstellungen an Ihr spezielles Überwachungsszenario anpassen. Weitere Informationen finden Sie unter Konfigurieren des Samplings.

Application Insights-Integration

In der Regel erstellen Sie eine Application Insights-Instanz, wenn Sie Ihre Funktions-App erstellen. In diesem Fall ist der für die Integration erforderliche Instrumentierungsschlüssel bereits als Anwendungseinstellung mit dem Namen APPINSIGHTS_INSTRUMENTATIONKEY festgelegt. Wenn aus irgendeinem Grund für Ihre Funktions-App kein Instrumentierungsschlüssel festgelegt ist, müssen Sie die Application Insights-Integration aktivieren.

Wichtig

Souveräne Clouds wie Azure Government erfordern die Verwendung der Application Insights Verbindungszeichenfolge (APPLICATIONINSIGHTS_CONNECTION_STRING) anstelle des Instrumentierungsschlüssels. Weitere Informationen finden Sie in der Referenz zu APPLICATIONINSIGHTS_CONNECTION_STRING.

In der folgenden Tabelle werden die unterstützten Features von Application Insights aufgeführt, die für die Überwachung Ihrer Funktions-Apps verfügbar sind:

Azure Functions Laufzeitversion 1.x 4.x und höher
Automatische Sammlung von
• Anforderungen
• Ausnahmen
• Leistungsindikatoren
• Abhängigkeiten
   – HTTP
   — Service Bus
   – Event Hubs
   – SQL*
Unterstützte Features
• QuickPulse/LiveMetrics Ja Ja
   — Sicherer Kontrollkanal Ja
• Stichprobenentnahme Ja Ja
• Herzschläge Ja
Korrelation
• Service Bus Ja
• Ereignishubs Ja
Konfigurierbar
Vollständig konfigurierbar Ja

* Informationen zum Aktivieren der Sammlung von SQL-Abfragezeichenfolgentext finden Sie unter Aktivieren der SQL-Abfragesammlung.

Sammeln von Telemetriedaten

Wenn die Application Insights-Integration aktiviert ist, werden Telemetriedaten an die verbundene Application Insights-Instanz gesendet. Diese Daten umfassen vom Functions-Host generierte Protokolle, Ablaufverfolgungen, die von Ihrem Funktionscode geschrieben wurden, und Leistungsdaten.

Hinweis

Zusätzlich zu den Daten aus Ihren Funktionen und dem Functions-Host können Sie auch Daten aus dem Functions-Skalierungscontroller sammeln.

Protokolliergrade und Kategorien

Wenn Sie Ablaufverfolgungen auf Grundlage des Anwendungscodes schreiben, sollten Sie den Ablaufverfolgungen eine Protokollebene zuweisen. Protokolliergrade bieten Ihnen die Möglichkeit, die Menge der Daten, die von ihren Ablaufverfolgungen gesammelt werden, zu begrenzen.

Jedem Protokoll wird eine Protokollebene zugewiesen. Der Wert ist eine ganze Zahl, die die relative Wichtigkeit angibt:

LogLevel Code BESCHREIBUNG
Trace 0 Protokolle, die die ausführlichsten Meldungen enthalten. Diese Meldungen enthalten möglicherweise vertrauliche Anwendungsdaten. Diese Meldungen sind standardmäßig deaktiviert und sollten nie in einer Produktionsumgebung aktiviert werden.
Debuggen 1 Protokolle, die für interaktive Untersuchungen während der Entwicklung verwendet werden. Diese Protokolle sollten hauptsächlich Informationen enthalten, die für das Debuggen nützlich sind und keinen langfristigen Wert haben.
Information 2 Protokolle, die den allgemeinen Flow der Anwendung nachverfolgen. Diese Protokolle sollten einen langfristigen Wert aufweisen.
Warnung 3 Dies sind Protokolle, die ein ungewöhnliches oder unerwartetes Ereignis im Anwendungsfluss hervorheben, jedoch nicht bewirken, dass die Anwendung beendet wird.
Fehler 4 Dies sind Protokolle, die hervorheben, wenn der aktuelle Ausführungsfluss aufgrund eines Fehlers beendet wird. Diese Fehler sollten auf einen Fehler im Zusammenhang mit der aktuellen Aktivität und nicht auf einen anwendungsweiten Fehler hinweisen.
Kritisch 5 Protokolle, die einen nicht behebbaren Anwendungs- oder Systemabsturz beschreiben oder einen schwerwiegenden Fehler, der unmittelbare Aufmerksamkeit erfordert.
Keine 6 Hiermit wird die Protokollierung für die angegebene Kategorie deaktiviert.

Durch die Konfiguration der host.json-Datei wird bestimmt, welcher Protokollierungsgrad von einer Funktions-App an Application Insights gesendet wird.

Weitere Informationen zu Protokolliergraden finden Sie unter Konfigurieren von Protokollgraden.

Wenn Sie einer Kategorie protokollierte Elemente zuweisen, haben Sie mehr Kontrolle über die Telemetriedaten, die aus bestimmten Quellen in der Funktions-App generiert werden. Kategorien vereinfachen das Ausführen von Analysen der gesammelten Daten. Ablaufverfolgungen, die auf Grundlage Ihres Funktionscodes geschrieben wurden, werden einzelnen Kategorien basierend auf dem Funktionsnamen zugewiesen. Weitere Informationen zu Kategorien finden Sie unter Konfigurieren von Kategorien.

Benutzerdefinierte Telemetriedaten

Um benutzerdefinierte Telemetriedaten aus Ihren Funktionen zu schreiben, empfiehlt es sich, den OpenTelemetry-Exporter zu verwenden, der standardbasierte Telemetrie bereitstellt, die an Application Insights und jeden OTLP-kompatiblen Endpunkt gesendet werden kann.

Sie können auch sprachspezifische klassische Application Insights-SDKs verwenden, um benutzerdefinierte Telemetrie in C#, JavaScript und Python zu schreiben. Diese klassischen SDKs sind jedoch legacy und erhalten keine neuen Funktionsupdates. Planen Sie die Migration zu OpenTelemetry für einen langfristigen Support.

Abhängigkeiten

Ab Version 2.x von Functions erfasst Application Insights automatisch Daten zu Abhängigkeiten für Bindungen, die bestimmte Client-SDKs verwenden. Application Insights sammelt Daten über die folgenden Abhängigkeiten:

  • Azure Cosmos DB
  • Azure Event Hubs
  • Azure Service Bus
  • Azure Storage-Dienste (Blob, Warteschlange und Tabelle)

HTTP-Anforderungen und Datenbankaufrufe mithilfe von SqlClient werden ebenfalls erfasst. Eine umfassende Liste der Abhängigkeiten, die von Application Insights unterstützt werden, finden Sie unter Automatisch nachverfolgte Abhängigkeiten.

Application Insights generiert eine Anwendungsübersicht der gesammelten Abhängigkeitsdaten. Im Folgenden finden Sie ein Beispiel für eine Anwendungsübersicht einer HTTP-Triggerfunktion mit einer Queue Storage-Ausgabebindung.

Screenshot zeigt eine Anwendungskarte mit Abhängigkeit im Azure-Portal.

Abhängigkeiten werden mit Information-Grad geschrieben. Wenn Sie nach Warning oder oben filtern, werden die Abhängigkeitsdaten nicht angezeigt. Außerdem erfolgt die automatische Sammlung von Abhängigkeiten im Nichtbenutzerbereich. Um Abhängigkeitsdaten zu erfassen, stellen Sie sicher, dass der Grad mindestens auf Information außerhalb des Benutzerbereichs (Function.<YOUR_FUNCTION_NAME>.User) auf Ihrem Host festgelegt ist.

Zusätzlich zur automatischen Abhängigkeitsdatensammlung können Sie benutzerdefinierte Abhängigkeitsinformationen in die Protokolle schreiben. Der empfohlene Ansatz besteht darin, den OpenTelemetry-Exporter für die standardsbasierte Abhängigkeitsnachverfolgung zu verwenden.

Sie können auch sprachspezifische klassische Application Insights-SDKs verwenden, aber dies sind legacy und erhalten keine neuen Featureupdates:

Leistungsindikatoren

Die automatische Sammlung von Leistungsindikatoren wird bei der Ausführung unter Linux nicht unterstützt.

Schreiben in Protokolle

Die Art und Weise, wie Sie in Protokolle schreiben und welche APIs verwendet werden, hängt von der Sprache des Funktions-App-Projekts ab. Weitere Informationen zum Schreiben von Protokollen aus ihren Funktionen finden Sie im Entwicklerhandbuch für Ihre Sprache.

Daten analysieren

Standardmäßig werden die von Ihrer Funktions-App gesammelten Daten in Application Insights gespeichert. Im Azure-Portal bietet Application Insights einen umfangreichen Satz von Visualisierungen Ihrer Telemetriedaten. Sie können Drilldowns für Fehlerprotokolle, Abfrageereignisse und Metriken ausführen. Weitere Informationen, einschließlich grundlegender Beispiele zum Anzeigen und Abfragen ihrer gesammelten Daten, finden Sie unter Analyze Azure Functions Telemetrie in Application Insights.

Streamingprotokolle

Beim Entwickeln einer Anwendung möchten Sie häufig sehen, was in die Protokolle in nahezu Echtzeit geschrieben wird, wenn sie in Azure ausgeführt wird.

Es gibt zwei Möglichkeiten, einen Datenstrom der Protokolldaten anzuzeigen, die bei den Ausführungen Ihrer Funktion generiert werden.

  • Integriertes Protokollstreaming: Mithilfe der App Service-Plattform können Sie einen Datenstrom Ihrer Anwendungsprotokolldateien einsehen. Dieser Datenstrom entspricht der Ausgabe, die beim Debuggen Ihrer Funktionen bei der lokalen Entwicklung oder bei Verwenden der Registerkarte Test im Portal zu sehen ist. Alle protokollbasierten Informationen werden angezeigt. Weitere Informationen finden Sie unter Streamen von Protokollen. Diese Streamingmethode unterstützt nur eine einzelne Instanz und kann nicht mit einer App verwendet werden, die unter Linux in einem Verbrauchstarif ausgeführt wird.

  • Live Metrics Stream: Wenn Ihre Funktions-App verbindung mit Application Insights ist, können Sie Protokolldaten und andere Metriken in Echtzeit im Azure-Portal anzeigen, indem Sie Live Metrics Stream verwenden. Verwenden Sie diese Methode, wenn Sie Funktionen überwachen, die auf mehreren Instanzen oder unter Linux in einem Verbrauchstarif ausgeführt werden. Diese Methode verwendet Stichprobendaten.

Protokolldatenströme können sowohl im Portal als auch in den meisten lokalen Entwicklungsumgebungen eingesehen werden. Informationen zum Aktivieren von Protokolldatenströmen finden Sie unter Enable Streaming-Ausführungsprotokolle in Azure Functions.

Diagnoseprotokolle

Mit Application Insights können Sie Telemetriedaten für die langfristige Speicherung oder andere Analysis Services exportieren.

Da Funktionen auch in Azure Monitor integriert sind, können Sie auch Diagnoseeinstellungen verwenden, um Telemetriedaten an verschiedene Ziele zu senden, einschließlich Azure Monitor Protokollen. Weitere Informationen finden Sie unter Monitor Azure Functions.

Skalieren von Controllerprotokollen

Der Azure Functions-Skalierungscontroller überwacht Instanzen des Azure Functions-Hosts, auf dem Ihre App ausgeführt wird. Dieser Controller entscheidet basierend auf der aktuellen Leistung über das Hinzufügen oder Entfernen von Instanzen. Der Skalierungscontroller kann Protokolle an Application Insights ausgeben, damit sie die Entscheidungen, die der Skalierungscontroller für Ihre Funktions-App trifft, besser nachvollziehen können. Sie können die generierten Protokolle auch im Blobspeicher speichern, damit Sie von einem anderen Dienst analysiert werden können.

Um dieses Feature zu aktivieren, fügen Sie den Einstellungen ihrer Funktions-App eine Anwendungseinstellung mit dem Namen SCALE_CONTROLLER_LOGGING_ENABLED hinzu. Weitere Informationen finden Sie unter Konfigurieren der Skalierung von Controllerprotokollen.

Azure Monitor Metriken

Zusätzlich zu protokollbasierten Telemetriedaten, die von Application Insights gesammelt werden, können Sie auch Daten darüber abrufen, wie die Funktions-App von Azure Monitor Metrics ausgeführt wird. Weitere Informationen finden Sie unter Monitor Azure Functions.

Melden von Problemen

Um ein Problem mit der Application Insights-Integration in Funktionen zu melden oder einen Vorschlag oder eine Anforderung zu stellen, create an issue in GitHub.

Nächste Schritte

Weitere Informationen finden Sie in den folgenden Ressourcen: