AppDynamics Java エージェントを使用して Spring Boot アプリを監視する方法

Note

Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスの名前は新しくなりましたが、スクリーンショット、ビデオ、図などの資産の更新に取り組んでいる間、場所によってはしばらく古い名前が表示されます。

この記事の適用対象: ✔️ Standard 従量課金および専用 (プレビュー) ✔️ Basic/Standard ❌ Enterprise

この記事では、AppDynamics Java エージェントを使用し、Azure Spring Apps の Spring Boot アプリケーションを監視する方法について説明します。

AppDynamics Java エージェントを使用すると、以下を行うことができます。

  • アプリケーションの監視
  • 環境変数を使用して AppDynamics Java エージェントを構成する
  • AppDynamics ダッシュボードからすべての監視データを確認する

次の動画では、AppDynamics Java インプロセス エージェントについて解説しています。


前提条件

AppDynamics Java インプロセス エージェントをアクティブ化する

ワークフロー全体で、次のことを行う必要があります。

  • Azure Spring Apps で AppDynamics Java インプロセス エージェントをアクティブ化して、アプリケーション メトリック データを生成します。
  • AppDynamics エージェントを AppDynamics コントローラーに接続し、コントローラー内のデータを収集して視覚化します。

Azure Spring Apps の Spring Boot アプリへの双方向矢印と AppDynamics エージェントを指す矢印を含む AppDynamics エージェントを示す図。

Azure CLI を使用して、AppDynamics エージェントを使用してアプリケーションをアクティブ化する

Azure CLI を使用してアプリケーションをアクティブ化するには、以下の手順を使用します。

  1. リソース グループを作成する。

  2. Azure Spring Apps のインスタンスを作成します。

  3. 次のコマンドを使用してアプリケーションを作成します。 プレースホルダー <...> を実際の値に置き換えてください。

    az spring app create \
        --resource-group "<your-resource-group-name>" \
        --service "<your-Azure-Spring-Apps-instance-name>" \
        --name "<your-app-name>" \
        --is-public true
    
  4. 環境変数を使用して、AppDynamics エージェントでデプロイを作成します。

    az spring app deploy \
        --resource-group "<your-resource-group-name>" \
        --service "<your-Azure-Spring-Apps-instance-name>" \
        --name "<your-app-name>" \
        --artifact-path app.jar \
        --jvm-options="-javaagent:/opt/agents/appdynamics/java/javaagent.jar" \
        --env APPDYNAMICS_AGENT_APPLICATION_NAME=<your-app-name> \
              APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY=<your-agent-access-key> \
              APPDYNAMICS_AGENT_ACCOUNT_NAME=<your-agent-account-name> \
              APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME=true \
              APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX=<your-agent-node-name> \
              APPDYNAMICS_AGENT_TIER_NAME=<your-agent-tier-name> \
              APPDYNAMICS_CONTROLLER_HOST_NAME=<your-AppDynamics-controller-host-name> \
              APPDYNAMICS_CONTROLLER_SSL_ENABLED=true \
              APPDYNAMICS_CONTROLLER_PORT=443
    

Azure Spring Apps により、AppDynamics Java エージェントがパス /opt/agents/appdynamics/java/javaagent.jar に事前インストールされます。 アプリケーションの JVM オプションからエージェントを有効にしてから、環境変数を使用してエージェントを構成できます。 これらの変数の値については、Java エージェントを使用して Azure Spring Apps を監視する方法に関するページを参照してください。 これらの変数が、AppDynamics UI でレポートを表示したり整理したりする上でどのように役立つかについては、階層とノードに関するページを参照してください。

Azure portal を使用して、AppDynamics エージェントを使用してアプリケーションをアクティブ化する

