へろへろもへじ

(ブログタイトル募集中)

【NewRelic,PHP】NewRelicのWebTransactionを任意の名前で計測する

最近、NewRelicを導入した際に、ちょっとハマった点をメモしておきます。
PHPアプリケーション用にNewRelicの環境が構築済みの前提で話を進めます。

フロントコントローラパターンを利用した以下の様なアプリケーションがあるとします。

  • エントリポイントはindex.php
  • action=XXXXXというリクエストパラメータを元にルーティングする

上記のアプリケーションに対し、何も考えずにNewRelicを導入すると、以下のような3リクエストは同一のWebTransactionとしてカウントされてしまいます。

上記リクエストを別のWebTransactionとしてカウントさせるために、NewRelicから提供されている(newrelic.so)、以下の関数をエントリポイントから呼び出すことで解消できます。

newrelic_background_job(false);
newrelic_name_transaction(任意のトランザクション名);

これで、任意でつけたトランザクション名で別々のWebTransactionとしてカウントされます。

また補足ですが、newrelic.soが読み込まれていない環境(例えば...テスト環境ではNewRelic導入してるけど、本番環境では導入してない等)でもワンソースで動作させる場合、以下の判定を加えるとよいでしょう。

if (extension_loaded('newrelic')) {
    newrelic_background_job(false);
    newrelic_name_transaction(任意のトランザクション名);
}

参考サイト