Überwachen von Ausführungen in Azure Functions

Azure Functions bietet eine integrierte Integration mit Azure Application Insights zur Überwachung von Funktionsausführungen. Dieser Artikel bietet eine Übersicht über die Überwachungsfunktionen von Azure für die Überwachung von Azure Functions.

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. Weitere Informationen finden Sie unter Was ist Application Insights?.

Da die Instrumentierung von Application Insights in Azure Functions integriert ist, benötigen Sie einen gültigen Instrumentierungsschlüssel, um Ihre Funktions-App mit einer Application Insights-Ressource zu verbinden. Der Instrumentierungsschlüssel wird den Anwendungseinstellungen hinzugefügt, wenn Ihre Funktions-App-Ressource in Azure erstellt wird. Wenn Ihre Funktions-App noch nicht über diesen Schlüssel verfügt, können Sie ihn manuell festlegen.

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

Application Insights – Preise und Limits

Sie können die Application Insights-Integration in Azure Functions kostenlos ausprobieren, indem Sie das Tageslimit für die kostenlose Verarbeitung von Daten nutzen.

Wenn Sie Application Insights in der Entwicklung aktivieren, kann dieser Grenzwert während der Tests erreicht werden. In Azure erhalten Sie Benachrichtigungen im Portal und per E-Mail, wenn Ihr Tageslimit beinahe erreicht ist. Wenn Sie diese Benachrichtigungen ignorieren und das Limit 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.

Die vollständige Liste der Application Insights-Features, die für Ihre Funktions-App verfügbar sind, finden Sie unter Unterstützte Features in Application Insights für Azure Functions.

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

Sovereign 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:

Version der Azure Functions-Runtime 1.x 2.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
• Event Hubs 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. Sie 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 für das Debuggen hilfreiche Informationen enthalten. Sie besitzen keinen langfristigen Nutzen.
Information 2 Protokolle, die den allgemeinen Ablauf der Anwendung nachverfolgen. Diese Protokolle sollten einen langfristigen Nutzen besitzen.
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

In C#, JavaScript und Python können Sie ein Application Insights SDK verwenden, um benutzerdefinierte Telemetriedaten zu schreiben.

Abhängigkeiten

Ab Version 2.x von Functions erfasst Application Insights automatisch Daten zu Abhängigkeiten für Bindungen, die bestimmte Client-SDKs verwenden. Verteilte Ablaufverfolgung und Abhängigkeitsnachverfolgung von Application Insights werden derzeit nicht für C#-Apps unterstützt, die in einem isolierten Workerprozess ausgeführt werden. Application Insights sammelt Daten über die folgenden Abhängigkeiten:

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

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.

Application map with dependency

Abhängigkeiten werden mit Information-Grad geschrieben. Wenn Sie nach Warning oder einem höheren Grad filtern, werden keine Abhängigkeitsdaten 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 Sammlung von Abhängigkeitsdaten können Sie auch eines der sprachspezifischen Application Insights-SDKs verwenden, um benutzerdefinierte Abhängigkeitsinformationen in die Protokolle zu schreiben. Ein Beispiel zum Schreiben von benutzerdefinierten Abhängigkeiten finden Sie in den folgenden sprachspezifischen Beispielen:

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 stellt Application Insights eine umfangreiche Sammlung von Visualisierungen für Ihre Telemetriedaten bereit. Sie können Drilldowns für Fehlerprotokolle, Abfrageereignisse und Metriken ausführen. Weitere Informationen (einschließlich grundlegender Beispiele für die Anzeige und Abfrage Ihrer erfassten Daten) finden Sie unter Analysieren der Azure Functions-Telemetrie in Application Insights.

Streamingprotokolle

Bei der Anwendungsentwicklung ist es häufig wünschenswert, nahezu in Echtzeit zu sehen, was bei der Ausführung in Azure in die Protokolle geschrieben 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 mit Application Insights verbunden ist, können Sie im Azure-Portal mithilfe von Live Metrics Stream Protokolldaten und andere Metriken nahezu in Echtzeit anzeigen. 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 Aktivieren von Datenströmen für Ausführungsprotokolle in Azure Functions.

Diagnoseprotokolle

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

Da Functions auch in Azure Monitor integriert ist, können Sie auch Diagnoseeinstellungen verwenden, um Telemetriedaten an verschiedene Ziele zu senden, einschließlich an Azure Monitor-Protokolle. Weitere Informationen finden Sie unter Überwachen von Azure Functions mit Azure Monitor-Protokollen.

Skalieren von Controllerprotokollen

Der Azure Functions-Skalierungscontroller dient zum Überwachen von 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 den von Application Insights erfassten protokollbasierten Telemetriedaten können Sie auch Daten über die Ausführung von Funktions-Apps von den Azure Monitor-Metriken erhalten. Weitere Informationen finden Sie unter Überwachen mit Azure Monitor.

Melden von Problemen

Erstellen Sie auf GitHub einen Problemeintrag, um ein Problem mit der Application Insights-Integration in Functions zu melden oder einen Vorschlag oder eine Anfrage zu erstellen.

Nächste Schritte

Weitere Informationen finden Sie in den folgenden Ressourcen: