Ö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 de övervakningsfunktioner som tillhandahålls av 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 projektutvecklingen för lokala funktionsappar. Mer information finns i Vad är Application Insights?.
Eftersom Application Insights-instrumentation ä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 Övervaka 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.
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äng (APPLICATIONINSIGHTS_CONNECTION_STRING
) i stället för instrumentationsnyckeln. Mer information finns i referensen för APPLICATIONINSIGHTS_CONNECTION_STRING.
I följande tabell beskrivs 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 samling av | ||
•Förfrågningar | ✓ | ✓ |
•Undantag | ✓ | ✓ |
• Prestandaräknare | ✓ | ✓ |
•Beroenden | ||
— HTTP | ✓ | |
— Service Bus | ✓ | |
— Event Hubs | ✓ | |
— SQL* | ✓ | |
Funktioner som stöds | ||
• QuickPulse/LiveMetrics | Ja | Ja |
— Säker kontrollkanal | Ja | |
•Provtagning | Ja | Ja |
•Hjärtslag | Ja | |
Korrelation | ||
• Service Bus | Ja | |
• Event Hubs | Ja | |
Konfigurerbara | ||
•Fullständigt konfigurerbar | Ja |
* Information om hur du aktiverar samlingen med 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 omfattar loggar som genereras av Functions-värden, spårningar som skrivits från din funktionskod och prestandadata.
Kommentar
Förutom data från dina funktioner och Functions-värden kan du också samla in data från functions-skalningskontrollanten.
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 | beskrivning |
---|---|---|
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. |
Host.json-filkonfigurationen 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 utdatabindning för kölagring.
Beroenden skrivs på Information
nivån. Om du filtrerar på 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:
- Logga anpassad telemetri i C#-funktioner
- Logga anpassad telemetri i JavaScript-funktioner
- Logga anpassad telemetri i Python-funktioner
Prestandaräknare
Automatisk samling 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 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 öka detaljnivån för felloggar och fråga efter händelser och mått. Mer information, inklusive grundläggande exempel på hur du visar och frågar efter dina 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 nästan i realtid när det körs 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 den lokala utvecklingen 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 Övervaka Azure Functions med Azure Monitor-loggar.
Skalningskontrollantloggar
Skalningskontrollanten i Azure Functions övervakar instanser av Azure Functions-värden som appen körs på. Den här kontrollanten fattar beslut om när instanser ska läggas till eller tas 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 även hämta data om hur funktionsappen körs från Azure Monitor Metrics. Mer information finns i Övervakning med Azure Monitor.
Rapportera problem
Om du vill rapportera ett problem med Application Insights-integrering i Functions, eller om du vill lägga fram ett förslag eller en begäran, skapar du ett problem i GitHub.
Nästa steg
Mer information finns i följande resurser: