Elastic APM Java エージェントで Spring Boot アプリを監視する方法
Note
Basic、Standard、および Enterprise プランは、2025 年 3 月中旬以降に非推奨になり、廃止期間は 3 年間になります。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象: ✔️ Basic または Standard ❌ Enterprise
この記事では、Elastic APM Agent を使用して、Azure Spring Apps で実行している Spring Boot アプリケーションを監視する方法を説明します。
Elastic Observability Solution を使用すると、統一された監視を実現して次のことができます。
- Elastic APM Java エージェントと Azure Spring Apps の永続ストレージを使用してアプリを監視します。
- 診断設定を使用して、Azure Spring Apps のログを Elastic に配布します。 詳しくは、「診断設定を使用して Elastic (ELK) でログを分析する」をご覧ください。
次のビデオでは、Elastic を使用した Spring Boot アプリケーションの統一監視が紹介されています。
前提条件
Spring Petclinic アプリケーションをデプロイする
この記事では、Spring Petclinic サンプルを使用して、必要な手順について説明します。 次の手順のようにして、サンプル アプリケーションをデプロイします。
「Azure Spring Apps と MySQL を使用して Spring Boot アプリをデプロイする」の手順に従って、「Spring Boot アプリケーションをデプロイして環境変数を設定する」セクションまで進みます。
Azure CLI 用 Azure Spring Apps 拡張機能の次のコマンドを使用して、Azure Spring Apps で実行するアプリケーションを作成します。
az spring app create \ --resource-group <your-resource-group-name> \ --service <your-Azure-Spring-Apps-instance-name> \ --name <your-app-name> \ --is-public true
Azure Spring Apps 用にカスタム永続ストレージを有効にする
カスタム永続ストレージを有効にするには、次の手順のようにします。
「Azure Spring Apps で独自の永続ストレージを有効にする方法」の手順のようにします。
次の Azure CLI コマンドを使って、Azure Spring Apps アプリ用の永続ストレージを追加します。
az spring app append-persistent-storage \ --resource-group <your-resource-group-name> \ --service <your-Azure-Spring-Apps-instance-name> \ --name <your-app-name> \ --persistent-storage-type AzureFileVolume \ --share-name <your-Azure-file-share-name> \ --mount-path <unique-mount-path> \ --storage-name <your-mounted-storage-name>
Elastic APM Java エージェントをアクティブにする
次に進む前に、Elastic APM サーバーの接続性情報を用意する必要があります。これは、Azure に Elastic がデプロイされていることを前提としています。 詳しくは、「Elastic を Microsoft Azure にデプロイして管理する方法」をご覧ください。 この情報を取得するには、次の手順のようにします。
Azure portal で Elastic のデプロイの [概要] ページに移動し、[Manage Elastic Cloud Deployment]\(Elastic Cloud のデプロイの管理\) を選びます。
Elastic Cloud Console のデプロイの下で、[APM と Fleet] セクションを選択し、Elastic APM Server のエンドポイントとシークレット トークンを取得します。
Maven Central から Elastic APM Java エージェントをダウンロードします。
前に有効にしたカスタム永続ストレージに、Elastic APM Agent をアップロードします。 Azure ファイル共有に移動し、[アップロード] を選んでエージェントの JAR ファイルを追加します。
Elastic APM のエンドポイントとシークレット トークンを取得した後、アプリケーションをデプロイするときに次のコマンドを使って Elastic APM Java エージェントをアクティブにします。 プレースホルダー
<agent-location>
では、Elastic APM Java エージェントのマウントされたストレージの場所を参照します。az spring app deploy \ --name <your-app-name> \ --artifact-path <unique-path-to-your-app-jar-on-custom-storage> \ --jvm-options='-javaagent:<elastic-agent-location>' \ --env ELASTIC_APM_SERVICE_NAME=<your-app-name> \ ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package-name>' \ ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>' \ ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
プロビジョニングを自動化する
Terraform、Bicep、または Azure Resource Manager テンプレート (ARM テンプレート) を使用して、プロビジョニング自動化パイプラインを実行することもできます。 このパイプラインでは、作成およびデプロイする新しいアプリケーションをインストルメント化して監視するための完全なハンズオン エクスペリエンスが提供されます。
Terraform を使用してプロビジョニングを自動化する
Terraform テンプレートで環境変数を構成するには、次のコードをテンプレートに追加し、<...> プレースホルダーを実際の値に置き換えます。 詳細については、Azure Spring Apps のアクティブなデプロイの管理に関するページを参照してください。
resource "azurerm_spring_cloud_java_deployment" "example" {
...
jvm_options = "-javaagent:<elastic-agent-location>"
...
environment_variables = {
"ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
"ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
"ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
"ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
}
}
Bicep ファイルを使用してプロビジョニングを自動化する
Bicep ファイルで環境変数を構成するには、次のコードをファイルに追加し、<...> プレースホルダーを実際の値に置き換えます。 詳細については、Microsoft.AppPlatform Spring/apps/deployments を参照してください。
deploymentSettings: {
environmentVariables: {
ELASTIC_APM_SERVICE_NAME='<your-app-name>',
ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package>',
ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>',
ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
},
jvmOptions: '-javaagent:<elastic-agent-location>',
...
}
ARM テンプレートを使用してプロビジョニングを自動化する
ARM テンプレートで環境変数を構成するには、次のコードをテンプレートに追加し、<...> プレースホルダーを実際の値に置き換えます。 詳細については、Microsoft.AppPlatform Spring/apps/deployments を参照してください。
"deploymentSettings": {
"environmentVariables": {
"ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
"ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
"ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
"ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
},
"jvmOptions": "-javaagent:<elastic-agent-location>",
...
}
Elastic APM Java エージェントをアップグレードする
アップグレードを計画するには、Azure での Elastic Cloud のバージョンのアップグレードと APM の破壊的変更に関する説明をご覧ください。 APM サーバーをアップグレードしたら、Elastic APM Java エージェント JAR ファイルをカスタムの永続的ストレージにアップロードします。 次に、アップグレードされた Elastic APM Java エージェント JAR を指す更新された JVM オプションを使用して、アプリを再起動します。
Elastic APM でアプリケーションとメトリックを監視する
アプリケーションとメトリックを監視するには、次の手順のようにします。
Azure portal で Elastic のデプロイの [概要] ページに移動し、Kibana のリンクを選びます。
Kibana が開いた後、検索バーで APM を検索して、APM を選択します。
Kibana APM は、アプリケーション監視ワークフローをサポートするためのキュレーションされたアプリケーションです。 ここでは、要求と応答時間、スループット、継続時間に最も影響を与えているサービス内のトランザクションなど、高レベルの詳細を見ることができます。
特定のトランザクションにドリルダウンして、分散トレースなどのトランザクション固有の詳細を把握できます。
Elastic APM Java エージェントによって、トラブルシューティングのために Kibana アプリで使用できる JVM メトリックも Azure Spring Apps アプリからキャプチャされます。
Elastic ソリューションに組み込まれている AI エンジンを使用すると、Azure Spring Apps サービスで異常検出を有効にして、Teams の通知、JIRA の問題の作成、Webhook ベースの API 呼び出しなど、適切なアクションを選ぶこともできます。