Övervaka körningar i Azure Functions

Azure Functions erbjuder inbyggd integrering med Azure Application Insights för att övervaka funktionskörningar. Den här artikeln innehåller en översikt över övervakningsfunktionerna i Azure för övervakning av Azure Functions.

Application Insights samlar in logg-, prestanda- och feldata. Genom att automatiskt identifiera prestandaavvikelser och använda kraftfulla analysverktyg kan du enklare diagnostisera problem och bättre förstå hur dina funktioner används. Dessa verktyg är utformade för att hjälpa dig att kontinuerligt förbättra prestanda och användbarhet för dina funktioner. Du kan till och med använda Application Insights under projektutveckling av lokala funktionsappar. Mer information finns i Vad är Application Insights?.

När Application Insights-instrumentationen är inbyggd i Azure Functions behöver du en giltig instrumentationsnyckel för att ansluta funktionsappen till en Application Insights-resurs. Instrumentationsnyckeln läggs till i dina programinställningar när du skapar din funktionsappresurs i Azure. Om funktionsappen inte redan har den här nyckeln kan du ange den manuellt.

Du kan också övervaka själva funktionsappen med hjälp av Azure Monitor. Mer information finns i Övervakning Azure Functions med Azure Monitor.

Priser och gränser för Application Insights

Du kan prova Application Insights-integrering med Azure Functions kostnadsfritt med en daglig gräns för hur mycket data som bearbetas kostnadsfritt.

Om du aktiverar Applications Insights under utvecklingen kan du nå den här gränsen under testningen. Azure tillhandahåller portal- och e-postaviseringar när du närmar dig din dagliga gräns. Om du missar aviseringarna och når gränsen visas inte nya loggar i Application Insights-frågor. Var medveten om gränsen för att undvika onödig felsökningstid. Mer information finns i Application Insights-fakturering.

Viktigt

Application Insights har en samplingsfunktion som kan skydda dig från att producera för mycket telemetridata vid slutförda körningar vid tider med hög belastning. Sampling är aktiverat som standard. Om du verkar sakna data kan du behöva justera samplingsinställningarna så att de passar ditt specifika övervakningsscenario. Mer information finns i Konfigurera sampling.

Den fullständiga listan över Application Insights-funktioner som är tillgängliga för din funktionsapp beskrivs i Application Insights för Azure Functions funktioner som stöds.

Application Insights-integrering

Vanligtvis skapar du en Application Insights-instans när du skapar din funktionsapp. I det här fallet har instrumentationsnyckeln som krävs för integreringen redan angetts som en programinställning med namnet APPINSIGHTS_INSTRUMENTATIONKEY. Om funktionsappen av någon anledning inte har instrumentationsnyckeln inställd måste du aktivera Application Insights-integrering.

Viktigt

Nationella moln, till exempel Azure Government, kräver användning av Application Insights-anslutningssträngen (APPLICATIONINSIGHTS_CONNECTION_STRING) i stället för instrumentationsnyckeln. Mer information finns i referensen för APPLICATIONINSIGHTS_CONNECTION_STRING.

Följande tabell beskriver de funktioner som stöds i Application Insights som är tillgängliga för övervakning av dina funktionsappar:

Azure Functions körningsversion 1.x 2.x+
Automatisk insamling av
•Begäranden
•Undantag
• Prestandaräknare
•Beroenden
   — HTTP
   — Service Bus
   — Event Hubs
   — SQL*
Funktioner som stöds
• QuickPulse/LiveMetrics Ja Ja
   — Säker kontrollkanal Yes
•Provtagning Ja Ja
•Hjärtslag Yes
Korrelation
• Service Bus Yes
• Event Hubs Yes
Konfigurerbar
Fullständigt konfigurerbar Yes

* Information om hur du aktiverar insamling av SQL-frågesträngstext finns i Aktivera SQL-frågesamling.

Samla in telemetridata

Med Application Insights-integrering aktiverat skickas telemetridata till din anslutna Application Insights-instans. Dessa data innehåller loggar som genereras av Functions-värden, spårningar som skrivits från din funktionskod och prestandadata.

Anteckning

Förutom data från dina funktioner och Functions-värden kan du även samla in data från skalningskontrollanten Functions.

Loggnivåer och kategorier

När du skriver spårningar från programkoden bör du tilldela spårningarna en loggnivå. Loggnivåer ger dig ett sätt att begränsa mängden data som samlas in från dina spårningar.

En loggnivå tilldelas till varje logg. Värdet är ett heltal som anger relativ betydelse:

Loggnivå Kod Description
Spårning 0 Loggar som innehåller de mest detaljerade meddelandena. Dessa meddelanden kan innehålla känsliga programdata. Dessa meddelanden är inaktiverade som standard och bör aldrig aktiveras i en produktionsmiljö.
Felsöka 1 Loggar som används för interaktiv undersökning under utveckling. Dessa loggar bör främst innehålla information som är användbar för felsökning och har inget långsiktigt värde.
Information 2 Loggar som spårar programmets allmänna flöde. Dessa loggar bör ha ett långsiktigt värde.
Varning 3 Loggar som markerar en onormal eller oväntad händelse i programflödet, men som annars inte gör att programkörningen stoppas.
Fel 4 Loggar som markerar när det aktuella körningsflödet stoppas på grund av ett fel. Dessa fel bör indikera ett fel i den aktuella aktiviteten, inte ett programomfattande fel.
Kritiskt 5 Loggar som beskriver ett oåterkalleligt program eller en systemkrasch eller ett oåterkalleligt fel som kräver omedelbar uppmärksamhet.
Ingen 6 Inaktiverar loggning för den angivna kategorin.

