Uaktualnianie z zestawu JAVA 2.x SDK usługi Application Insights
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
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.6.2.jar
Jeśli używasz agenta języka Java usługi Application Insights 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 parametry połączenia usługi Application Insights
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 pisania elementu TelemetryInitializer
, można rozwiązać w języku Java 3.x usługi Application Insights, 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 języku Java 3.x usługi Application Insights, konfigurując przesłonięcia próbkowania.
Wiele aplikacji w jednej maszynie wirtualnej JVM
Ten przypadek użycia jest obsługiwany w środowisku Java 3.x usługi Application Insights przy użyciu zastąpień nazw ról w chmurze (wersja zapoznawcza) i/lub przesłonięć parametrów połączenia (wersja zapoznawcza).
Nazwy operacji
W przypadku zestawu SDK Java 2.x usługi Application Insights nazwy operacji zawierały pełną ścieżkę, na przykład:
Nazwy operacji w środowisku Java 3.x usługi Application Insights zmieniły się, aby ogólnie zapewnić lepszy zagregowany widok w portalu usługi Application Insights U/X, na przykład:
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):
Pierwszy procesor telemetrii jest procesorem atrybutów (ma typ
attribute
), co oznacza, że ma zastosowanie do wszystkich danych telemetrycznych, które mają atrybuty (obecnierequests
idependencies
, ale wkrótce takżetraces
).Pasuje do dowolnej telemetrii, która ma atrybuty o nazwach
http.request.method
iurl.path
.Następnie wyodrębnia
url.path
atrybut do nowego atrybutu o nazwietempName
.Drugi procesor telemetrii jest procesorem span (ma typ
span
), co oznacza, że ma zastosowanie dorequests
idependencies
.Pasuje do dowolnego zakresu, który ma atrybut o nazwie
tempPath
.Następnie aktualizuje nazwę zakresu z atrybutu
tempPath
.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" }
]
}
]
}
}
Przykład projektu
Ten projekt zestawu JAVA 2.x SDK jest migrowany do nowego projektu przy użyciu agenta Java 3.x.