メトリックのグループ化問題

アカウントやアプリケーションが個別のメトリクスをたくさん送信していて、グループ化したほうが扱いやすいような場合、New Relic はこの状況を説明するためにメトリックグループ化の問題や MGI(Metric Grouping Issue) という用語を使います。この問題が発生すると、エージェントは不必要に大量のデータを New Relic に送信し、New Relic UI におけるチャートや表、レポートで有効な情報が見えにくくなります。

メトリックのグループ化と問題の発生について理解することで、New Relic がアプリケーションとどのように連携してメトリクスを効果的にグループ化し、メトリックのグループ化の問題を回避できるかを理解できます。

防止

Metric grouping: Before and after
ここでは、メトリックのグループ化により、トランザクションの構成がどのように変化するかをグループ化の「前」と「後」を示しています。グループ化することで、パフォーマンスの問題があるパターンを簡単に特定できるようになります。

アプリでメトリックのグループの問題が発生しないようにする手順は以下の通りです。

  1. New Relic リリースノートをチェックし、アプリがNew Relic エージェントの最新バージョンを実行していることを確認してください。
  2. 可能であれば、New Relic エージェントを最新バージョンにアップグレードしてください。
  3. エージェント固有の手順を参照してください。

メトリックグループ化の原因

メトリックのグループ化問題は、メトリック名の粒度(たいていの場合ウェブトランザクション名)が細かすぎるため、少数のコードパスに対して数百または数千の異なるウェブトランザクション名が存在することによって発生します。主要なコードパスは、一意のドキュメント、記事、ページなどへの多くの異なる URL のフルパスを生成したり、URLパスの一意の要素がトランザクション名に含まれている場合、これらの共通パスはそれぞれ独自の一意の名前を持ちます。

MGI の例
この例では、ユーザーが件名を持つ記事を書き込み、他のユーザーが参照できるように投稿できるアプリケーションがあるとします。アプリには、記事を追加する、記事を検索する、記事を表示するという3つの主要機能があります。

検索エンジン最適化 (SEO) 向上のため、「記事の表示」コードは、各記事を参照する一意の URL を生成します。以下の URL はそれぞれ、example サイトの記事を参照しています。

http://example.com/article/view/How_to_Install_New_Relic
http://example.com/article/view/How_New_Relic_Saved_the_Day
http://example.com/article/view/Where_do_I_get_New_Relic

3つの記事はすべて異なる記事です。異なる内容であり、URL も異なります。しかし、各記事を生成するコードは同じです。3つとも、「記事表示」機能を使っています。

多くのウェブフレームワークではこのテクニックが使用されています。URL の一部としてコントローラーやルート(この場合は、article/view)があります。New Relic は、これらのパターンを自動的に識別し、類似したルートをグループ化して、メトリックのグループ化の問題を防止しています。

コントローラーを検出するメカニズムがなければ、サンプルアプリでは訪問者がサイトに要求した個々の URL ごとにメトリクスを送信することになります。100万件の記事があり、そのサイトが人気の場合、1分ごとに数千のユニークな URL に訪れる可能性があります。これにより、収穫サイクルごとに New Relic に送信されるデータは膨大になり、New Relic APM Transactions ページでは数千の一意な URL がリストされ、メトリックのグループ化問題が発生します。

メトリックのグループ化問題の種類

メトリックグループ化の問題は、特に名前が URL の一部となっている場合によく発生します。また、アプリが報告した他のメトリックでも発生する可能性があります。例えば次のような場合です。

  • アプリが様々なサイトをクロールしていて、各外部呼び出しが別々のドメインへアクセスしている場合
  • アプリがリクエストを受け取るたびに一時的なデータベーステーブルを動的に生成する場合
  • UUID、記事名、同様の固有のコンポーネントを含むカスタム計測を使用している場合

効果的にグループ化されたメトリクス(コントローラー、永続データベースのテーブル、特定の外部サービスなど)ではなく、無限のメトリクスのリストを作成できる状況では、メトリックのグループ化問題が発生する可能性があります。

アプリの監視とパフォーマンス

アプリケーションのパフォーマンスを監視し、向上させるためには、個々の記事が表示される速さよりも、機能の平均的なパフォーマンス(サイト上の記事表示など)を知るほうがずっと有益です。メトリックのグループ化問題を防ぐため、New Relicは、New Relic APM Transactions ページで、通常、その機能(たとえば、/article/view/*)で一つのエントリを表示するようにしています。

このグループ化は、記事の閲覧にどれくらいの時間を費やしたかをよりよく理解し、記事を表示する際のパフォーマンス上の問題を簡単に特定できるようにします。これらの統計が数百、数千のトランザクションに分散されている場合は、傾向や回帰、パフォーマンスの向上を検出することは非常に困難です。

各 New Relic APM エージェントには、コントローラーとフレームワークを検出する個別の方法があります。ほとんどは自動ですが、いくつかの場合には、設定ファイルで設定を有効、無効を切り替える必要があります。New Relic の推奨方法に従うことで、メトリックのグループ化の問題を防ぐこともできます。

関連情報

関連する情報は以下のとおりです。