2016/12/11

New Relic APM: SQL レベルまで見えるトランザクションの定義とその設定

New Relic アドベントカレンダー11日目です。今回は、New Relic APM (アプリケーションパフォーマンス監視) の設定についてです。

New Relic APM で利用したい機能の一つが、発行された SQL が見えることだと思います。SQL を見るには、そのトランザクションがトランザクショントレース(ある時点のトランザクション単体)として、収集されている必要があります。

トランザクションには、収集されるトランザクションとされないトランザクションがあります。基本的に、遅いトランザクションがトランザクショントレースとして収集されます。では、遅いとはどの程度のことを指すのでしょうか?

それは、設定値で決まります。デフォルトの設定値(閾値)は2秒です。つまり、2秒以上かかったトランザクションはトランザクショントレースとして収集されます。

設定項目と設定方法

では、この値を変えたい場合はどうすればいいでしょうか? ここでは、どのような設定があり、どのように設定するかについて解説していきます。

まず、以下のようにして、設定ページにアクセスします。
アプリを選択している状態で、画面左のサイドメニューの一番下の項目 “Settings” の “Application” を選択します。
“Application settings for <アプリ名>” というページが表示されます。

設定項目

このページに表示される項目が、APM の画面で設定できる各種設定項目となります。

問題のトランザクショントレースとして収集される値の閾値は、”Transaction tracing” の “Threshold” となります。

apm_setting_01

その他にも、以下のような設定項目があります。

  • Record SQL? : SQL の記録方法。
    • Obfuscated : 値を “?” に置き換える方法(デフォルト)
    • Raw : 生 SQL を送信
    • Off : 記録しない。を指定できます。
  • Stack trace threshold: SQL 呼び出しの(以下のような)スタックトレースを一緒に保存するまでの閾値となる秒数。デフォルトは 0.5 秒。つまり、0.5 秒以上の SQL クエリだとスタックトレースも収集し、見ることができます。
  • Query plan threshold: EXPLAIN PLAN を収集する閾値となる秒数。デフォルトは、0.5秒。つまり、0.5秒以上のクエリの場合に、EXPLAIN PLAN も表示します。

Query Plan やスタックトレースが表示される場合の Trace Details は以下のようになります。

apm_trace_details_sql

設定方法

上記で紹介した設定を行う方法は2つあります。(正確には4つですが、メインは2つだと思うのでここでは分かりやすく2つとしています)

  1. 設定ファイル
  2. 上記の UI (PHP, GO は対象外)

設定ファイルのほうは、各エージェントの設定ファイル(newrelic.yml など)で設定します。設定ファイルを変更することで、設定を変更できます。

ただし、実行中で簡単に設定を変更できない場合は、UI から変更することができます。UI で設定を変更するには、設定画面の画面左にある “Move configuration to New Relic” ボタンを押すと UI 上で設定を編集できるようになります。

UI 上で変更したい場合は、「エージェントの設定」に詳しく書いてありますので、そちらもご覧ください。

まとめ

デフォルトの閾値がアプリの要件にあっていない場合は、最適な値を設定することで、効率良くパフォーマンス改善を行うことができるようになります。ただし、あまりゆるすぎる閾値(例えば、0.01秒など)を設定すると、収集するトランザクショントレースが多くなりすぎ、アプリ自体のオーバーヘッドが高くなる可能性もありますので、そこら辺も気にして設定ください。

Qiita で New Relic Advent Calendar 2017 いろいろ書きました。特に、New Relic APM の入門的な連載を書きましたので、是非、ご覧ください。

New Relic 公式の日本 New Relic ユーザー会を立ち上げました。ワークショップの情報など日本のお客様向けに情報を発信していきますので、是非、参加ください。

過去記事

2018/09/13

翻訳: FutureStack18: New Relic 開発者向けプログラム-オープン化、シンプル化、活発化への道

今年も始まりました。New Relic の年次カンファレンス FutureStack 18。
この記事では、Elixir 用の New Relic APM エージェントの発表とデベロッパープログラムの発表がされています。

続きを読む

2018/08/27

翻訳: New Relic APM 新機能: 分散トレーシング

New Relic APM にDistributed Tracing (分散トレーシング)機能が追加されました。メニュー単位で機能が追加されたのはだいぶなかったのではないかと思います。マイクロサービスにおけるサービスをまたがったデータの流れを可視化できる機能のようです。是非、チェックしてみてください。

続きを読む

2018/05/18

SREcon18 と Rails デベロッパー向けアンケート結果の紹介

SRECon America カンファレンスにおけるアンケートの記事と Rails デベロッパーに対するアンケートの記事という2つの異なったレイヤーのアンケートに関する記事を見つけたので、ざっくり紹介します。違った視点での傾向が見れてなかなか面白いです。

続きを読む

2018/05/11

AWS Summit Tokyo を中心に直近の New Relic 関連イベントのご紹介

5/30 から始まる AWS summit Tokyo に参加するということで、海外から New Relic スタッフが来日し、イベント等を行います。是非、この機会に New Relic に興味のある人は参加してみてはいかがでしょうか。(基本、日本人スタッフいるので、日本語でも大丈夫なはず)

続きを読む

2018/03/17

翻訳: New Relic Browser JavaScript Error Analytics ベータ版 – エラーの早期発見、修正に役立つ

New Relic Browser の JS エラー機能が新しくなるようです (現在ベータ版)。APM で採用されているエラープロファイルが JS エラーにも対応したようです。これによって、エラーが起きている傾向が分析できるようになり、今後の JS のエラーが起きる前に対策が取りやすくなります。既存の PRO ユーザーはベータ版が使えるようなので、是非、使ってみてください。

続きを読む

 もっと見る