13
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

New Relic APM さわってみた!

Last updated at Posted at 2025-12-01

はじめに

昨日は @wc-fujikawa さんの「 基本情報技術者試験を勉強して学んだこと 」でした。私もいつか受験してみようと思いました。

今回は、「 New Relic APM さわってみた 」ことについて共有させていただきます。

New Relicとは

New Relicとは、オブザーバビリティプラットフォームを提供する米国企業です。そして、提供するサービスを指します。

New Relic(ニューレリック)という名前は、創業者Lew Cirne(ルー・サーニー)の文字を入れ替えて作られています。こういうのをアナグラムというらしいです。知りませんでした。

image.png

あと、ポイントとなる情報は以下。

用語メモ:オブザーバビリティとは

オブザーバビリティ(Observability)は、オブザーブ(Observe):「観測する」と、アビリティ(Ability):「能力」を組み合わせた複合語で、日本語では「可観測性」あるいは「観測する能力」などと訳されます。システム上で何らかの異常が起こった際に、それを通知するだけでなく、どこで何が起こったのか、なぜ起こったのかを把握する能力を表す指標、あるいは仕組みを指します。 オブザーバビリティとは?監視との違い、必要性について解説

用語メモ:APMとは

APM(Application Performance Monitoring/アプリケーションパフォーマンス監視/アプリケーション性能監視)は、アプリケーションが想定通りのパフォーマンスを発揮しているかどうかを監視し、その改善に向けた原因の特定・改修の迅速化を実現するプロセス、あるいはそのためのツールを指します。APMとは?アプリケーション性能監視の重要性やツール解説

New Relic APM とは

New Relic APMは、アプリケーションが稼働するサーバに 言語別の APM エージェントをインストールすることでアプリのパフォーマンスデータを収集します。対応言語は以下。

image.png

APM エージェントは、アプリケーションプロセス内で稼働し、トランザクション(一連の処理)をトレース(追跡)します。

例えば、「サイトの、あるボタンをクリックして、画面が表示される」というトランザクションをトレースすることで、トランザクション内の、「外部APIの呼び出しが成功したかや、データベースへのクエリにどのくらいの時間がかかったか」というような情報を知ることが可能です。これにより、アプリケーションパフォーマンスの改善を行うことが出来ます。

また、APMエージェントは「動いているプログラムに自動で測定器を取り付ける(計装: Instrumentation)」というような技術を使うため、基本的に、アプリケーションのソースコードに手を入れることなくパフォーマンスデータを収集することが出来ます。

New Relic APM さわってみる

対象アプリ

今回は以下の天気アプリを対象とします。Gemini作。

  • Get Weather: 都市名を入力すると、現在の天気情報を表示
  • Show DB History: 過去の検索結果を表示

weather_app.gif

構成

  • Webサーバ:
    • Apache Httpd がリクエストを受け、Apache Tomcat に中継
  • Appサーバ:
    • Apache Tomcat 上の Java Servlet (WeatherServlet) が 外部APIであるOpenWeatherMap APIを呼び出し、天気情報を取得
  • データベース:
    • MySQL を使用して、天気情報の検索履歴を保存

ローカルで、コンテナで動かします。

New Relic APM 導入してみる

今回は、AppサーバであるTomcatコンテナにNew RelicのJavaエージェントを導入します。Javaエージェントは、アプリケーションのパフォーマンスデータを収集し、New Relicプラットフォームに送信する役割を担います。

1. Javaエージェントのインストール

TomcatのDockerfileにおいて、Javaエージェントを /usr/local/以下にダウンロードして解凍します。

# New Relic Javaエージェントのバージョンを指定
ENV VERSION=8.24.0
# エージェントをダウンロードして解凍
RUN curl -O https://download.newrelic.com/newrelic/java-agent/newrelic-agent/${VERSION}/newrelic-java-${VERSION}.zip && \
    unzip newrelic-java-${VERSION}.zip -d /usr/local/

2. Javaエージェントの設定

Javaエージェントの設定は/usr/local/newrelic/newrelic.ymlファイルで可能です。ただ、今回はcompose.ymlで環境変数として指定します。

compose.yml内のTomcatサービスのenvironmentに、ライセンスキー、アプリケーション名、そしてエージェントを有効にするための起動オプションを追加します。Tomcatの起動オプションであるCATALINA_OPTSに、-javaagentフラグでnewrelic.jarのパスを指定します。

environment:
  NEW_RELIC_LICENSE_KEY: ${NEW_RELIC_LICENSE_KEY}
  NEW_RELIC_APP_NAME: "APP_TOMCAT"
  CATALINA_OPTS: -javaagent:/usr/local/newrelic/newrelic.jar

以上の設定で、Tomcatコンテナを起動するとJavaエージェントが有効になり、アプリケーションのパフォーマンスデータがNew Relicに送信され始めます。

補足メモ:Javaエージェント導入について
インストールドキュメント を参考に設定できます。また、Integration & Agents > Java からも、エージェント導入の手順がわかります。
image.png
今回は、これらを参考に設定した感じです。

New Relic UIでみてみる

見てみましょう!

トランザクションのトレース

天気アプリにおいて、「都市名を入力して、現在の天気情報を表示するトランザクション」のトレース結果が見れます。

外部APIのapi.openweathermap.orgへのリクエストや、MySQLへのクエリのトレースが出来ていることがわかります。どのようなクエリかも該当処理部分をクリックするとわかるようです。

image.png

最も処理時間が長い「Uninstrumented time(計測されていない時間)」は何なんでしょう。結局、最も時間のかかる処理が何かわかりませんでした笑。

また、Entity mapにおいて、アプリケーション:APP_TOMCAT、データベース:MySQL、外部API:api.openweathermap.org という関係するEntityが可視化されています。こういうのいいですね。

セッションリプレイ

セッションリプレイとは、ユーザーがUI上でどのような行動を取ったのか記録できる機能です。ブラウザモニタリングの機能です。以下に示すようにユーザの動きが記録されています。すごいです。

session_replay.gif

ブラウザモニタリングは、計測対象のページにタグを埋め込む方法と、APMエージェントにより有効化できる場合があるみたいです。

SLI/SLO

APMのSLI/SLOを設定できます。

特定のトランザクションをキートランザクションとして登録できて、そのキートランザクションに対してもSLI/SLOを設定可能です。今回の「都市名を入力して、現在の天気情報を表示するトランザクション」を対象に、SLI/SLOを設定できます。

image.png

特定の処理に関して、成功率やレイテンシをSLIとしてモニタリングできます。すごいです。

まだまだ色々あるみたいですが、そろそろ終わりましょう。

おわりに

APMは自分には難しくてよくわかりませんでした。でも、なんかすごいことはわかりました。読んでいただいた方、ありがとうございました。よいお年を!

明日は、@wc_nakaniwa さんの記事です。よろしくお願いします!

おまけ

New Relic について学べるコンテンツを New Relic University として無償で公開されているようです。New Relic を学ぶ

参考

13
0
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
13
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?