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.

Försiktighet

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 i Application Insights Java 3.x.

Frågor om eller problem med Azure Application Insights i Java? Här är 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 valideringsfel för kompilering eller kontrollsumma

Om beroendeversionselementet<> använder ett mönster som innehåller jokertecken (till exempel <version>[2.0,)</version> i Maven eller version:'2.+' i 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 varningsindikationer väntar du tills de har återgåt 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 filenApplicationInsights.xml (i resursmappen i projektet). Leta sedan efter poster som föregås av 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 genomsöks. Kontrollera att ApplicationInsights.xml finns på någon av dessa sökplatser. Som tumregel kan du placera konfigurationsfilen nära Application Insights SDK-JAR:erna. I Tomcat skulle mappen till exempel vara WEB-INF/classes. Under utvecklingen kan du placera ApplicationInsights.xml i resursmappen för ditt webbprojekt.

  • sidan med GitHub-problem hittar du kända problem med SDK:t.

  • Se till att använda samma version av Application Insights core, web, agent och loggning appenders för att undvika eventuella problem med versionskonflikter.

Obs!

Den här artikeln har nyligen uppdaterats 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 prisschemat.

  • Har du nyligen uppgraderat din SDK? Kontrollera att endast unika SDK-jar-filer 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 borde vara desamma.

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 för att endast acceptera en bråkdel av telemetrin som kommer från din app. Den här inställningen hjälper dig att hålla dig inom din månatliga kvot för telemetri.

  • Har du SDK-sampling aktiverat? 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 feltoleransmekanism 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 Jar-filen för Java-agenten och denAI-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 har vi endast stöd för beroendeinsamlingen MySQL, Microsoft SQL Server, Oracle DB och Azure Cache for Redis.

Inga användningsdata

Jag ser data om begäranden och svarstider, men ingen sidvisning, webbläsare eller användardata

Du har konfigurerat appen så att den skickar 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?

  • Hämta instrumentationsnyckeln för den nya resursen.

  • 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 måste 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 ha mer information om vad som händer i API:et lägger du till <SDKLogger-elementet> i rotnoden iApplicationInsights.xml-konfigurationsfilen.

ApplicationInsights.xml

I elementet< SDKLogger> kan du också instruera loggaren att mata ut 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-startprogrammet

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-agent

Om du vill aktivera JVM-agentloggning uppdaterar du AI-Agent.xml-filen:

<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 något om min app?

Nej, den 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 Azure-startkortet (startskärmen)?

Förutsatt att du konfigurerar din app 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 behålls 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. Den här omlokaliseringen gör det möjligt för Application Insights att hantera scenarier där olika versioner av samma org.apache.http finns i en kodbas.

Obs!

Om du aktiverar DEBUGloggning på -nivå för alla namnområden i appen respekteras den 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.