Analysera Azure Functions-telemetri i Application Insights

Azure Functions integreras med Application Insights så att du kan övervaka dina funktionsappar bättre. Application Insights samlar in telemetridata som genereras av din funktionsapp, inklusive information som din app skriver till loggar. Application Insights-integrering aktiveras vanligtvis när din funktionsapp skapas. Om din funktionsapp inte har instrumentationsnyckeln inställd måste du först aktivera Application Insights-integrering.

Som standard lagras data som samlas in från funktionsappen i Application Insights. I Azure-portalen 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. Den här artikeln innehåller grundläggande exempel på hur du visar och frågar efter dina insamlade data. Mer information om hur du utforskar dina funktionsappdata i Application Insights finns i Vad är Application Insights?.

För att kunna visa Application Insights-data från en funktionsapp måste du ha minst behörighet för rollen Deltagare i funktionsappen. Du måste också ha behörigheten Övervakningsläsare på Application Insights-instansen. Du har dessa behörigheter som standard för alla funktionsappar och Application Insights-instanser som du skapar.

Mer information om datakvarhållning och potentiella lagringskostnader finns i Datainsamling, kvarhållning och lagring i Application Insights.

Visa telemetri på fliken Övervaka

Med Application Insights-integrering aktiverat kan du visa telemetridata på fliken Övervaka .

  1. På funktionsappsidan väljer du en funktion som har körts minst en gång efter att Application Insights har konfigurerats. Välj sedan Övervaka i det vänstra fönstret. Välj Uppdatera regelbundet tills listan över funktionsanrop visas.

    Invocations list

    Kommentar

    Det kan ta upp till fem minuter innan listan visas medan telemetriklienten batchar data för överföring till servern. Fördröjningen gäller inte för Live Metrics Stream. Tjänsten ansluter till Functions-värden när du läser in sidan, så loggar strömmas direkt till sidan.

  2. Om du vill se loggarna för en viss funktionsanrop väljer du kolumnlänken Datum (UTC) för det anropet. Loggningsutdata för anropet visas på en ny sida.

    Invocation details

  3. Välj Kör i Application Insights för att visa källan till frågan som hämtar Azure Monitor-loggdata i Azure Log. Om det här är första gången du använder Azure Log Analytics i din prenumeration uppmanas du att aktivera det.

  4. När du har aktiverat Log Analytics visas följande fråga. Du kan se att frågeresultatet är begränsat till de senaste 30 dagarna (where timestamp > ago(30d)), och resultaten visar högst 20 rader (take 20). Anropsinformationslistan för din funktion är däremot för de senaste 30 dagarna utan gräns.

    Application Insights Analytics invocation list

Mer information finns i Fråga efter telemetridata senare i den här artikeln.

Visa telemetri i Application Insights

Så här öppnar du Application Insights från en funktionsapp i Azure-portalen:

  1. Bläddra till funktionsappen i portalen.

  2. Välj Application Insights under Inställningar på den vänstra sidan.

  3. Om det här är första gången du använder Application Insights med din prenumeration uppmanas du att aktivera den. Det gör du genom att välja Aktivera Application Insights och sedan Tillämpa på nästa sida.

Open Application Insights from the function app Overview page

Information om hur du använder Application Insights finns i Application Insights-dokumentationen. Det här avsnittet visar några exempel på hur du visar data i Application Insights. Om du redan är bekant med Application Insights kan du gå direkt till avsnitten om hur du konfigurerar och anpassar telemetridata.

Application Insights Overview tab

Följande områden i Application Insights kan vara användbara när du utvärderar beteendet, prestandan och felen i dina funktioner:

Undersök Description
Misslyckanden Skapa diagram och aviseringar baserat på funktionsfel och serverfel. Åtgärdsnamnet är funktionsnamnet. Fel i beroenden visas inte om du inte implementerar anpassad telemetri för beroenden.
Prestanda Analysera prestandaproblem genom att visa resursanvändning och dataflöde per molnrollinstanser. Dessa prestandadata kan vara användbara för felsökning av scenarier där funktioner fastnar i dina underliggande resurser.
Mått Skapa diagram och aviseringar som baseras på mått. Måtten omfattar antalet funktionsanrop, körningstid och lyckade priser.
Live Metrics Visa måttdata när de skapas nästan i realtid.

Fråga efter telemetridata

Application Insights Analytics ger dig åtkomst till alla telemetridata i form av tabeller i en databas. Analytics tillhandahåller ett frågespråk för att extrahera, manipulera och visualisera data.

Välj Loggar för att utforska eller fråga efter loggade händelser.

Analytics example

