Posted at

New Relic APM: アプリの重要な機能を重点的に監視して、システムの品質をあげよう

More than 1 year has passed since last update.

アドベントカレンダー6日目。昨日に引き続き、New Relic APM の機能の紹介です。今日は、キートランザクションです。

New Relic APM では、 Overview ページや Transactions ページで、アクセスのあったトランザクションを収集し、表示されます。基本的にパフォーマンスが遅いトランザクションがリストされます。

しかし、アプリ、サービス、ビジネスにとって、遅いトランザクションがすべて問題になるとは限りません。非常に遅い、あまり使われないトランザクションよりも、頻繁に使われるが少し遅いトランザクションの方が、ビジネス上重要であることが普通です。

そのため、そのような重要なトランザクションのパフォーマンスは継続的に監視しておきたいということはあると思います。

まさに、キートランザクションがそのような機能です。


できること?

キートランザクションとして設定すると、そのトランザクション専用に以下のことが行えるようになります。


  • 以下のような特定のトランザクションにのみ特化したパフォーマンスページ

  • トランザクション専用の Apdex の設定

  • トランザクション専用のアラートの設定

  • X-Ray セッションによる詳細なパフォーマンスの測定


設定の仕方

キートランザクションは、Transactions ページから対象のトランザクションを選択すると、ポップアップが表示され、以下のようにその左上に「Track as key transaction」とリンクがあるので、それをクリックし、専用の名前をつけるだけです。

キートランザクションとして保存されているトランザクションは、APM 画面のトップオンタブからいつでも簡単にアクセスできます。


専用の Apdex とは

New Relic では、ユーザー満足度を Apdex という指標で計測しています。0から1の値でスコア付され、1に近い方がユーザー満足度が高いことを示します。こnの指標は、Browserとアプリの2つでスコアを算出します。そのため、特定の時間対で全体として、ユーザー満足度がどうなのか?というシステム全体のユーザー満足度が分かることになります。

しかし、トランザクション単位でのユーザー満足度はわかりません。そこで、キートランザクションにすると、特定のトランザクション専用のユーザー満足度を知ることができるのです。

またアラートと組み合わせることで、このトランザクションのみの Apdex スコアに合わせたアラート通知をすることができるのです。

つまり、全体としては、Apdex スコアが 0.8を下回ったらアラートを出すが、あるトランザクションは、Apdex スコアが 0.9を下回ったらアラートを出すといったことができるようになります。


X-Ray セッションって何?

たぶん、キートランザクションを利用する多くの理由がこれを使いたいからだと思う。X-Ray セッションとは、キートランザクションとして指定したトランザクションに対して、スレッドプロファイルを実行できます。

以下のように Trace Details で表示できる以上の粒度でパフォーマンスを計測できます。これは、通常の計測よりも重い処理なので、やりすぎると負荷が大きくなる可能性がありそう。

この機能は現在、java, Python, Ruby のみで利用できる。


設定方法

X-Ray セッションは、以下のように収集回数(Requested trace count)と実行時間(Maximum duration)を指定します。どちらかの条件を満たした段階で計測は終了します。

計測が終わると以下のような結果画面が見えます。メソッド単位でのパフォーマンスを確認することができます。

さらに、下の階層まで調べることができます。色の付いている処理が全体の内、処理時間を占めている箇所になりますので、とりあえずは、そこを重点的に見ていくと効率的に調べられます。


誰が使えるの?

こちらも昨日の、サービスマップに続き、PRO のみで利用可能となっています。


併せて読みたい

詳しくは、ドキュメント「キートランザクション: 重要なトランザクションもしくはイベントの追跡」をご覧ください。


まとめ

如何だったでしょうか? 通常の概要ページやトランザクションページで、パフォーマンスの遅いトランザクションをただ追うだけでなく、キートランザクションを使うと、ビジネスに重要なトランザクションを重点的にチェックできます。効率良くサービスの品質を向上できる機能ですので、是非、うまく活用してみてください。