Felsöka Azure Application Insights i ett Java-webbprojekt
Den här artikeln innehåller felsökningslösningar på vanliga problem i ett Q&A-format för Application Insights Java 2.x.
Varning
Det här dokumentet gäller För Application Insights Java 2.x, vilket inte längre rekommenderas.
Dokumentation för den senaste versionen finns på Application Insights Java 3.x.
Frågor om eller problem med Azure Application Insights i Java? Här följer några tips.
Build-fel
När jag lägger till Application Insights SDK via Maven eller Gradle i Eclipse eller Intellij Idea får jag verifieringsfel för bygg- eller kontrollsumma
Om beroendeversionselementet använder ett mönster som innehåller jokertecken (till exempel <version>[2.0,)</version>
i Maven eller version:'2.+'
Gradle) kan du prova att ange en specifik version i stället, till exempel 2.6.4
.<>
Inga data
Jag har lagt till Application Insights och kört min app, men jag har aldrig sett data i portalen
Vänta ungefär en minut och välj sedan Uppdatera. Diagrammen uppdateras regelbundet, men du kan också uppdatera manuellt. Uppdateringsintervallet beror på diagrammets tidsintervall.
Kontrollera att du har definierat en instrumentationsnyckel i ApplicationInsights.xml -filen (i resursmappen i projektet) eller konfigurerat en som en miljövariabel.
Kontrollera att det inte finns någon
<DisableTelemetry>true</DisableTelemetry>
nod i XML-filen.Om det behövs öppnar du TCP-portarna 80 och 443 i brandväggen för utgående trafik till
dc.services.visualstudio.com
. Se den fullständiga listan över brandväggsfel.I Microsoft Azure-startkortet tittar du på tjänststatuskartan. Om det finns några aviseringsindikationer väntar du tills de har återvänt till OK och stänger och öppnar sedan Application Insights-programbladet igen.
Aktivera loggning genom att lägga till ett< SDKLogger-element> under rotnoden i filen ApplicationInsights.xml (i resursmappen i projektet). Sök sedan efter poster som är förinställda för
AI: INFO/WARN/ERROR
misstänkta loggar.Kontrollera att rätt ApplicationInsights.xml fil har lästs in av Java SDK. Kontrollera konsolens utdatameddelanden för instruktionen "Konfigurationsfilen har hittats".
Om konfigurationsfilen inte hittas kontrollerar du utdatameddelandena för att se var konfigurationsfilen söks efter. Kontrollera att ApplicationInsights.xml finns på någon av dessa sökplatser. Som tumregel kan du placera konfigurationsfilen nära Application Insights SDK JARs. I Tomcat skulle mappen till exempel vara WEB-INF/-klasser. Under utvecklingen kan du placera ApplicationInsights.xml i resursmappen för ditt webbprojekt.
På sidan Med GitHub-problem finns kända problem med SDK:t.
Se till att använda samma version av Application Insights core, web, agent och loggningsappenders för att undvika problem med versionskonflikter.
Kommentar
Den här artikeln uppdaterades nyligen för att använda termen Azure Monitor-loggar i stället för Log Analytics. Loggdata lagras fortfarande på en Log Analytics-arbetsyta och samlas fortfarande in och analyseras av samma Log Analytics-tjänst. Vi uppdaterar terminologin för att bättre återspegla loggarnas roll i Azure Monitor. Mer information finns i Terminologiändringar i Azure Monitor.
Jag brukade se data, men det har stoppats
Har du nått din månatliga kvot för datapunkter? Öppna Inställningar>Kvot och prissättning för att ta reda på det. I så fall kan du uppgradera ditt abonnemang eller betala för mer kapacitet. Mer information finns i prissättningsschemat.
Har du nyligen uppgraderat din SDK? Kontrollera att endast Unika SDK-jars finns i projektkatalogen. Det bör inte finnas två olika versioner av SDK:t.
Tittar du på rätt AI-resurs? Se till att matcha iKey för ditt program med den resurs där du förväntar dig telemetri. De bör vara identiska.
Jag ser inte alla data jag förväntar mig
Öppna sidan Användning och uppskattad kostnad och kontrollera om samplingen är i drift. (100 % överföring innebär att samplingen inte är i drift.) Application Insights-tjänsten kan ställas in på att endast acceptera en bråkdel av telemetrin som kommer från din app. Den inställningen hjälper dig att hålla dig inom din månatliga telemetrikvot.
Har du aktiverat SDK-sampling? Om ja, skulle data samplas med den hastighet som anges för alla tillämpliga typer.
Kör du en äldre version av Java SDK? Från och med version 2.0.1 har vi infört en mekanism för feltolerans för att hantera tillfälliga nätverks- och serverdelsfel samt datapersistence på lokala enheter.
Kontrollera om överdriven telemetri har orsakat begränsning. Om du aktiverar INFO-loggning visas loggmeddelandet "Appen är begränsad". Vår nuvarande gräns är cirka 32 000 telemetriobjekt per sekund.
Java-agenten kan inte samla in beroendedata
Har du konfigurerat Java-agenten?
Kontrollera att både Java-agentens jar-fil och den AI-Agent.xml filen finns i samma mapp.
Kontrollera att beroendet som du försöker samla in automatiskt stöds för automatisk insamling. För närvarande stöder vi endast MySQL, Microsoft SQL Server, Oracle DB och Azure Cache for Redis-beroendeinsamling.
Inga användningsdata
Jag ser data om begäranden och svarstider, men ingen sidvy, webbläsare eller användardata
Du har konfigurerat appen för att skicka telemetri från servern. Nu är nästa steg att konfigurera dina webbsidor för att skicka telemetri från webbläsaren.
Om klienten är en app på en telefon eller annan enhet kan du också skicka telemetri därifrån.
Använd samma instrumentationsnyckel för att konfigurera både klient- och servertelemetri. Data visas i samma Application Insights-resurs och du kan korrelera händelser från klienten och servern.
Inaktivera telemetri
Hur inaktiverar jag telemetrisamling?
Följ någon av dessa lösningar:
Inaktivera samling i kod:
TelemetryConfiguration config = TelemetryConfiguration.getActive(); config.setTrackingIsDisabled(true);
Uppdatera ApplicationInsights.xml (i resursmappen i projektet). Lägg till följande XML-element under rotnoden:
<DisableTelemetry>true</DisableTelemetry>
Om du använder XML-metoden måste du starta om programmet när du ändrar värdet.
Ändra målet
Hur ändrar jag vilken Azure-resurs mitt projekt skickar data till?
Om du har lagt till Application Insights i projektet med hjälp av Azure Toolkit for Eclipse högerklickar du på ditt webbprojekt, väljer Azure>Configure Application Insights och ändrar sedan nyckeln.
Om du har konfigurerat instrumentationsnyckeln som en miljövariabel bör du uppdatera värdet för miljövariabeln med den nya iKey.
Annars uppdaterar du nyckeln i ApplicationInsights.xml i resursmappen för projektet.
Felsöka data från SDK
Hur tar jag reda på vad SDK:t gör?
Om du vill få mer information om vad som händer i API:et lägger du till <SDKLogger-elementet> i rotnoden i ApplicationInsights.xml konfigurationsfilen.
ApplicationInsights.xml
I elementet <SDKLogger> kan du också instruera loggaren att skicka utdata till en fil:
<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
<Level>TRACE</Level>
<UniquePrefix>AI</UniquePrefix>
<BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>
Spring Boot-start
Om du vill aktivera SDK-loggning med spring boot-appar med Application Insights Spring Boot-startprogrammet lägger du till följande rader i filen application.properties :
azure.application-insights.logger.type=file
azure.application-insights.logger.base-folder-path=C:/agent/AISDK
azure.application-insights.logger.level=trace
Du kan också skriva ut till standardfelströmmen:
azure.application-insights.logger.type=console
azure.application-insights.logger.level=trace
Java-agenten
Om du vill aktivera JVM-agentloggning uppdaterar du filen AI-Agent.xml:
<AgentLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
<Level>TRACE</Level>
<UniquePrefix>AI</UniquePrefix>
<BaseFolderPath>C:/agent/AIAGENT</BaseFolderPath>
</AgentLogger>
Egenskaper för Java-kommandorad
Sedan version 2.4.0
Om du vill aktivera loggning med hjälp av kommandoradsalternativ i stället för att ändra konfigurationsfiler kör du följande kommando:
java -Dapplicationinsights.logger.file.level=trace \
-Dapplicationinsights.logger.file.uniquePrefix=AI \
-Dapplicationinsights.logger.baseFolderPath="C:/my/log/dir" \
-jar MyApp.jar
Eller kör följande kommando för att skriva ut till standardfelströmmen:
java -Dapplicationinsights.logger.console.level=trace -jar MyApp.jar
Startskärmen i Azure
Jag tittar på Azure Portal. Säger kartan mig något om min app?
Nej, det visar hälsotillståndet för Azure-servrar runt om i världen.
Hur gör jag för att hitta data om min app från Starttavlan för Azure (startskärmen)?
Förutsatt att du konfigurerar appen för Application Insights väljer du Bläddra i>Application Insights och väljer sedan den appresurs som du skapade för din app. Fäst din app på starttavlan för att komma dit snabbare i framtiden.
Intranätservrar
Kan jag övervaka en server på mitt intranät?
Ja, förutsatt att servern kan skicka telemetri till Application Insights-portalen via det offentliga Internet.
Du kan behöva öppna vissa utgående portar i serverns brandvägg så att SDK:et kan skicka data till portalen.
Datakvarhållning
Hur länge bevaras data i portalen? Är det säkert?
Se Datakvarhållning och sekretess.
Felsökningsloggning
Application Insights använder org.apache.http
. Det här namnområdet flyttas i Application Insights-kärnburkar under namnområdet com.microsoft.applicationinsights.core.dependencies.http
. Med den här omlokaliseringen kan Application Insights hantera scenarier där olika versioner av samma org.apache.http
finns i en kodbas.
Kommentar
Om du aktiverar DEBUG
loggning på -nivå för alla namnområden i appen kommer den att respekteras av alla körmoduler (inklusive org.apache.http
omdöpt till com.microsoft.applicationinsights.core.dependencies.http
). Application Insights kan inte tillämpa filtrering för dessa anrop eftersom logganropet görs av Apache-biblioteket. DEBUG
-nivåloggning ger en betydande mängd loggdata, och det rekommenderas inte för liveproduktionsinstanser.
Nästa steg
Jag har konfigurerat Application Insights för min Java-serverapp. Vad mer kan jag göra?
Få hjälp
Ansvarsfriskrivning för information från tredje part
De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.
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.