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ältet skriver 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.
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.