Java Web プロジェクトでの Azure アプリlication Insights のトラブルシューティング
この記事では、Application Insights Java 2.x の Q&A 形式の一般的な問題のトラブルシューティング ソリューションについて説明します。
注意事項
このドキュメントは、推奨されなくなった Application Insights Java 2.x に適用されます。
最新バージョン用のドキュメントについては Application Insights Java 3.x に関するページをご覧ください。
Java 用 Azure Application Insights について疑問または問題はありませんか。 ここでは、いくつかのヒントを紹介します。
ビルド エラー
Eclipse または Intellij Idea で、Maven または Gradle を使用して Application Insights SDK を追加すると、ビルドまたはチェックサムの検証エラーが発生します
依存関係 <version> 要素がワイルドカード文字を含むパターンを使用している場合 (Maven の <version>[2.0,)</version>
や Gradle の version:'2.+'
など)、 2.6.4
など、代わりに特定のバージョンを指定してみてください。
データなし
Application Insights を正常に追加してアプリを実行しましたが、ポータルでデータを見たことがない
約 1 分待ってから、 Refresh を選択します。 グラフは周期的に自動で更新されますが、手動で更新することもできます。 更新間隔は、グラフの時間範囲によって異なります。
ApplicationInsights.xml ファイル (プロジェクトのリソース フォルダー内) にインストルメンテーション キーが定義されているか、環境変数として構成されていることを確認します。
XML ファイルに
<DisableTelemetry>true</DisableTelemetry>
ノードがないことを確認します。必要に応じて、ファイアウォールで TCP ポート 80 と 443 を開き、
dc.services.visualstudio.com
への送信トラフィックを行います。 ファイアウォールの例外の 完全な一覧を参照してください。Microsoft Azure のスタート ボードで、サービス状態マップをご確認ください。 アラートの表示がある場合は、 OK に戻るまで待ってから、Application Insights アプリケーション ブレードを閉じて再度開きます。
ログ記録を有効にするには<SDKLogger>要素をApplicationInsights.xmlファイルのルート ノード (プロジェクトの resources フォルダー内) に追加します。 次に、疑わしいログが
AI: INFO/WARN/ERROR
で始まるエントリを確認します。Java SDK によって正しい ApplicationInsights.xml ファイルが正常に読み込まれていることを確認します。 コンソールの出力メッセージで、"構成ファイルが正常に見つかりました" ステートメントを確認します。
構成ファイルが見つからない場合は、出力メッセージを調べて、構成ファイルが検索されている場所を確認します。 ApplicationInsights.xmlが検索場所のいずれかに配置されていることを確認します。 通例、構成ファイルは Application Insights SDK の JAR ファイルの近くに見つかります。 たとえば、Tomcat では、フォルダーは WEB-INF/classes になります。 開発中は、web プロジェクトの resources フォルダーに ApplicationInsights.xml を配置できます。
SDK に関する既知の問題については、 GitHub の問題に関するページ を確認してください。
バージョンの競合の問題を回避するには、必ず同じバージョンの Application Insights コア、Web、エージェント、およびログ アペンダーを使用してください。
Note
この記事は最近、Log Analytics の代わりに Azure Monitor ログ という用語を使用するように更新されました。 ログ データは引き続き Log Analytics ワークスペースに格納され、同じ Log Analytics サービスによって収集および分析されます。 Azure Monitor でのログの役割をより適切に反映するために、用語を更新しています。 詳しくは、Azure Monitor の用語の変更に関するページをご覧ください。
以前はデータを表示しましたが、停止しています
データ ポイントの月間クォータに達していませんか? Settings>Quota と Pricing を開いて調べる。その場合は、プランをアップグレードするか、容量を増やして支払うことができます。 詳細については、 予測スキームを参照してください。
最近 SDK をアップグレードしましたか? プロジェクト ディレクトリ内に Unique SDK jar のみが存在することを確認します。 2 つの異なるバージョンの SDK が存在してはいけません。
正しい AI リソースを見ていますか? アプリケーションの iKey を、テレメトリを想定しているリソースと一致するようにしてください。 これらが同じである必要があります。
予期しているデータがすべて表示されません
Usage と推定コスト ページを開き、サンプリングが動作しているかどうかを確認します。 (転送率が 100% の場合、サンプリングは実行されていません)。Application Insights サービスは、アプリから到着したテレメトリの一部だけを受け入れるように設定できます。 この設定は、テレメトリの毎月のクォータ内に留まるのに役立ちます。
SDK サンプリングを有効にしていますか? 有効にしている場合、該当するすべての型について、指定したレートでデータがサンプリングされます。
古いバージョンの Java SDK を実行していませんか? バージョン 2.0.1 以降では、断続的なネットワークとバックエンドの障害に対処するためのフォールト トレランス メカニズムと、ローカル ドライブでのデータ永続化が導入されました。
過剰なテレメトリによって調整が発生したかどうかを確認します。 INFO ログを有効にすると、"アプリが調整されました" というログ メッセージが表示されます。 現在の制限は、1 秒あたり約 32,000 個のテレメトリ項目です。
Java エージェントで依存関係データをキャプチャできない
Java エージェント 構成しましたか?
Java エージェント jar ファイルと AI-Agent.xml ファイルの両方が同じフォルダーに配置されていることを確認します。
自動収集しようとしている依存関係が自動収集でサポートされていることを確認します。 現時点では、MySQL、Microsoft SQL Server、Oracle DB、Azure Cache for Redis の依存関係コレクションのみがサポートされています。
使用状況データがない
要求と応答時間に関するデータは表示されますが、ページ ビュー、ブラウザー、またはユーザー データは表示されません
サーバーからテレメトリを送信するためのアプリ設定は正常に行われています。 次の手順は、Web ブラウザーからテレメトリを送信するように Web ページを設定することです。
または、使用するクライアントが電話やその他のデバイス内のアプリの場合、そのアプリからテレメトリを送信できます。
クライアントおよびサーバー テレメトリの両方の設定に、同じインストルメンテーション キーを使用します。 データは同じ Application Insights リソースに表示され、クライアントとサーバーからのイベントを関連付けることができます。
遠隔測定を無効にする
テレメトリの収集を無効にする方法を教えてください。
次のいずれかのソリューションに従います。
コードでコレクションを無効にする:
TelemetryConfiguration config = TelemetryConfiguration.getActive(); config.setTrackingIsDisabled(true);
ApplicationInsights.xml (プロジェクトの resources フォルダー内) を更新します。 ルート ノードの下に次の XML 要素を追加します。
<DisableTelemetry>true</DisableTelemetry>
XML メソッドを使用する場合は、値を変更するときにアプリケーションを再起動する必要があります。
ターゲットを変更する
自分のプロジェクトがデータを送信する Azure のリソースを変更するにはどうすればいいですか?
Azure Toolkit for Eclipse を使用して Application Insights をプロジェクトに追加した場合は、Web プロジェクトを右クリックし、 Azure>Configure Application Insights を選択して、キーを変更します。
インストルメンテーション キーを環境変数として構成した場合は、必ず新しい iKey で環境変数の値を更新してください。
それ以外の場合は、プロジェクトの resources フォルダー内の ApplicationInsights.xml のキーを更新します。
SDK からのデータをデバッグする
SDK の動作を確認する方法について教えてください。
API の動作に関する詳細を取得するには、ApplicationInsights.xml構成ファイルのルート ノード内に <SDKLogger> 要素を追加します。
ApplicationInsights.xml
<SDKLogger> 要素では、ロガーにファイルへの出力を指示することもできます。
<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
<Level>TRACE</Level>
<UniquePrefix>AI</UniquePrefix>
<BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>
Spring Boot スターター
Application Insights Spring Boot スターターを使用して Spring Boot アプリで SDK ログを有効にするには、 application.properties ファイルに次の行を追加します。
azure.application-insights.logger.type=file
azure.application-insights.logger.base-folder-path=C:/agent/AISDK
azure.application-insights.logger.level=trace
または、標準エラー ストリームに出力することもできます。
azure.application-insights.logger.type=console
azure.application-insights.logger.level=trace
Java エージェント
JVM エージェントのログ記録を有効にするには、AI-Agent.xml ファイル 更新します:
<AgentLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
<Level>TRACE</Level>
<UniquePrefix>AI</UniquePrefix>
<BaseFolderPath>C:/agent/AIAGENT</BaseFolderPath>
</AgentLogger>
Java コマンド ラインのプロパティ
バージョン 2.4.0 以降
構成ファイルを変更する代わりにコマンド ライン オプションを使用してログ記録を有効にするには、次のコマンドを実行します。
java -Dapplicationinsights.logger.file.level=trace \
-Dapplicationinsights.logger.file.uniquePrefix=AI \
-Dapplicationinsights.logger.baseFolderPath="C:/my/log/dir" \
-jar MyApp.jar
または、次のコマンドを実行して、標準エラー ストリームに出力します。
java -Dapplicationinsights.logger.console.level=trace -jar MyApp.jar
Azure のスタート画面
Azure Portal を表示しています。 このマップから、自分のアプリについて何か情報が得られるのでしょうか?
いいえ、そのマップは世界中の Azure サーバーの正常性を表しています。
Azure スタート ボード (ホーム画面) からアプリに関するデータを見操作方法?
Application Insights 用にアプリを設定場合Browse>Application Insights を選択し、アプリ用に作成したアプリ リソースを選択します。 今後より早くアクセスするには、アプリをスタート ボードにピン留めします。
イントラネット サーバー
イントラネット上のサーバーを監視できますか?
はい、お使いのサーバーがパブリック インターネットを介して Application Insights ポータルにテレメトリを送信できるなら、可能です。
SDK からポータルにデータを送信できるように、サーバーのファイアウォールで送信ポートを開く必要がある場合があります。
データの保持
ポータルでのデータ保持期間はどのくらいですか? セキュリティで保護されていますか?
データ保持とプライバシーに関するページを参照してください。
デバッグ ログ
Application Insights では org.apache.http
が使用されます。 この名前空間は、Application Insights コア jar 内の名前空間 com.microsoft.applicationinsights.core.dependencies.http
の下に再配置されます。 この再配置により、Application Insights は、同じ org.apache.http
の異なるバージョンが 1 つのコード ベースに存在するシナリオを処理できます。
Note
アプリ内のすべての名前空間に対して DEBUG
レベルのログ記録を有効にした場合、実行中のすべてのモジュールによって受け入れられます ( org.apache.http
名前が com.microsoft.applicationinsights.core.dependencies.http
に変更されます)。 ログ呼び出しは Apache ライブラリによって行われているため、Application Insights ではこれらの呼び出しにフィルター処理を適用できません。 DEBUG
-level ログでは大量のログ データが生成されるため、ライブ運用インスタンスでは推奨されません。
次のステップ
Java サーバー アプリ用に Application Insights を設定しました。 その他にできること
ヘルプの参照
サードパーティの情報に関する免責事項
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。