Java Web プロジェクトのAzure アプリケーション Insights のトラブルシューティング

この記事では、Application Insights Java 2.x の Q&A 形式の一般的な問題のトラブルシューティング ソリューションについて説明します。

注意

このドキュメントは Application Insights Java 2.x に適用されます。これは推奨されなくなりました。

最新バージョンのドキュメントについては、 Application Insights Java 3.x を参照してください。

Java のAzure アプリケーション Insights に関する質問や問題 いくつかのヒントを次に示します。

ビルド エラー

Eclipse または Intellij Idea で、Maven または Gradle を使用して Application Insights SDK を追加すると、ビルドまたはチェックサム検証エラーが発生します

依存関係<バージョン>要素でワイルドカード文字 (Maven や version:'2.+' Gradle など) を含むパターンを使用している場合は、<version>[2.0,)</version>代わりに、 などの2.6.4特定のバージョンを指定してみてください。

データなし

Application Insights を正常に追加し、アプリを実行しましたが、ポータルでデータを見たことがない

  • 約 1 分間待ってから、[最新の 情報に更新] を選択します。 グラフは定期的に更新されますが、手動で更新することもできます。 更新間隔は、グラフの時間範囲によって異なります。

  • ApplicationInsights.xml ファイル (プロジェクトのリソース フォルダー内) にインストルメンテーション キーを定義しているか、環境変数として構成されていることを確認します。

  • XML ファイルにノードがないことを <DisableTelemetry>true</DisableTelemetry> 確認します。

  • 必要に応じて、ファイアウォールで TCP ポート 80 と 443 を開き、 への送信トラフィックを dc.services.visualstudio.com行います。 ファイアウォールの 例外の完全な一覧を参照してください。

  • Microsoft Azure のスタート ボードで、サービスの状態マップを確認します。 アラートの兆候がある場合は、[ OK] に戻るまで待ってから、Application Insights アプリケーション ブレードを閉じてもう一度開きます。

  • ApplicationInsights.xml ファイルのルート ノード (プロジェクトの resources フォルダー) の下に SDKLogger> 要素を追加<して、ログ記録を有効にします。 次に、疑わしいログの前に付いたAI: INFO/WARN/ERRORエントリのチェックします。

  • 正しい ApplicationInsights.xml ファイルが Java SDK によって正常に読み込まれていることを確認します。 コンソールの出力メッセージで、"構成ファイルが正常に見つかりました" ステートメントを確認します。

  • 構成ファイルが見つからない場合は、出力メッセージをチェックして、構成ファイルが検索されている場所を確認します。 ApplicationInsights.xml が検索場所のいずれかに配置されていることを確認します。 経験則として、Application Insights SDK JAR の近くに構成ファイルを配置できます。 たとえば、Tomcat では、フォルダーは WEB-INF/クラスになります。 開発中は、web プロジェクトの resources フォルダーにApplicationInsights.xmlを配置できます。

  • SDK に関する既知の問題については、 GitHub の問題に関するページを確認してください。

  • バージョンの競合の問題を回避するには、必ず同じバージョンの Application Insights コア、Web、エージェント、およびログ アペンダーを使用してください。

注:

この記事は最近、Log Analytics ではなく Azure Monitor ログという用語を使用するように更新されました。 ログ データは引き続き Log Analytics ワークスペースに保存され、引き続き同じ Log Analytics サービスによって収集および分析されます。 Azure Monitor でのログのロールをより適切に反映するように、用語を更新しています。 詳細については、「 Azure Monitor の用語の変更 」を参照してください。

以前はデータを表示していたが、停止している

  • データ ポイントの毎月のクォータに達しましたか? [設定のクォータと価格]> を開いて確認します。その場合は、プランをアップグレードするか、より多くの容量を支払うことができます。 詳細については、 価格スキームに関するページを参照してください。

  • 最近 SDK をアップグレードしましたか? プロジェクト ディレクトリ内に Unique SDK jar のみが存在することを確認します。 2 つの異なるバージョンの SDK が存在してはいけません。

  • 正しい AI リソースを見ていますか? アプリケーションの iKey を、テレメトリを想定しているリソースと一致するようにしてください。 これらは同じである必要があります。

期待しているすべてのデータが表示されない

  • [使用量と推定コスト] ページを開き、チェックしてサンプリングが動作しているかどうかを確認します。 (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 プロジェクトを右クリックし、[AzureConfigure Application Insights]\(Azure> 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 Starter

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 用にアプリを設定したと仮定して、[Application Insightsの参照>] を選択し、アプリ用に作成したアプリ リソースを選択します。 今後さらに早くアクセスするには、アプリをスタート ボードにピン留めします。

イントラネット サーバー

イントラネット上のサーバーを監視できますか?

はい。サーバーがパブリック インターネット経由で Application Insights ポータルにテレメトリを送信できる場合。

SDK がポータルにデータを送信できるようにするには、 サーバーのファイアウォールで一部の送信ポートを開 く必要がある場合があります。

データ保持

ポータルにデータが保持される期間はどのくらいですか? セキュリティで保護されていますか?

「データの保持とプライバシー」を参照してください。

デバッグ ログ

Application Insights では を使用 org.apache.httpします。 この名前空間は、 名前空間 com.microsoft.applicationinsights.core.dependencies.httpの下の Application Insights コア jar 内に再配置されます。 この再配置により、Application Insights は、同じ org.apache.http バージョンの異なるバージョンが 1 つのコード ベースに存在するシナリオを処理できます。

注:

アプリ内のすべての名前空間に対して -level ログ記録を有効にするとDEBUG、実行中のすべてのモジュール (名前が としてcom.microsoft.applicationinsights.core.dependencies.http変更されるなど) org.apache.http によって適用されます。 ログ呼び出しは Apache ライブラリによって行われるため、Application Insights ではこれらの呼び出しにフィルター処理を適用できません。 DEBUGレベルのログ記録ではかなりの量のログ データが生成され、ライブ運用インスタンスでは推奨されません。

次の手順

Java サーバー アプリ用に Application Insights を設定しました。 他に何ができますか?

ヘルプを参照する

サードパーティの情報に関する免責事項

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。