Här är ett frågeexempel som visar fördelningen av begäranden per arbetare under de senaste 30 minuterna.

requests
| where timestamp > ago(30m) 
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart

De tillgängliga tabellerna visas på fliken Schema till vänster. Du hittar data som genereras av funktionsanrop i följande tabeller:

Register Description
Spår Loggar som skapats av körningen, skalningskontrollanten och spårningar från funktionskoden.
Begäranden En begäran för varje funktionsanrop.
Undantag Eventuella undantag som genereras av körningen.
customMetrics Antalet lyckade och misslyckade anrop, framgångsfrekvens och varaktighet.
customEvents Händelser som spåras av körningen, till exempel HTTP-begäranden som utlöser en funktion.
performanceCounters Information om prestanda för servrarna som funktionerna körs på.

De andra tabellerna är för tillgänglighetstester och klient- och webbläsartelemetri. Du kan implementera anpassad telemetri för att lägga till data i dem.

I varje tabell finns några av de Functions-specifika data i ett customDimensions fält. Följande fråga hämtar till exempel alla spårningar som har loggnivå Error.

traces 
| where customDimensions.LogLevel == "Error"

Körningen innehåller fälten customDimensions.LogLevel och customDimensions.Category . Du kan ange ytterligare fält i loggar som du skriver i funktionskoden. Ett exempel i C#finns i Strukturerad loggning i utvecklarguiden för .NET-klassbiblioteket.

Frågefunktionsanrop

Varje funktionsanrop tilldelas ett unikt ID. InvocationId ingår i den anpassade dimensionen och kan användas för att korrelera alla loggar från en viss funktionskörning.

traces
| project customDimensions["InvocationId"], message

Telemetrikorrelation

Loggar från olika funktioner kan korreleras med .operation_Id Använd följande fråga för att returnera alla loggar för en specifik logisk åtgärd.

traces
| where operation_Id == '45fa5c4f8097239efe14a2388f8b4e29'
| project timestamp, customDimensions["InvocationId"], message
| order by timestamp

Samplingsprocent

Samplingskonfigurationen kan användas för att minska mängden telemetri. Använd följande fråga för att avgöra om samplingen är i drift eller inte. Om du ser att RetainedPercentage för någon typ är mindre än 100 innebär det att den typen av telemetri samplas.

union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType

Frågeskalningskontrollantloggar

Den här funktionen är i förhandsversion.

När du har aktiverat både skalningskontrollantloggning och Application Insights-integrering kan du använda Application Insights-loggsökningen för att fråga efter de utgivna skalningskontrollantloggarna. Skalningskontrollantloggar sparas i traces samlingen under kategorin ScaleControllerLogs .

Följande fråga kan användas för att söka efter alla skalningskontrollantloggar för den aktuella funktionsappen inom den angivna tidsperioden:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"

Följande fråga expanderar den föregående frågan för att visa hur du endast hämtar loggar som anger en ändring i skala:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
| where message == "Instance count changed"
| extend Reason = CustomDimensions.Reason
| extend PreviousInstanceCount = CustomDimensions.PreviousInstanceCount
| extend NewInstanceCount = CustomDimensions.CurrentInstanceCount

Förbrukningsplanspecifika mått

När du kör i en förbrukningsplan mäts körningskostnaden för en enskild funktionskörning i GB-sekunder. Körningskostnaden beräknas genom att kombinera minnesanvändningen med körningstiden. Mer information finns i Beräkna kostnader för förbrukningsplan.

Följande telemetrifrågor är specifika för mått som påverkar kostnaden för att köra funktioner i förbrukningsplanen.

Fastställa minnesanvändning

Under Övervakning väljer du Loggar (Analys), kopierar sedan följande telemetrifråga och klistrar in den i frågefönstret och väljer Kör. Den här frågan returnerar den totala minnesanvändningen vid varje sampeltillfälle.

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

Resultatet ser ut som i följande exempel:

tidsstämpel [UTC] name värde
2019-09-12, 01:05:14.947 Privata byte 209,932,288
2019-09-12, 01:06:14.994 Privata byte 212,189,184
2019-09-12, 01:06:30.010 Privata byte 231,714,816
2019-09-12, 01:07:15.040 Privata byte 210,591,744
2019-09-12, 01:12:16.285 Privata byte 216,285,184
2019-09-12, 01:12:31.376 Privata byte 235,806,720

Fastställa varaktighet

Azure Monitor spårar mått på resursnivå, vilket för Functions är funktionsappen. Application Insights-integrering genererar mått per funktion. Här är ett exempel på en analysfråga för att få den genomsnittliga varaktigheten för en funktion:

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ästa steg

Läs mer om övervakning av Azure Functions: