Application Insights-loggar saknas eller är felaktiga för Azure Functions-appar
Du kan övervaka funktionsappen noggrant genom integreringen mellan Azure Functions och Application Insights. Och du kan använda Application Insights utan någon anpassad konfiguration.
Om Application Insights-loggarna saknas, eller om data verkar vara partiella eller felaktiga, kan du lösa problemet med hjälp av följande steg.
Kontrollera konfigurationen av funktionsappen
Gå till din funktionsapp i Azure-portalen.
Välj Diagnostisera och lösa problem för att öppna Azure Functions-diagnostik.
I sökfältetskriver du Funktionskonfigurationskontroller och öppnar den.
Du ser en diagnostikrapport för alla funktionsappkonfigurationskontroller. I synnerhet för Application Insights utförs följande kontroller:
Det finns bara en av följande anslutningsinställningar:
APPINSIGHTS_INSTRUMENTATIONKEY
Application Insights Instrumentation-nyckelAPPLICATIONINSIGHTS_CONNECTION_STRING
sambandVi rekommenderar att du använder APPLICATIONINSIGHTS_CONNECTION_STRING för ett stabilare beteende. Möjligheten att använda
APPINSIGHTS_INSTRUMENTATIONKEY
kommer att vara inaktuell senast 2025.
Inbyggd
AzureWebJobsDashboard
-loggning är inaktiverat som rekommenderat.Sampling är aktiverat för Azure Functions-telemetri (aktiverad som standard).
Rekommendation: Funktionsappen ska vara på version 4 och körningsversionen ska vara minst 4.15.2xx. Det beror på att du från och med den här versionen kan spåra loggflödena från Azure Functions till Application Insights-tjänsten. Genom att övervaka loggflödena kan du söka efter saknade loggar.
Anpassade programloggar
Som standard skickas anpassade programloggar som du skriver till Functions-värden, som sedan skickar dem till Application Insights under kategorin Worker. I vissa språkstackar kan du dock skicka loggarna direkt till Application Insights, vilket ger dig fullständig kontroll över hur loggar som du skriver genereras. I det här fallet ändras loggningspipelinen från worker > Functions host > Application Insights
till worker > Application Insights
.
I följande tabell sammanfattas de konfigurationsalternativ som är tillgängliga för varje stack:
Språkstacken | Var du kan konfigurera anpassade loggar |
---|---|
.NET (processmodell) | host.json |
.NET (isolerad modell) | Standard (skicka anpassade loggar till Functions-värden): host.json Information om hur du skickar loggar direkt till Application Insights finns i Konfigurera Application Insights i HostBuilder. |
Node.JS | host.json |
Python | host.json |
Java | Standard (skicka anpassade loggar till Functions-värden): host.json Information om hur du skickar loggar direkt till Application Insights finns i Konfigurera Application Insights Java-agenten. |
PowerShell | host.json |
När du konfigurerar att anpassade programloggar ska skickas direkt genererar värden dem inte längre och host.json
styr inte längre deras beteende. På samma sätt gäller de alternativ som exponeras av varje stack endast för anpassade loggar, och de ändrar inte beteendet för de andra körningsloggarna som beskrivs i den här artikeln. I det här fallet kan du behöva göra ändringar i båda konfigurationerna för att kontrollera beteendet för alla loggar.
Loggar saknas eller är partiella
Application Insights samlar in logg-, prestanda- och feldata. Samplingskonfiguration används för att minska mängden telemetri. Samplingsfunktionen är aktiverad som standard med inställningarna som visas i följande host.json exempel. Undantagna typer samplas inte.
{
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 20,
"excludedTypes": "Request;Exception"
}
}
}
}
Om du ser några delvis saknade loggar kan detta inträffa på grund av sampling. För att fastställa den faktiska samplingsfrekvensen använder du en Analytics-fråga som använder det tidsintervall som krävs som visas i följande kodfragment. Om du observerar att TelemetrySavedPercentage
för alla samplingstyper är mindre än 100 samplas den typen av telemetri.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > todatetime("mm/dd/yyyy hh:mm:ss") and timestamp < todatetime("mm/dd/yyyy hh:mm:ss")
| summarize TelemetrySavedPercentage = 100/avg(itemCount), TelemetryDroppedPercentage = 100-100/avg(itemCount) by bin(timestamp, 1d), itemType
| sort by timestamp asc
Mer information finns i Datainsamling, kvarhållning och lagring i Application Insights.
Kontrollera volym och utförlighet för loggar
Du kan öka eller utelämna loggarna som skrivs. För att göra detta kan du använda en kombination av loggnivå och kategorier som konfigurerats i host.json.
Azure Functions-loggaren innehåller en kategori för varje logg. Kategorin anger vilken del av körningskoden eller funktionskoden som genererade loggen. Till exempel:
- Och
Host.Results
Function.<YOUR_FUNCTION_NAME>
är några av de tillgängliga kategorierna. - En loggnivå tilldelas till varje logg. Värdet anger relativ betydelse, till exempel
Warning
ellerInformation
.
Mer information finns i de andra tillgängliga kategorierna och loggnivåerna.
Du kan konfigurera hur programmet ska skriva loggarna genom att följa exempelkodfragmentet:
{
"version": "2.0",
"logging": {
"logLevel": {
"default": "Information", // catch all default, with modifications below for individual categories.
"Function": "Warning", // Warning level from all Functions (except the ones configured below).
"Host.Aggregator": "Trace", // Log all traces in the 'customMetrics' table of (and shown on Metrics/Alerts blade in AI) - use either this or Host.Results
"Host.Results": "Error", // Error and Critical requests are only logged in the 'requests' table of the AI (and shown on Monitor Functions blade in Functions App) - use either this or Host.Aggregator
"Function.Function1": "Information", //Information level logs from Function 1, logged in 'traces', 'dependencies' and 'customMetrics' tables of AI
"Function.Function2.User": "Information" //user code logs from Function2, logged in 'traces' table of AI
},
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 1,
"excludedTypes": "Exception"
}
}
}
}
Om du vill konfigurera dessa värden på appinställningsnivå (för att undvika omdistribution på host.json ändringar) åsidosätter du specifika host.json värden genom att skapa ett motsvarande värde som en programinställning. Mer information finns i Åsidosätta värden för host.json.
Fler exempel på hur du undertrycker loggar finns i functions-log-suppression.
Den integrerade funktionsappen för virtuellt nätverk genererar inga loggar
Om en funktionsapp är integrerad med ett virtuellt nätverk måste du öppna port 443 för utgående trafik i serverbrandväggen så att Application Insights SDK eller Application Insights Agent kan skicka data till portalen för följande URL:er:
- dc.applicationinsights.azure.com
- dc.applicationinsights.microsoft.com
- dc.services.visualstudio.com
- * .in.applicationinsights.azure.com
Mer information finns i IP-adresser som används av Azure Monitor.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.