Delen via


Upgrade uitvoeren van Application Insights Java 2.x SDK

Er zijn doorgaans geen codewijzigingen bij het upgraden naar 3.x. De 3.x SDK-afhankelijkheden zijn geen API-versies van de 2.x SDK-afhankelijkheden. Wanneer de Java-agent 3.x wordt gebruikt, biedt de 3.x Java-agent echter de implementatie ervan. Als gevolg hiervan wordt uw aangepaste instrumentatie gecorreleerd met alle nieuwe automatische instrumentatie die wordt geleverd door de 3.x Java-agent.

Stap 1: Afhankelijkheden bijwerken

2.x-afhankelijkheid Actie Opmerkingen
applicationinsights-core De versie bijwerken naar 3.4.3 of hoger
applicationinsights-web Werk de versie bij naar 3.4.3 of hoger en verwijder het Application Insights-webfilter voor uw web.xml bestand.
applicationinsights-web-auto Vervangen door 3.4.3 of hoger van applicationinsights-web
applicationinsights-logging-log4j1_2 Verwijder de afhankelijkheid en verwijder de Application Insights-toevoegfunctie uit uw Log4j-configuratie. Niet meer nodig omdat Log4j 1.2 automatisch wordt geïnstrumenteerd in de 3.x Java-agent.
applicationinsights-logging-log4j2 Verwijder de afhankelijkheid en verwijder de Application Insights-toevoegfunctie uit uw Log4j-configuratie. Niet meer nodig omdat Log4j 2 automatisch wordt geïnstrumenteerd in de Java-agent van versie 3.x.
applicationinsights-logging-logback Verwijder de afhankelijkheid en verwijder de Application Insights-toevoegfunctie uit uw Logback-configuratie. Niet meer nodig omdat Logback geautomatiseerd wordt geïnstrumenteerd in de 3.x Java-agent.
applicationinsights-spring-boot-starter Vervangen door 3.4.3 of hoger van applicationinsights-web De naam van de cloudrol wordt niet meer standaard ingesteld op spring.application.name. Zie de configuratiedocumenten voor 3.x voor meer informatie over het configureren van de naam van de cloudrol.

Stap 2: De 3.x Java-agent toevoegen

Voeg de 3.x Java-agent toe aan uw JVM-opdrachtregelargumenten (Java Virtual Machine), bijvoorbeeld:

-javaagent:path/to/applicationinsights-agent-3.7.5.jar

Als u de Application Insights 2.x Java-agent gebruikt, vervangt u uw bestaande -javaagent:... door het vorige voorbeeld.

Notitie

Als u de Spring Boot Starter gebruikt en als u dat liever heeft, is er een alternatief voor het gebruik van de Java-agent. Zie 3.x Spring Boot.

Stap 3: Uw Application Insights-verbindingsreeks configureren

Zie het configureren van de verbindingsreeks.

Overige aantekeningen

In de rest van dit document worden beperkingen en wijzigingen beschreven die kunnen optreden bij het upgraden van 2.x naar 3.x, en enkele tijdelijke oplossingen die u mogelijk nuttig vindt.

Telemetrie-initialisatoren

2.x SDK TelemetryInitializers worden niet uitgevoerd wanneer u de 3.x-agent gebruikt. Veel van de gebruiksvoorbeelden die eerder vereist waren om een TelemetryInitializer te schrijven, kunnen worden opgelost in Application Insights Java 3.x door aangepaste dimensies te configureren. Of met overgenomen kenmerken.

Telemetrieverwerkers

2.x SDK TelemetryProcessors worden niet uitgevoerd wanneer u de 3.x-agent gebruikt. Veel van de gebruiksvoorbeelden die eerder vereisten dat er een TelemetryProcessor werd geschreven, kunnen in Application Insights Java 3.x worden opgelost door sample-overschrijvingen te configureren.

Meerdere toepassingen in één JVM

Deze use case wordt ondersteund in Application Insights Java 3.x met behulp van overschrijvingen van cloudrollen (preview) en/of overschrijvingen van verbindingsreeksen (preview).

Bewerkingsnamen

In de Application Insights Java 2.x SDK bevatten in sommige gevallen de namen van de bewerkingen het volledige pad, bijvoorbeeld:

Schermopname van bewerkingsnamen met volledig pad

Bewerkingsnamen in Application Insights Java 3.x zijn gewijzigd om over het algemeen een betere geaggregeerde weergave te bieden in de Application Insights-portal-U/X, bijvoorbeeld:

Schermopname van bewerkingsnamen die zijn geparameteriseerd

Voor sommige toepassingen geef je mogelijk nog steeds de voorkeur aan de samengevoegde weergave in de U/X, zoals die eerder was gepresenteerd door de vorige operationele namen. In dit geval kunt u de functie telemetrieprocessors (preview) in 3.x gebruiken om het vorige gedrag te repliceren.

Het volgende codefragment configureert drie telemetrieprocessors die combineren om het vorige gedrag te repliceren. De telemetrieprocessors voeren de volgende acties uit (in volgorde):

  1. De eerste telemetrieprocessor is een kenmerkprocessor (heeft type attribute), wat betekent dat het van toepassing is op alle telemetrie die kenmerken heeft (momenteel requests en dependencies, maar binnenkort ook traces).

    Het komt overeen met alle telemetriegegevens met kenmerken met de naam http.request.method en url.path.

    Daarna extraheert het het kenmerk url.path naar een nieuw kenmerk genaamd tempName.

  2. De tweede telemetrieprocessor is een spanprocessor (heeft type span), wat betekent dat deze van toepassing is op requests en dependencies.

    Het komt overeen met elk span dat een attribuut heeft met de naam tempPath.

    Vervolgens wordt de spannaam van het kenmerk tempPathbijgewerkt.

  3. De laatste telemetrieprocessor is een kenmerkprocessor, hetzelfde type als de eerste telemetrieprocessor.

    Deze komt overeen met alle telemetriegegevens met een kenmerk met de naam tempPath.

    Vervolgens wordt het kenmerk met de naam tempPathverwijderd en wordt het kenmerk weergegeven als een aangepaste dimensie.

{
  "preview": {
    "processors": [
      {
        "type": "attribute",
        "include": {
          "matchType": "strict",
          "attributes": [
            { "key": "http.request.method" },
            { "key": "url.path" }
          ]
        },
        "actions": [
          {
            "key": "url.path",
            "pattern": "https?://[^/]+(?<tempPath>/[^?]*)",
            "action": "extract"
          }
        ]
      },
      {
        "type": "span",
        "include": {
          "matchType": "strict",
          "attributes": [
            { "key": "tempPath" }
          ]
        },
        "name": {
          "fromAttributes": [ "http.request.method", "tempPath" ],
          "separator": " "
        }
      },
      {
        "type": "attribute",
        "include": {
          "matchType": "strict",
          "attributes": [
            { "key": "tempPath" }
          ]
        },
        "actions": [
          { "key": "tempPath", "action": "delete" }
        ]
      }
    ]
  }
}

Steekproeven en ontbrekende logboeken

Frequentie-beperkte steekproeven zijn standaard ingeschakeld vanaf agent-versie 3.4, wat onverwacht ontbrekende logs kan veroorzaken.

Projectvoorbeeld

Dit Java 2.x SDK-project wordt gemigreerd naar een nieuw project met behulp van de 3.x Java-agent.