Azure Functions-telemetrie analyseren in Application Insights
Azure Functions integreert met Application Insights, zodat je je functie-apps beter kunt bewaken. Application Insights verzamelt telemetriegegevens die door uw functie-app worden gegenereerd, inclusief informatie die uw app naar logboeken schrijft. Application Insights-integratie wordt doorgaans ingeschakeld wanneer uw functie-app wordt gemaakt. Als uw functie-app niet beschikt over de instrumentatiesleutelset, moet u eerst Application Insights-integratie inschakelen.
De gegevens die worden verzameld uit uw functie-app, worden standaard opgeslagen in Application Insights. In Azure Portal biedt Application Insights een uitgebreide set visualisaties van uw telemetriegegevens. U kunt inzoomen op foutenlogboeken en querygebeurtenissen en metrische gegevens. Dit artikel bevat basisvoorbeelden van het weergeven en opvragen van uw verzamelde gegevens. Zie Wat is Application Insights? voor meer informatie over het verkennen van uw functie-app-gegevens in Application Insights.
Als u Application Insights-gegevens wilt kunnen weergeven vanuit een functie-app, moet u ten minste de rolmachtigingen voor inzenders voor de functie-app hebben. U moet ook de machtiging Lezer voor bewaking hebben voor het Application Insights-exemplaar. U hebt deze machtigingen standaard voor elke functie-app en Application Insights-instantie die u maakt.
Zie Gegevensverzameling, -retentie en -opslag in Application Insights voor meer informatie over gegevensretentie en mogelijke opslagkosten.
Telemetrie weergeven op het tabblad Monitor
Als Application Insights-integratie is ingeschakeld, kunt u telemetriegegevens weergeven op het tabblad Monitor .
Selecteer op de pagina van de functie-app een functie die ten minste eenmaal is uitgevoerd nadat Application Insights is geconfigureerd. Selecteer Vervolgens Monitor in het linkerdeelvenster. Selecteer Periodiek vernieuwen totdat de lijst met functie-aanroepen wordt weergegeven.
Notitie
Het kan tot vijf minuten duren voordat de lijst wordt weergegeven terwijl de telemetrieclient gegevens batcheert voor verzending naar de server. De vertraging is niet van toepassing op de Live Metrics Stream. Deze service maakt verbinding met de Functions-host wanneer u de pagina laadt, zodat logboeken rechtstreeks naar de pagina worden gestreamd.
Als u de logboeken voor een bepaalde functie-aanroep wilt zien, selecteert u de kolomkoppeling Date (UTC) voor die aanroep. De uitvoer van logboekregistratie voor die aanroep wordt weergegeven op een nieuwe pagina.
Kies Uitvoeren in Application Insights om de bron van de query weer te geven waarmee de Azure Monitor-logboekgegevens in Het Azure-logboek worden opgehaald. Als dit de eerste keer is dat u Azure Log Analytics in uw abonnement gebruikt, wordt u gevraagd dit in te schakelen.
Nadat u Log Analytics hebt ingeschakeld, wordt de volgende query weergegeven. U kunt zien dat de queryresultaten zijn beperkt tot de afgelopen 30 dagen (
where timestamp > ago(30d)
) en dat de resultaten niet meer dan 20 rijen (take 20
) bevatten. De lijst met aanroepdetails voor uw functie is daarentegen de afgelopen 30 dagen zonder limiet.
Zie Telemetriegegevens opvragen verderop in dit artikel voor meer informatie.
Telemetrie weergeven in Application Insights
Application Insights openen vanuit een functie-app in Azure Portal:
Blader naar uw functie-app in de portal.
Selecteer Application Insights onder Instellingen op de linkerpagina.
Als dit de eerste keer is dat u Application Insights met uw abonnement gebruikt, wordt u gevraagd dit in te schakelen. Hiervoor selecteert u Application Insights inschakelen en selecteert u Toepassen op de volgende pagina.
Zie de Application Insights-documentatie voor meer informatie over het gebruik van Application Insights. In deze sectie ziet u enkele voorbeelden van het weergeven van gegevens in Application Insights. Als u al bekend bent met Application Insights, kunt u rechtstreeks naar de secties gaan over het configureren en aanpassen van de telemetriegegevens.
De volgende gebieden van Application Insights kunnen nuttig zijn bij het evalueren van het gedrag, de prestaties en fouten in uw functies:
Onderzoeken | Beschrijving |
---|---|
Mislukkingen | Maak grafieken en waarschuwingen op basis van functiefouten en serveruitzonderingen. De naam van de bewerking is de naam van de functie. Fouten in afhankelijkheden worden niet weergegeven, tenzij u aangepaste telemetrie implementeert voor afhankelijkheden. |
Prestaties | Analyseer prestatieproblemen door resourcegebruik en doorvoer per cloudrolinstanties weer te geven. Deze prestatiegegevens kunnen handig zijn voor foutopsporingsscenario's waarbij functies uw onderliggende resources afbreken. |
Metrische gegevens | Grafieken en waarschuwingen maken die zijn gebaseerd op metrische gegevens. Metrische gegevens omvatten het aantal functie-aanroepen, uitvoeringstijd en slagingspercentages. |
Live Metrics | Metrische gegevens weergeven terwijl deze in bijna realtime worden gemaakt. |
Telemetriegegevens opvragen
Met Application Insights Analytics hebt u toegang tot alle telemetriegegevens in de vorm van tabellen in een database. Analytics biedt een querytaal voor het extraheren, bewerken en visualiseren van de gegevens.
Kies Logboeken om te verkennen of query's uit te voeren op vastgelegde gebeurtenissen.
Hier volgt een queryvoorbeeld waarin de distributie van aanvragen per werkrol in de afgelopen 30 minuten wordt weergegeven.
requests
| where timestamp > ago(30m)
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart
De beschikbare tabellen worden weergegeven op het tabblad Schema aan de linkerkant. U vindt gegevens die zijn gegenereerd door functie-aanroepen in de volgende tabellen:
Table | Beschrijving |
---|---|
Sporen | Logboeken die zijn gemaakt door de runtime, schaalcontroller en traceringen van uw functiecode. Voor het hosten van flexverbruiksabonnementen worden traces ook logboeken opgenomen die tijdens de code-implementatie zijn gemaakt. |
Verzoeken | Eén aanvraag voor elke functie-aanroep. |
Uitzonderingen | Eventuele uitzonderingen die door de runtime worden gegenereerd. |
customMetrics | Het aantal geslaagde en mislukte aanroepen, het slagingspercentage en de duur. |
customEvents | Gebeurtenissen die worden bijgehouden door de runtime, bijvoorbeeld: HTTP-aanvragen die een functie activeren. |
performanceCounters | Informatie over de prestaties van de servers waarop de functies worden uitgevoerd. |
De andere tabellen zijn voor beschikbaarheidstests en client- en browsertelemetrie. U kunt aangepaste telemetrie implementeren om er gegevens aan toe te voegen.
In elke tabel bevinden enkele functiesspecifieke gegevens zich in een customDimensions
veld. Met de volgende query worden bijvoorbeeld alle traceringen opgehaald die logboekniveau Error
hebben.
traces
| where customDimensions.LogLevel == "Error"
De runtime biedt de customDimensions.LogLevel
en customDimensions.Category
velden. U kunt aanvullende velden opgeven in logboeken die u in uw functiecode schrijft. Zie de ontwikkelaarshandleiding voor .NET-klassenbibliotheek voor een voorbeeld in C# voor gestructureerde logboekregistratie .
Aanroepen van queryfuncties
Aan elke functie-aanroep wordt een unieke id toegewezen. InvocationId
is opgenomen in de aangepaste dimensie en kan worden gebruikt om alle logboeken van een bepaalde functie-uitvoering te correleren.
traces
| project customDimensions["InvocationId"], message
Telemetriecorrelatie
Logboeken van verschillende functies kunnen worden gecorreleerd met behulp van operation_Id
. Gebruik de volgende query om alle logboeken voor een specifieke logische bewerking te retourneren.
traces
| where operation_Id == '45fa5c4f8097239efe14a2388f8b4e29'
| project timestamp, customDimensions["InvocationId"], message
| order by timestamp
Steekproefpercentage
Steekproefconfiguratie kan worden gebruikt om het volume van telemetrie te verminderen. Gebruik de volgende query om te bepalen of steekproeven operationeel zijn of niet. Als u ziet dat RetainedPercentage
voor elk type kleiner is dan 100, wordt er een steekproef genomen van dat type telemetrie.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType
Queryschaalcontrollerlogboeken
Deze functie is beschikbaar als preview-versie.
Nadat u zowel logboekregistratie van schaalcontrollers als Application Insights-integratie hebt ingeschakeld, kunt u zoeken in Application Insights-logboeken om query's uit te voeren op de logboeken van de verzonden schaalcontroller. Schaalcontrollerlogboeken worden opgeslagen in de traces
verzameling onder de categorie ScaleControllerLogs .
De volgende query kan worden gebruikt om te zoeken naar alle schaalcontrollerlogboeken voor de huidige functie-app binnen de opgegeven periode:
traces
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
Met de volgende query wordt de vorige query uitgebreid om te laten zien hoe u alleen logboeken krijgt die een wijziging in de schaal aangeven:
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
Implementatielogboeken voor Flex Consumption-code opvragen
De volgende query kan worden gebruikt om te zoeken naar alle code-implementatielogboeken voor de huidige functie-app binnen de opgegeven periode:
traces
| extend deploymentId = customDimensions.deploymentId
| where deploymentId != ''
| project timestamp, deploymentId, message, severityLevel, customDimensions, appName
Metrische gegevens voor verbruiksabonnementen
Bij uitvoering in een verbruiksabonnement worden de uitvoeringskosten van één functie-uitvoering gemeten in GB-seconden. De uitvoeringskosten worden berekend door het geheugengebruik te combineren met de uitvoeringstijd. Zie De kosten van het verbruiksabonnement schatten voor meer informatie.
De volgende telemetriequery's zijn specifiek voor metrische gegevens die van invloed zijn op de kosten van het uitvoeren van functies in het verbruiksabonnement.
Geheugengebruik bepalen
Selecteer Logboeken (Analytics) onder Bewaking, kopieer de volgende telemetriequery en plak deze in het queryvenster en selecteer Uitvoeren. Deze query retourneert het totale geheugengebruik op elke steekproeftijd.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
De resultaten zien eruit als in het volgende voorbeeld:
timestamp [UTC] | naam | waarde |
---|---|---|
9/12/2019, 1:05:14.947 AM | Privébytes | 209,932,288 |
9/12/2019, 1:06:14.994 AM | Privébytes | 212,189,184 |
12-9-2019, 1:06:30.010 uur | Privébytes | 231,714,816 |
12-9-2019, 1:07:15.040 uur | Privébytes | 210,591,744 |
12-9-2019, 1:12:16.285 AM | Privébytes | 216,285,184 |
9-12-2019, 1:12:31.376 AM | Privébytes | 235,806,720 |
Duur bepalen
Azure Monitor houdt metrische gegevens bij op resourceniveau, wat voor Functions de functie-app is. Application Insights-integratie verzendt metrische gegevens per functie. Hier volgt een voorbeeld van een analysequery om de gemiddelde duur van een functie op te halen:
customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
naam | averageDurationMilliseconden |
---|---|
QueueTrigger AvgDurationMs | 16.087 |
QueueTrigger MaxDurationMs | 90.249 |
QueueTrigger MinDurationMs | 8.522 |
Volgende stappen
Meer informatie over het bewaken van Azure Functions: