Application Insights Java 2.x SDK からのアップグレード
通常、3.x にアップグレードするときにコードの変更はありません。 3.x SDK の依存関係は、2.x SDK 依存関係の no-op API バージョンです。 ただし、3.x Java エージェントと共に使用すると、3.x Java エージェントがそれらの実装を提供します。 その結果、カスタム インストルメンテーションが、3.x Java エージェントによって提供されるすべての新しい自動インストラメンテーションと相関します。
ステップ 1: 依存関係を更新する
2.x の依存関係 | アクション | 解説 |
---|---|---|
applicationinsights-core |
バージョンを 3.4.3 以降に更新します |
|
applicationinsights-web |
バージョンを 3.4.3 以降に更新し、Application Insights Web フィルターを web.xml ファイルから削除します。 |
|
applicationinsights-web-auto |
3.4.3 以降の applicationinsights-web に置き換えます |
|
applicationinsights-logging-log4j1_2 |
依存関係を削除し、Log4j の構成から Application Insights アペンダーを削除します。 | Log4j 1.2 は 3.x Java エージェントで自動的にインストルメント化されるため、もう必要ありません。 |
applicationinsights-logging-log4j2 |
依存関係を削除し、Log4j の構成から Application Insights アペンダーを削除します。 | Log4j 2 は 3.x Java エージェントで自動的にインストルメント化されるため、もう必要ありません。 |
applicationinsights-logging-logback |
依存関係を削除し、Logback の構成から Application Insights アペンダーを削除します。 | Logback は 3.x Java エージェントで自動的にインストルメント化されるため、もう必要ありません。 |
applicationinsights-spring-boot-starter |
3.4.3 以降の applicationinsights-web に置き換えます |
クラウド ロール名の既定値は spring.application.name ではなくなりました。 クラウド ロール名の構成方法については、3.x 構成ドキュメントを参照してください。 |
ステップ 2: 3.x Java エージェントを追加する
3.x Java エージェントを Java 仮想マシン (JVM) コマンド ライン引数に追加します。次に例を示します。
-javaagent:path/to/applicationinsights-agent-3.6.2.jar
Application Insights 2.x Java エージェントを使っている場合は、既存の -javaagent:...
を前の例に置き換えるだけです。
Note
spring-boot-starter を使っていて、それがよい場合は、Java エージェントを使用する代わりの方法があります。 3.x Spring Boot に関する記事をご覧ください。
ステップ 3: Application Insights の接続文字列を構成する
接続文字列の構成に関する記事をご覧ください。
他の注意事項
このドキュメントの残りの部分では、2.x から 3.x にアップグレードするときに発生する可能性のある制限事項と変更点、役立つと思われる回避策について説明します。
TelemetryInitializers
3.x エージェントを使用している場合、2.x SDK TelemetryInitializers は実行されません。
以前に TelemetryInitializer
を記述する必要があったユース ケースの多くは、Application Insights Java 3.x でカスタム ディメンションを構成することで解決できます。
または、継承された属性を使います。
TelemetryProcessors
3.x エージェントを使用している場合、2.x SDK TelemetryProcessors は実行されません。
以前に TelemetryProcessor
を記述する必要があったユース ケースの多くは、Application Insights Java 3.x でサンプリング オーバーライドを構成することで解決できます。
1 つの JVM 内の複数のアプリケーション
このユース ケースは、クラウド ロール名のオーバーライド (プレビュー) または接続文字列のオーバーライド (プレビュー) を使用して、Application Insights Java 3.x でサポートされています。
操作名
Application Insights Java 2.x SDK では、場合によっては、操作名に完全なパスが含まれていました。次に例を示します。
Application Insights Java 3.x の操作名は、全般的に Application Insights ポータル U/X でより適切に集計されたビューを提供するために変更されました。次に例を示します。
ただし、一部のアプリケーションでは、以前の操作名で提供されていた U/X の集計ビューの方がお好みの場合もあるでしょう。 この場合、3.x の テレメトリ プロセッサ (プレビュー) 機能を使用して、以前の動作をレプリケートできます。
次のスニペットは、前の動作を、3 つのテレメトリ プロセッサを組み合わせてレプリケートするよう構成しています。 テレメトリ プロセッサにより、次の操作が順番に実行されます。
最初のテレメトリ プロセッサは、属性プロセッサ (種類は
attribute
) であり、属性 (現在はrequests
とdependencies
ですが、近日中にtraces
になります) を持つすべてのテレメトリに適用されることを意味します。これは、
http.request.method
およびurl.path
という名前の属性を持つすべてのテレメトリと一致します。次に、
url.path
属性を、tempName
という名前の新しい属性に抽出します。2 番目のテレメトリ プロセッサは、スパン プロセッサ (種類は
span
) であり、requests
とdependencies
に適用されます。これは、
tempPath
という名前の属性を持つすべてのスパンと一致します。次に、
tempPath
属性からスパン名を更新します。最後のテレメトリ プロセッサは、最初のテレメトリ プロセッサと同じ種類の属性プロセッサです。
これは、
tempPath
という名前の属性を持つすべてのテレメトリと一致します。次に、
tempPath
という属性が削除され、その属性はカスタム ディメンションとして表示されます。
{
"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" }
]
}
]
}
}