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ïn instrumenteerd 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ïntenseerd in de 3.x Java-agent.
applicationinsights-logging-logback Verwijder de afhankelijkheid en verwijder de Application Insights-toevoegfunctie uit uw Logback-configuratie. Niet meer nodig omdat Logback automatisch wordt geïntenseerd 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.5.2.jar

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

Notitie

Als u spring-boot-starter gebruikt en als u wilt, 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 notities

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.

TelemetryInitializers

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.

TelemetryProcessors

2.x SDK TelemetryProcessors worden niet uitgevoerd wanneer u de 3.x-agent gebruikt. Veel van de gebruiksvoorbeelden die eerder vereist waren om een TelemetryProcessor te schrijven, kunnen worden opgelost in Application Insights Java 3.x door steekproeven 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 Verbinding maken iontekenreeksoverschrijvingen (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 geeft u echter de voorkeur aan de geaggregeerde weergave in de U/X die is opgegeven door de vorige bewerkingsnamen. 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.

    Vervolgens wordt het kenmerk geëxtraheerd url.path in een nieuw kenmerk met de naam tempName.

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

    Deze komt overeen met een bereik met een kenmerk 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" }
        ]
      }
    ]
  }
}