Azure portal を使用してアプリケーションをアクティブ化するには、以下の手順を使用します。

  1. Azure portal で Azure Spring Apps インスタンスに移動します。

  2. ナビゲーション ウィンドウの [設定] セクションで、[アプリ] を選択します。

    Azure portal のスクリーンショット。Azure Spring Apps インスタンスの [アプリ] ページを確認できます。

  3. アプリを選択し、ナビゲーション ウィンドウで [構成] を選択します。

  4. [全般設定] タブを使用して、JVM オプションなどの値を更新します。

    Azure portal のスクリーンショット。Azure Spring Apps インスタンス内のアプリの [構成] ページが表示されており、[全般設定] タブが選択されています。

  5. [環境変数] を選択して、アプリケーションで使用される変数を追加または更新します。

    Azure portal のスクリーンショット。[構成] ページが表示されており、[環境変数] タブが選択されています。

プロビジョニングを自動化する

Terraform、Bicep、または Azure Resource Manager テンプレート (ARM テンプレート) を使用して、プロビジョニング自動化パイプラインを実行することもできます。 このパイプラインでは、作成およびデプロイする新しいアプリケーションをインストルメント化して監視するための完全なハンズオン エクスペリエンスが提供されます。

Terraform を使用してプロビジョニングを自動化する

Terraform テンプレートで環境変数を構成するには、次のコードをテンプレートに追加し、<...> プレースホルダーを実際の値に置き換えます。 詳細については、Azure Spring Apps のアクティブなデプロイの管理に関するページを参照してください。

resource "azurerm_spring_cloud_java_deployment" "example" {
  ...
  jvm_options = "-javaagent:/opt/agents/appdynamics/java/javaagent.jar"
  ...
    environment_variables = {
      "APPDYNAMICS_AGENT_APPLICATION_NAME" : "<your-app-name>",
      "APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY" : "<your-agent-access-key>",
      "APPDYNAMICS_AGENT_ACCOUNT_NAME" : "<your-agent-account-name>",
      "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME" : "true",
      "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX" : "<your-agent-node-name>",
      "APPDYNAMICS_AGENT_TIER_NAME" : "<your-agent-tier-name>",
      "APPDYNAMICS_CONTROLLER_HOST_NAME" : "<your-AppDynamics-controller-host-name>",
      "APPDYNAMICS_CONTROLLER_SSL_ENABLED" : "true",
      "APPDYNAMICS_CONTROLLER_PORT" : "443"
  }
}

Bicep を使用してプロビジョニングを自動化する

Bicep ファイルで環境変数を構成するには、次のコードをファイルに追加し、<...> プレースホルダーを実際の値に置き換えます。 詳細については、Microsoft.AppPlatform Spring/apps/deployments を参照してください。

deploymentSettings: {
  environmentVariables: {
    APPDYNAMICS_AGENT_APPLICATION_NAME : '<your-app-name>'
    APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY : '<your-agent-access-key>'
    APPDYNAMICS_AGENT_ACCOUNT_NAME : '<your-agent-account-name>'
    APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME : 'true'
    APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX : '<your-agent-node-name>'
    APPDYNAMICS_AGENT_TIER_NAME : '<your-agent-tier-name>'
    APPDYNAMICS_CONTROLLER_HOST_NAME : '<your-AppDynamics-controller-host-name>'
    APPDYNAMICS_CONTROLLER_SSL_ENABLED : 'true'
    APPDYNAMICS_CONTROLLER_PORT : '443'
  }
  jvmOptions: '-javaagent:/opt/agents/appdynamics/java/javaagent.jar'
}

ARM テンプレートを使用してプロビジョニングを自動化する

ARM テンプレートで環境変数を構成するには、次のコードをテンプレートに追加し、<...> プレースホルダーを実際の値に置き換えます。 詳細については、Microsoft.AppPlatform Spring/apps/deployments を参照してください。

"deploymentSettings": {
  "environmentVariables": {
    "APPDYNAMICS_AGENT_APPLICATION_NAME" : "<your-app-name>",
    "APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY" : "<your-agent-access-key>",
    "APPDYNAMICS_AGENT_ACCOUNT_NAME" : "<your-agent-account-name>",
    "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME" : "true",
    "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX" : "<your-agent-node-name>",
    "APPDYNAMICS_AGENT_TIER_NAME" : "<your-agent-tier-name>",
    "APPDYNAMICS_CONTROLLER_HOST_NAME" : "<your-AppDynamics-controller-host-name>",
    "APPDYNAMICS_CONTROLLER_SSL_ENABLED" : "true",
    "APPDYNAMICS_CONTROLLER_PORT" : "443"
  },
  "jvmOptions": "-javaagent:/opt/agents/appdynamics/java/javaagent.jar",
  ...
}