Konfigurationen av filen host.json avgör hur mycket loggning en funktionsapp skickar till Application Insights.

Mer information om loggnivåer finns i Konfigurera loggnivåer.

Genom att tilldela loggade objekt till en kategori har du mer kontroll över telemetri som genereras från specifika källor i funktionsappen. Kategorier gör det enklare att köra analys över insamlade data. Spårningar som skrivs från funktionskoden tilldelas till enskilda kategorier baserat på funktionsnamnet. Mer information om kategorier finns i Konfigurera kategorier.

Anpassade telemetridata

I C#, JavaScript och Python kan du använda en Application Insights SDK för att skriva anpassade telemetridata.

Beroenden

Från och med version 2.x av Functions samlar Application Insights automatiskt in data om beroenden för bindningar som använder vissa klient-SDK:er. Distribuerad spårning och beroendespårning i Application Insights stöds för närvarande inte för C#-appar som körs i en isolerad arbetsprocess. Application Insights samlar in data om följande beroenden:

  • Azure Cosmos DB
  • Azure Event Hubs
  • Azure Service Bus
  • Azure Storage-tjänster (blob, kö och tabell)

HTTP-begäranden och databasanrop som använder SqlClient samlas också in. En fullständig lista över beroenden som stöds av Application Insights finns i Automatiskt spårade beroenden.

Application Insights genererar en programkarta över insamlade beroendedata. Följande är ett exempel på en programkarta över en HTTP-utlösarfunktion med en queue storage-utdatabindning.

Programkarta med beroende

Beroenden skrivs på Information nivån. Om du filtrerar vid Warning eller över visas inte beroendedata. Dessutom sker automatisk insamling av beroenden i ett icke-användaromfång. Om du vill samla in beroendedata kontrollerar du att nivån är inställd på minst Information utanför användaromfånget (Function.<YOUR_FUNCTION_NAME>.User) i värden.

Förutom automatisk insamling av beroendedata kan du också använda en av de språkspecifika Application Insights-SDK:erna för att skriva anpassad beroendeinformation till loggarna. Ett exempel på hur du skriver anpassade beroenden finns i något av följande språkspecifika exempel:

Prestandaräknare

Automatisk samling av prestandaräknare stöds inte när du kör på Linux.

Skriva till loggar

Hur du skriver till loggar och de API:er som du använder beror på språket i ditt funktionsappprojekt.
Läs utvecklarguiden för ditt språk om du vill veta mer om hur du skriver loggar från dina funktioner.

Analysera data

Som standard lagras de data som samlas in från funktionsappen i Application Insights. I Azure Portal tillhandahåller Application Insights en omfattande uppsättning visualiseringar av dina telemetridata. Du kan gå in på felloggar och fråga efter händelser och mått. Mer information, inklusive grundläggande exempel på hur du visar och frågar efter insamlade data, finns i Analysera Azure Functions telemetri i Application Insights.

Strömmande loggar

När du utvecklar ett program vill du ofta se vad som skrivs till loggarna i nära realtid när du kör i Azure.

Det finns två sätt att visa en ström av loggdata som genereras av dina funktionskörningar.

  • Inbyggd loggströmning: med App Service-plattformen kan du visa en ström av dina programloggfiler. Den här strömmen motsvarar utdata som visas när du felsöker dina funktioner under lokal utveckling och när du använder fliken Test i portalen. All loggbaserad information visas. Mer information finns i Stream-loggar. Den här strömningsmetoden stöder endast en enskild instans och kan inte användas med en app som körs på Linux i en förbrukningsplan.

  • Live Metrics Stream: När din funktionsapp är ansluten till Application Insights kan du visa loggdata och andra mått nästan i realtid i Azure Portal med hjälp av Live Metrics Stream. Använd den här metoden när du övervakar funktioner som körs på flera instanser eller i Linux i en förbrukningsplan. Den här metoden använder exempeldata.

Loggströmmar kan visas både i portalen och i de flesta lokala utvecklingsmiljöer. Information om hur du aktiverar loggströmmar finns i Aktivera körningsloggar för direktuppspelning i Azure Functions.

Diagnostikloggar

Med Application Insights kan du exportera telemetridata till långsiktig lagring eller andra analystjänster.

Eftersom Functions också integreras med Azure Monitor kan du också använda diagnostikinställningar för att skicka telemetridata till olika mål, inklusive Azure Monitor-loggar. Mer information finns i Övervakning Azure Functions med Azure Monitor-loggar.

Skalningskontrollantloggar

Den Azure Functions skalningskontrollanten övervakar instanser av den Azure Functions värd som appen körs på. Den här kontrollanten fattar beslut om när instanser ska läggas till eller ta bort baserat på aktuella prestanda. Du kan låta skalningskontrollanten skicka loggar till Application Insights för att bättre förstå de beslut som skalningskontrollanten fattar för din funktionsapp. Du kan också lagra de genererade loggarna i Blob Storage för analys av en annan tjänst.

Om du vill aktivera den här funktionen lägger du till en programinställning med namnet SCALE_CONTROLLER_LOGGING_ENABLED i inställningarna för funktionsappen. Mer information finns i Konfigurera skalningskontrollantloggar.

Azure Monitor-mått

Förutom loggbaserade telemetridata som samlas in av Application Insights kan du också hämta data om hur funktionsappen körs från Azure Monitor Metrics. Mer information finns i Övervakning med Azure Monitor.

Rapportera problem

Skapa ett problem i GitHub om du vill rapportera ett problem med Application Insights-integrering i Functions, eller om du vill lägga till ett förslag eller en begäran.

Nästa steg

Mer information finns i följande resurser: