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 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. 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 .
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.
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.
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.
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.
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.
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 Portal:
Bläddra till funktionsappen i portalen.
Välj Application Insights under Inställningar på den vänstra sidan.
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.
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.
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 | beskrivning |
---|---|
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.
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 | beskrivning |
---|---|
Spår | Loggar som skapats av körningen, skalningskontrollanten och spårningar från funktionskoden. För Flex Consumption Plan hosting traces innehåller även loggar som skapats under koddistributionen. |
Förfrågningar | 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
Fråga efter distributionsloggar för Flex Consumption-kod
Viktigt!
Flex Consumption-planen är för närvarande i förhandsversion.
Följande fråga kan användas för att söka efter alla koddistributionsloggar för den aktuella funktionsappen inom den angivna tidsperioden:
traces
| extend deploymentId = customDimensions.deploymentId
| where deploymentId != ''
| project timestamp, deploymentId, message, severityLevel, customDimensions, appName
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: