LoginSignup
1
1

More than 1 year has passed since last update.

Azure App Service上のJava + TomcatにElastic APMを設定する方法

Last updated at Posted at 2022-08-25

Azure App Service上で動かすTomcatにElastic APMを設定する機会がありましたので、注意点など含めて紹介しようと思います。

Java+TomcatでElastic APMを使う方法

公式ドキュメントはこちら
https://www.elastic.co/guide/en/apm/agent/java/current/setup.html
手順は変わりませんがApp Serviceで設定する上で少し注意する点があります。

App Serviceのための設定

必要なもの

APM AgentとWARファイルだけです。
APM Agentはこちらからダウンロードできます。
https://search.maven.org/search?q=g:co.elastic.apm%20AND%20a:elastic-apm-agent

WARファイルはTomcatのサンプルファイルを使用します。
https://tomcat.apache.org/tomcat-9.0-doc/appdev/sample/sample.war

App Service作成

ここはElastic向けのものはありませんので詳細は省きます。
こんな感じで作成すればよいでしょう。
スクリーンショット 2022-08-17 22.48.00.png

環境変数CATALINA_OPTS設定

設定情報

以下を設定する必要があります。

  • javaagent
    • Elastic Java APM Agentへのパス
    • /home/site/libsで固定されています
  • elastic.apm.server_urls
    • APMデータの送付先。Elastic APM Agentがデータを送信する先は、Elastic Cloudに自動的に建てられているElastic Agent(APM Agentとは別)です。
  • elastic.apm.secret_token
    • アクセストークン
  • elastic.apm.service_name
    • Elastic APMのUIに表示する文字列

これらの設定は以下から確認できます。
Fleet -> Agent Policies -> Elastic Cloud Agent Policies -> Elastic APM -> APM Agents -> Java
スクリーンショット 2022-08-22 17.58.52.png

server_url,secret_tokenの変更方法についてはこちらの記事に記載しております。
https://qiita.com/takeo-furukubo/items/1b2d7825927a8defe147#elastic-cloud%E7%94%A8%E3%81%AE%E8%A8%AD%E5%AE%9A

設定方法

実際にApp Serviceに設定する際には、設定->構成->新しいアプリケーション設定で設定を行います。
(実際には<address>と<token>にはそれぞれの環境の文字列が入っています)

CATALINA_OPTS
-javaagent:/home/site/libs/elastic-apm-agent-1.33.0.jar -Delastic.apm.service_name=tomcat-test -Delastic.apm.server_urls=https://<address>:443 -Delastic.apm.secret_token=<token>

elastic.apm.service_nameには識別しやすい文字列を入れておきましょう(今回であればtomcat-test)
スクリーンショット 2022-08-17 22.51.07.png

App ServiceへのDeploy方法

Tomcatを使用する場合はこちらのドキュメントの方法で行います。
https://docs.microsoft.com/ja-jp/azure/app-service/deploy-zip?tabs=cli#deploy-warjarear-packages

ローカル環境にはAzure CLIをインストールしておきます。
https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli

WARファイルのDeploy

az webapp deploy --resource-group <group name> --name <app name> --src-path sample.war --type war

/home/site/wwwrootapp.warという名前で展開されます。

APM Agent(jar)ファイルのDeploy

az webapp deploy --resource-group <group name> --name <app name> --src-path elastic-apm-agent-1.33.0.jar --type lib --target-path elastic-apm-agent-1.33.0.jar

ドキュメントにはtarget-pathの記載が有りませんが、記載しないと

An error occured during deployment. Status Code: 400, Details: Path must be defined for type='Lib'

というエラーになります。

target pathと言いながら/home/site/wwwrootとか書くとうまくいきません。
このコマンドでは/home/site/libs--target-pathで指定した名前で配置されます。ですので上記のようにそのままjarファイル名を記述しています。

確認

サイトにアクセス

App Serviceの概要へ戻りURLの横にあるリンクをクリックしましょう。
https://<app name>.azurewebsites.net
となっているはずです。
このように表示されればOKです。
スクリーンショット 2022-08-23 15.01.53.png

Elastic APMでの確認

Elastic CloudのKibanaにアクセスしてObservability -> APMをクリックします。
以下のようにName部分にelastic.apm.service_nameで設定した値(今回だとtomcat-test)が表示されていれば成功です。
スクリーンショット 2022-08-23 15.21.07.png

まとめ

Elastic APMは様々な環境で簡単にAPMデータを取得することが可能です。ぜひお試しください。

Elastic Cloud 無料トライアル

こちらからElastic Cloudの14日間無料トライアルを是非お試しください
Elastic Cloud 無料トライアル

手順は下記リンクをご参照ください
Elastic Cloud について 〜実際にデプロイメントを作ってみよう〜

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1