New RelicのTransaction attributesにリクエストパラメータを出す方法

通常ではNew RelicのTransaction attributesには、リクエストパラメータは表示されません。
リクエストパラメータを表示する場合は下記のように設定ファイルに追加する必要があります。

Javaの場合(newrelic.yaml)
attributes:
  include:
    - "request.parameters.*"
Node.jsの場合(newrelic.js)
exports.config = {
  // その他の設定は省略
  capture_params: 'true',
  // その他の設定は省略
}

パスワード入力等があり、New Relicに送りたくないパラメータがある場合は、
ignored_params等のオプションで除外して上げる必要があります。

Node.jsのpathが全て/になってしまう問題の解決

Node.jsにNew Relicをインストールして、いざリクエストの中身を見てみると全ての

リクエストが / に集約されてしまい、全然解析ができないという状態になってしましました。

 

その場合、下記のようにリクエストに名前をつけてあげることにより、リクエストパス毎にNew RelicのTransactionがわかれ解決しました。

>|javascript|

var nr = require('newrelic');

// 省略)

nr.setControllerName(req.url);

||<

 

New Relicをnode.jsサーバ1台だけに入れる方法

node.jsのパフォーマンス監視のため、New Relicを導入する際に

全サーバに入れたくない場合の方法。

Javaであれば、New Relicのjarファイルをコピーしなければいいだけなのですが、

node.jsの場合はソースコードに直接下記のように記載しなければいけないため、

New Relicのnode-moduleが存在しないサーバではエラーになってしまいます。

また、存在している場合はNew Relicが読み込まれてしまいます。

var nr = require('newrelic');

リリース時にソースコードを書き換えるのも嫌だったので、下記のように、
node-moduleが存在する場合のみ、読み込むようにした結果、
1台だけにNew Relicを適用することができました。
もちろんNew Relicを適用したくないサーバでは、node-moduleをインストールしては駄目です。

try {
  var nr = require('newrelic');
  console.log('load New Relic');
} catch (ex) {
  console.log('skip New Relic');
  var nr;
}