AppDynamics ダッシュボードでレポートを確認する

このセクションでは、AppDynamics のさまざまなレポートを紹介します。

次のスクリーンショットは、AppDynamics ダッシュボードに表示されるアプリの概要を示しています。

AppDynamics のスクリーンショット。[アプリケーション] ダッシュボードが表示されています。

[アプリケーション] タブには、アプリケーションの例を用いた以下のスクリーンショットのように、各アプリケーションの全体的な情報が表示されます。

  • api-gateway

    AppDynamics のスクリーンショット。サンプル API ゲートウェイ アプリの [アプリケーション] ダッシュボードが表示されています。

  • customers-service

    AppDynamics のスクリーンショット。サンプル カスタマー サービス アプリの [アプリケーション] ダッシュボードが表示されています。

次のスクリーンショットは、データベース呼び出し ダッシュボードから基本情報を取得する方法を示しています。

AppDynamics のスクリーンショット。[データベース呼び出し] ダッシュボードが表示されています。

次のスクリーンショットに示すように、最も低速なデータベース呼び出しに関する情報を取得することもできます。

AppDynamics のスクリーンショット。[最も低速なデータベース呼び出し] ページが表示されています。

AppDynamics のスクリーンショット。[最も低速なデータベース呼び出し] ページからアクセスできる [相関スナップショット] ページが表示されています。

次のスクリーンショットは、[メモリ] ページの [ヒープ] セクションに表示されるメモリ使用量分析を示しています。

AppDynamics のスクリーンショット。[メモリ] ページの [ヒープ] セクションが表示されています。

次のスクリーンショットに示すように、ガベージ コレクションのプロセスを確認することもできます。

AppDynamics のスクリーンショット。[メモリ] ページの [ガベージ コレクション] セクションが表示されています。

次のスクリーンショットは [低速のトランザクション] ページを示しています。

AppDynamics のスクリーンショット。[低速のトランザクション] ページが表示されています。

この [メトリック ブラウザー] のスクリーンショットに示されているように、JVM に対してさらに多くのメトリクスを定義することができます。

AppDynamics のスクリーンショット。[メトリック ブラウザー] が表示されています。

AppDynamics エージェントのログを表示する

Azure Spring Apps では、既定で AppDynamics エージェントの "情報" レベルのログが STDOUT に出力されます。 このログは、アプリケーション ログと混在しています。 アプリケーション ログから明示的なエージェント バージョンを見つけることができます。

AppDynamics エージェントのログは、次の場所から取得することもできます。

  • Azure Spring Apps ログ
  • Azure Spring Apps Application Insights
  • Azure Spring Apps LogStream

AppDynamics エージェントのアップグレードについて

AppDynamics エージェントは、JDK を用いて定期的にアップグレードされます (四半期ごと)。 エージェントのアップグレードは、次のシナリオに影響する場合があります。

  • アップグレード前に AppDynamics エージェントが使用されていた既存のアプリケーションは変更されませんが、新しいバージョンの AppDynamics エージェントを利用するには再起動または再デプロイが必要になります。
  • アップグレード後に作成されたアプリケーションでは、新しいバージョンの AppDynamics エージェントが使用されます。

仮想ネットワーク インジェクション インスタンスの送信トラフィックの構成

Azure Spring Apps の仮想ネットワーク インジェクション インスタンスで、AppDynamics エージェントに対して送信トラフィックが正しく構成されていることを確認します。 詳細については、Cisco AppDynamics SaaS ドメインと IP 範囲に関するページと、「仮想ネットワークでの Azure Spring Apps の実行に関するお客様の責任」をご覧ください。

制限事項を理解する

AppDynamics エージェントの制限事項については、Java エージェントを使用して Azure Spring Apps を監視する方法に関するページを参照してください。

次のステップ

Azure Spring Apps で Application Insights Java インプロセス エージェントを使用する