Uaktualnianie z zestawu SDK Szczegółowe informacje Java 2.x

Zazwyczaj podczas uaktualniania do wersji 3.x nie ma żadnych zmian w kodzie. Zależności zestawu SDK 3.x to wersje interfejsu API bez operacji zależności zestawu SDK 2.x. Jednak w przypadku użycia z agentem 3.x języka Java agent 3.x udostępnia ich implementację. W związku z tym instrumentacja niestandardowa jest skorelowana ze wszystkimi nowymi autoinstrumentacjami dostarczonymi przez agenta Java 3.x.

Krok 1. Aktualizowanie zależności

Zależność 2.x Akcja Uwagi
applicationinsights-core Aktualizowanie wersji do 3.4.3 lub nowszej
applicationinsights-web Zaktualizuj wersję do 3.4.3 lub nowszej i usuń filtr aplikacji Szczegółowe informacje sieci Web plikuweb.xml.
applicationinsights-web-auto Zastąp ciąg ciągiem 3.4.3 lub nowszym applicationinsights-web
applicationinsights-logging-log4j1_2 Usuń zależność i usuń dodatek Application Szczegółowe informacje z konfiguracji log4j. Nie są już potrzebne, ponieważ usługa Log4j 1.2 jest automatycznie uruchamiana w agencie java 3.x.
applicationinsights-logging-log4j2 Usuń zależność i usuń dodatek Application Szczegółowe informacje z konfiguracji log4j. Nie jest już potrzebne, ponieważ usługa Log4j 2 jest automatycznie uruchamiana w agencie java 3.x.
applicationinsights-logging-logback Usuń zależność i usuń dodatek Application Szczegółowe informacje z konfiguracji logback. Nie są już potrzebne, ponieważ funkcja Logback jest automatycznie uruchamiana w agencie Java 3.x.
applicationinsights-spring-boot-starter Zastąp ciąg ciągiem 3.4.3 lub nowszym applicationinsights-web Nazwa roli chmury nie jest już domyślnie ustawiona na spring.application.name. Aby dowiedzieć się, jak skonfigurować nazwę roli w chmurze, zobacz dokumentację konfiguracji 3.x.

Krok 2. Dodawanie agenta Java 3.x

Dodaj agenta java 3.x do zestawu args wiersza polecenia java virtual machine (JVM), na przykład:

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

Jeśli używasz agenta java application Szczegółowe informacje 2.x, po prostu zastąp istniejący -javaagent:... poprzednim przykładem.

Uwaga

Jeśli używasz szablonu spring-boot-starter i jeśli wolisz, istnieje alternatywa dla korzystania z agenta Java. Zobacz 3.x Spring Boot.

Krok 3. Konfigurowanie Szczegółowe informacje parametry połączenia aplikacji

Zobacz konfigurowanie parametry połączenia.

Inne notatki

W pozostałej części tego dokumentu opisano ograniczenia i zmiany, które mogą wystąpić podczas uaktualniania z wersji 2.x do 3.x, a także niektóre obejścia, które mogą okazać się przydatne.

TelemetriaInitializers

2.x Zestaw SDK TelemetryInitializers nie jest uruchamiany podczas korzystania z agenta 3.x. Wiele przypadków użycia, które wcześniej wymagały zapisuTelemetryInitializer, można rozwiązać w aplikacji Szczegółowe informacje Java 3.x, konfigurując wymiary niestandardowe. Lub przy użyciu atrybutów dziedziczynych.

Procesory telemetrii

2.x Zestaw SDK TelemetryProcessors nie jest uruchamiany podczas korzystania z agenta 3.x. Wiele przypadków użycia, które wcześniej wymagały zapisu, TelemetryProcessor można rozwiązać w aplikacji Szczegółowe informacje Java 3.x przez skonfigurowanie przesłonięć próbkowania.

Wiele aplikacji w jednej maszynie wirtualnej JVM

Ten przypadek użycia jest obsługiwany w środowisku Application Szczegółowe informacje Java 3.x przy użyciu przesłonięć nazw ról w chmurze (wersja zapoznawcza) i/lub przesłonięcia ciągu Połączenie ion (wersja zapoznawcza).

Nazwy operacji

W niektórych przypadkach w zestawie SDK aplikacji Szczegółowe informacje Java 2.x nazwy operacji zawierały pełną ścieżkę, na przykład:

Zrzut ekranu przedstawiający nazwy operacji z pełną ścieżką

Nazwy operacji w środowisku Application Szczegółowe informacje Java 3.x zmieniły się, aby ogólnie zapewnić lepszy zagregowany widok w aplikacji Szczegółowe informacje Portal U/X, na przykład:

Zrzut ekranu przedstawiający sparametryzowane nazwy operacji

Jednak w przypadku niektórych aplikacji nadal możesz preferować zagregowany widok w U/X, który został dostarczony przez poprzednie nazwy operacji. W takim przypadku można użyć funkcji procesorów telemetrycznych (wersja zapoznawcza) w wersji 3.x, aby zreplikować poprzednie zachowanie.

Poniższy fragment kodu konfiguruje trzy procesory telemetryczne, które łączą się w celu replikowania poprzedniego zachowania. Procesory telemetryczne wykonują następujące akcje (w kolejności):

  1. Pierwszy procesor telemetrii jest procesorem atrybutów (ma typ attribute), co oznacza, że ma zastosowanie do wszystkich danych telemetrycznych, które mają atrybuty (obecnie requests i dependencies, ale wkrótce także traces).

    Pasuje do dowolnej telemetrii, która ma atrybuty o nazwach http.request.method i url.path.

    Następnie wyodrębnia url.path atrybut do nowego atrybutu o nazwie tempName.

  2. Drugi procesor telemetrii jest procesorem span (ma typ span), co oznacza, że ma zastosowanie do requests i dependencies.

    Pasuje do dowolnego zakresu, który ma atrybut o nazwie tempPath.

    Następnie aktualizuje nazwę zakresu z atrybutu tempPath.

  3. Ostatni procesor telemetrii jest procesorem atrybutów, takim samym typem jak pierwszy procesor telemetrii.

    Pasuje do wszystkich danych telemetrycznych, które mają atrybut o nazwie tempPath.

    Następnie usuwa atrybut o nazwie tempPath, a atrybut jest wyświetlany jako wymiar niestandardowy.

{
  "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" }
        ]
      }
    ]
  }
}