Node.js エージェントの設定

New Relic の Node.js エージェントはアプリの要件に合わせて調整できます。newrelic.js 設定ファイルを編集するか、環境変数を設定するとエージェントをの設定を変更できます。New Relic UI からいくつかの設定することもできます。設定ファイルは、アプリのルートディレクトリにあります。

license_key の設定が必要です。 New Relic は、デフォルトの My Application ではなく、意味のある名前を app_name に設定してください。

設定方法と優先順位

Node.js エージェントを設定には、エージェント設定ファイル (newrelic.js)を使います。環境変数を使用してほとんどの設定を構成し、サーバー側の設定でいくつかの設定を行うこともできます。

Node.js エージェントの設定の優先順位は以下の通りです。

nodejs-config-order2.png
サーバー側の設定は環境変数を上書きします。環境変数はエージェント設定ファイルよりも優先されます。設定ファイルは、エージェントのデフォルトを上書きします。

各設定方法の説明は以下のとおりです。

設定ファイル(newrelic.js) には、Node.js エージェントの全設定が含まれています。Node.js エージェントをインストールするときは、newrelic.js をアプリのルートディレクトリにコピーしてください。ほとんどの設定はデフォルトで空であり、config.default.js から値を継承します。
newrelic.js のほとんどの設定と同等の環境変数があります。エージェントが Heroku や Microsoft Azure などの PaaS 環境で動作する場合に便利です。Node.js エージェントの環境変数は常に NEW_RELIC_ で始まります。

利用可能な場合、これらの環境変数は、個々の設定オプションで Environ variable として文書化されています。環境変数でのみ設定できるまれに使用される設定が2つあります。

オーナーもしくは管理者

オーナーや管理者は、New Relic UI から設定のいくつか表示したり、変更できます。 ignore_server_configuration 設定を使うと、サーバー側の設定を無視できます。

使用可能な場合、サーバー側の設定の UI ラベルは、個々の設定オプションで、サーバー側のラベルとして文書化されています。

変数のエクスポート

このセクションでは、Node.js エージェント変数を、アプリの newrelic.js 設定ファイルの exports.config = { セクションに通常表示される順序で紹介します。

app_name (強く推奨)
String
デフォルト “My Application”
環境変数 NEW_RELIC_APP_NAME

name New Relic でアプリを特定するために名前を設定できます。例えば、app_name : ['MyNodeApp'] です。一つのアプリに複数の名前を付けるには、名前をカンマ区切りで指定できます。

同じ名前のアプリのデータは New Relic UI でマージされます。そこを注意して、設定してください。New Relic は、混乱や意図しないデータの集約を避けるため、デフォルトの名前をわかりやすい名前に置き換えることを強くお勧めしています。

Azure ユーザーの場合、Node.js エージェントは APP_POOL_ID が設定されている場合はそれを使用します。そのため、Azure ウェブサーバーに対して再度設定する必要なく、指定済みの名前を使用できます。
license_key (必須)
String
デフォルト (なし)
環境変数 NEW_RELIC_LICENSE_KEY

この設定は必須です。New Relic ライセンスキーを設定してください。例: license_key : '40HexadecimalCharacters'

host
String
デフォルト collector.newrelic.com
環境変数 NEW_RELIC_HOST
New Relic サポートで変更を求められない限り、この値を編集しないでください。

New Relic コレクターがインターネットに接続するためのホスト名。例: host : 'collector.newrelic.com'

port
Integer
デフォルト 443
環境変数 NEW_RELIC_PORT
New Relic サポートで変更を求められない限り、この値を編集しないでください。

New Relic コレクターに接続するためのポート番号。例: port : '443'

proxy
String
デフォルト (なし)
環境変数 NEW_RELIC_PROXY_URL

インターネットに接続するプロキシサーバーを指定する URL。例: proxy: 'http://user:pass@10.0.0.1:8000/'

proxy 設定ファイルの設定は、他の設定ファイルのプロキシ設定 (proxy_hostproxy_portproxy_userproxy_pass) が使われている場合は上書きされます。同様に、NEW_RELIC_PROXY_URL 環境変数は、他の環境変数のプロキシ設定 (NEW_RELIC_PROXY_HOSTNEW_RELIC_PROXY_PORTNEW_RELIC_PROXY_USERNEW_RELIC_PROXY_PASS) が使われている場合は上書きされます。
proxy_host
String
デフォルト (なし)
環境変数 NEW_RELIC_PROXY_HOST

インターネットに接続するためのプロキシサーバーのホスト名または IP アドレス。

proxy_port
String
デフォルト (なし)
環境変数 NEW_RELIC_PROXY_PORT

インターネットに接続するためのプロキシサーバーのポート番号。

proxy_user
String
デフォルト (なし)
環境変数 NEW_RELIC_PROXY_USER

プロキシサーバーを認証するためのユーザー名。エージェントは、基本的な HTTP 認証のみをサポートしています。

proxy_pass
String
デフォルト (なし)
環境変数 NEW_RELIC_PROXY_PASS

プロキシサーバーへの認証用のパスワード。エージェントは、基本的な HTTP 認証のみをサポートしています。

ignore_server_configuration
Boolean
デフォルト false
環境変数 NEW_RELIC_IGNORE_SERVER_CONFIGURATION

有効にすると、エージェントはこのアプリのサーバー側の設定を無視します。

agent_enabled
Boolean
デフォルト true
環境変数 NEW_RELIC_ENABLED

エージェントの起動を停止するには、false に設定します。これは、コードをデバッグするときにエージェントを一時的に無効にする必要がある場合に便利です。エージェントが計測の起動準備や、設定作業は行います。エージェントの起動や New Relic サーバーへの接続は行いません。

apdex_t
Number
デフォルト 0.100
環境変数 NEW_RELIC_APDEX
Server-side label Apdex T

アプリのデフォルトの Apdex T を秒単位で設定します。一般的に、これはサーバー側の設定で設定する必要があります。100 ミリ秒のデフォルトは、標準の New Relic Apdex 設定よりも低くい値ですが、Node.js アプリは他のアプリに比べて待ち時間に敏感です。transaction_threshold も併せてご覧ください。

capture_params
Boolean
デフォルト false
環境変数 NEW_RELIC_CAPTURE_PARAMS

有効にすると、エージェントはトランザクショントレースエラートレースなどのリクエストパラメーターを取得します。これは機密データを渡す場合があるため、デフォルトではfalse となっています。sslignored_params も併せてご覧ください。

ignored_params
String
デフォルト (なし)
環境変数 NEW_RELIC_IGNORED_PARAMS

トランザクショントレースエラートレース内のリクエスト URL からキャプチャされるパラメーターのうちの無視得するパラメータ名のカンマ区切りのリスト。パラメーターに、アプリケーションから送信したくない重要な値が含まれている場合などに利用します。デフォルトは ignored_params : [] (つまり空)です。

ssl
Boolean
デフォルト true
環境変数 NEW_RELIC_USE_SSL

有効にすると、エージェントは SSL を使用してNew Relic コレクターに接続します。high_security を有効にするにはこの値が true である必要があります。

デフォルトでは、エージェントはハイセキュリティ v1 に準拠しています。ただし、ssl を無効にしてcapture_params を有効にすると、エージェントはハイセキュリティモードを終了し、エージェントはハイセキュリティのアカウントに接続できなくなります。ハイセキュリティモードが失敗すると、ログファイルに ERROR Account Security Violation などのエラーメッセージが表示されます。
certificates
文字列配列
デフォルト (なし)

SSL 接続のために信頼する証明書。PEM 形式の文字列として指定します。HTTPS プロキシへの接続と New Relic への接続の両方に影響します。

以下のように、ファイルから証明書を読み取るようにエージェントを設定することもできます。

certificates: [ fs.readFileSync('myca.crt', {encoding: 'utf8'}) ]

high_security
Boolean
デフォルト false
環境変数 NEW_RELIC_HIGH_SECURITY

true に設定すると、ハイセキュリティ v2が有効になります。また、ssl
設定を有効にして、UI でハイセキュリティを有効にする必要があります。

browser_monitoring.enable
Boolean
デフォルト true
環境変数 NEW_RELIC_BROWSER_MONITOR_ENABLE
Server-side label Enable browser monitoring?

ページ読み込みタイミング用の JavaScript ヘッダーを生成します(リアルユーザー監視や RUM とも呼ばれます)。デフォルトは、trueです。しかし、New Relic Browser を有効にしていない限り、エージェントは New Relic Browser JavaScript を挿入しません。New Relic Browser を有効にしてブラウザのタイミングヘッダーを追加した場合でも、これを false に設定することで、アプリ用の Browser を無効にできます。

labels
Object or string
デフォルト (なし)
環境変数 NEW_RELIC_LABELS

ラベルやカテゴリを使用してアプリを整理します。ラベルをオブジェクトやコロンで区切ったパートの文字列をセミコロンで区切ります。(例: Server:One;Data Center:Primary)

ログ用の変数

このセクションでは、Node.js のエージェント変数を、アプリの newrelic.js 設定ファイルの logging : { セクションに通常表示される順序で紹介します。

level
String
デフォルト info
環境変数 NEW_RELIC_LOG_LEVEL

エージェントログに記録されるログの詳細レベルを指定します。このモジュールは bunyan を使用しています。最も大きい粒度から、詳細な順に、fatalerrorwarninfodebugtrace となります。

New Relic のサポートから使用を要求されない限り、debugtrace のログレベルを使用しないでください。これらのレベルを指定したログ収集は、過剰なオーバーヘッドが発生することがあります。ほとんどの場合、info で十分です。
filepath
String
デフォルト process.cwd() plus newrelic_agent.log
環境変数 NEW_RELIC_LOG

ファイル名を含む New Relic エージェントログへの完全なパスです。デフォルトは filepath : require('path').join(process.cwd(), 'newrelic_agent.log')。このファイルを作成できない場合、エージェントはプロセスをシャットダウンします。エージェントは、親の Node.js エージェントプロセスと同じ権限を持つログファイルを作成します。

すべてのログを stdout に書き込むには、この値を stdout に設定します。すべてのログを stderr に書き込むには、stderr に設定します。

監査用ログ

このセクションでは、Node.js エージェント変数を、アプリの newrelic.js 設定ファイルの audit_log : { セクションに通常表示される順序で紹介します。

enabled
Boolean
デフォルト false
環境変数 NEW_RELIC_AUDIT_LOG_ENABLED

有効にすると、エージェントはコレクターに送信したペイロードを記録します。ログレベルが最低レベルに設定されていても、このデータはメインログファイルに含まれます。

endpoints
Array
デフォルト 空配列 (すべてのタイプを含む)
環境変数 NEW_RELIC_AUDIT_LOG_ENDPOINTS

エージェントはいくつかの異なタイプタイプのデータを別々のペイロードでコレクターに送信します。デフォルトでは、すべてログファイルに含まます。このオプションを使うと、特定のタイプのデータのみにログを制限できます。

有効な値は次のとおりです。

  • metric_data
  • error_data
  • analytic_event_data
  • custom_event_data
  • error_event_data
  • transaction_sample_data
  • sql_trace_data
  • connect
  • agent_settings
  • get_redirect_host
  • shutdown

エラーコレクター用変数

このセクションでは、Node.js エージェント変数を、アプリの newrelic.js 設定ファイルの error_collector : { セクションに通常表示される順序で紹介します。

enabled
Boolean
デフォルト true
環境変数 NEW_RELIC_ERROR_COLLECTOR_ENABLED
Server-side label Enable error collection?

有効にすると、エージェントはアプリからエラートレースを収集します。

ignore_status_codes
Array
デフォルト 404
環境変数 NEW_RELIC_ERROR_COLLECTOR_IGNORE_ERROR_CODES
Server-side label Ignore these status codes

エラーコレクターが無視する HTTP ステータスコードのカンマ区切りリスト。

newrelic.noticeError から送信されたエラーは、この設定値に従いません。

トランザクショントレース用変数

エージェントは、リクエストをトランザクションにグループ化します。トランザクションは以下の目的に使用されます。

  • アプリが時間を費やす場所(トランザクションの内訳)を視覚化する。
  • 遅いリクエストを特定する。
  • メトリクスをグループ化する。
  • データベースのパフォーマンスが低下した場合などの問題を特定する。

このセクションでは、Node.js エージェント変数を、アプリの newrelic.js 設定ファイルの transaction_tracer : { セクションに通常表示される順序で紹介します。

トランザクション名の最後に括弧 [suffix] を使わないでください。New Relic は自動的に名前から括弧を取り除きます。代わりに、必要に応じて丸括弧 (suffix) やその他の記号を使用してください。
enabled
Boolean
デフォルト true
環境変数 NEW_RELIC_TRACER_ENABLED
Server-side label Enable transaction tracing?

有効な場合、エージェントは遅いトランザクショントレースを収集します。

transaction_threshold
Integer または apdex_f
デフォルト apdex_f
環境変数 NEW_RELIC_TRACER_THRESHOLD
Server-side label Threshold

トランザクショントレースの対象となるウェブトランザクションの応答時間(単位:秒)の閾値。デフォルト値は apdex_f です。この設定は、アプリケーションの Apdex T の4倍をトレースの閾値に設定します。特定の時間をミリ秒単位で指定することもできます。

例: apdex_f を設定した場合の閾値

apdex_t のデフォルトは100ミリ秒です。トランザクションの閾値が apdex_f に設定されている場合、「遅い」トランザクションは400ミリ秒です。

top_n
Integer
デフォルト 20
環境変数 NEW_RELIC_TRACER_TOP_N

トランザクショントレースの対象となる最大リクエスト数を定義します。

トランザクションはリクエストに基づいて名前が付けられています。これらの名前でグループ化された「最も遅いトランザクショントップ n」を決めるために、top_n を利用しています。新しいトレースがその名前の直前の最も遅いトレースより遅い場合、このモジュールは、記録されたトレースを新しいトレースで置き換えます。この設定のデフォルト値は top_n : 20 です。これは、Transactions ページのデフォルト値も、最も遅いトランザクション数が20であるためです。

Node.js エージェントは、起動後最初の収穫サイクルで少なくとも5つの別々の遅いトランザクションを収集します。また、過去5回の収穫サイクルで遅いトランザクションがキャプチャされていない場合は、別のトランザクションをリセットして取り込みます。これにより、アプリのリクエストパスに関するより詳細な情報を表示することができます。よっってその収穫サイクルについて、最も遅いリクエストが注目されないということがありえます。

直近の1分間で一番遅いトランザクションを記録したい場合は、top_n : 0top_n : 1 を設定します。その場合は、ある一つの非常に遅いルートがトランザクショントレースを占有することになります。
record_sql
String (off, obfuscated, or raw)
デフォルト off
環境変数 NEW_RELIC_RECORD_SQL

この設定は、遅いクエリーとトランザクショントレースの record_sql の設定の両方に影響します。設定できる値は次の3つです。offobfuscatedraw

off に設定すると、遅いクエリーは捕捉されず、バックトレースや SQL もトランザクショントレースに含まれません。raw [未処理]や obfuscated [難読化]に設定されている場合、エージェントは未処理のまま、や難読化した SQL と遅いクエリーのサンプルをコレクターに送信します。エージェントは、slow_sql.enabled が設定されている場合など、他の基準が満たされたときに SQL を送信することもあります。

explain_threshold
Integer
デフォルト 500
環境変数 NEW_RELIC_EXPLAIN_THRESHOLD

トランザクションが遅いクエリートランザクショントレースに適格であることを満たす最短のクエリー長(単位:ミリ秒)。

デバッグ用変数

このセクションでは、Node.js エージェント変数を、アプリの newrelic.js 設定ファイルの debug : { セクションに通常表示される順序で紹介します。

internal_metrics
Boolean
デフォルト false
環境変数 NEW_RELIC_DEBUG_METRICS
New Relic サポートから変更を求められない限り、この値を編集しないでください。

有効にすると、エージェントはパフォーマンスメトリクスとともに New Relic によるサポートに必要なメトリクスと診断データを収集します。

tracer_tracing
Boolean
デフォルト false
環境変数 NEW_RELIC_DEBUG_TRACER
New Relic サポートから変更を求められない限り、この値を編集しないでください。

有効にすると、エージェントはトランザクショントレーサ自体の内部操作をトレースします。ログレベルtrace に設定する必要があります。

ルール用変数

このセクションでは、Node.js エージェント変数を、アプリの newrelic.js 設定ファイルの <rules : { セクションに通常表示される順序で紹介します。

name
Strings または正規表現
デフォルト (なし)
環境変数 NEW_RELIC_NAMING_RULES

受信リクエストの URL を照合し、関連する New Relic トランザクションの名前を付けるためのコンマ区切りのルールのリスト。{pattern: 'STRING_OR_REGEX', name : 'NAME'} の形式で定義します。両方のパラメータが必要です。文字列を値に設定する場合は、制御文字をエスケープする必要があります。正規表現を利用する場合は、制御文字をエスケープする必要はありません。追加の属性は無視されます。

正規表現は Javascript 形式のキャプチャグループをサポートし、名前は $1 形式の置換文字列を使います。正規表現は、最初に一致する結果のみを検索します。その後の一致は無視されます。詳しくは、Node.js のトランザクションネーミング API をご覧ください。

code>NEW_RELIC_NAMING_RULES 環境変数の場合は以下のように、コンマ区切りの JSON オブジェクトリテラルとしてルールを渡します。

NEW_RELIC_NAMING_RULES='{"pattern":"^t","name":"u"},{"pattern":"^u","name":"t"}'

ignore
Strings または正規表現
デフォルト socket.io のロングポーリングのリクエスト に一致する正規表現 (“^\/socket\.io\/.*\/xhr-polling/”)
環境変数 NEW_RELIC_IGNORING_RULES

エージェントが無視するリクエスト URL のリストを定義します。パターンを文字列または正規表現で指定できます。

enforce_backstop
Boolean
デフォルト true
環境変数 NEW_RELIC_ENFORCE_BACKSTOP
メトリックのグループ化問題を理解していない場合は、この設定を変更しないでください。

有効にすると、エージェントは(API、ルール、メトリックの正規化ルール)の命名ロジックの影響を受けないトランザクションの名前を NormalizedUri/* に変更します。false に設定すると、エージェントはトランザクション名を Uri/path/to/resource に設定します。

トランザクションイベント用変数

このセクションでは、Node.js エージェント変数を、アプリの newrelic.js 設定ファイルの transaction_events : { セクションに通常表示される順序で紹介します。

現在、トランザクションイベント用の環境変数はありません。
enabled
Boolean
デフォルト true

有効にすると、エージェントはトランザクションイベントを New Relic Insights に送信します。このイベントデータには、トランザクションタイミング、トランザクション名やカスタムパラメータが含まれます。無効になっている場合、エージェントはこのデータを収集したり Insights に送信しません。

max_samples_per_minute
Integer
デフォルト 10000

エージェントが1分あたりに収集するイベントの最大数を指定します。この数より多い数となる場合、エージェントは統計的サンプリングで収集します。

max_samples_stored
Integer
デフォルト 20000

エージェントが New Relic コレクターと通信できない場合に格納するイベントの最大数を指定します。前回の収穫サイクルの値が次の収穫サイクルにマージされます。その際の最大数はこの設定値となります。この数が max_samples_per_minute より大きい値としてください。例えば、2倍などに設定してください。この値を増やす前に、メモリオーバーヘッドを考慮してください。

Insights カスタムイベント用の変数

このセクションでは、Node.js エージェント変数を、アプリの newrelic.js 設定ファイルの custom_insights_events : { セクションに通常表示される順序で紹介します。

現在、Insights カスタムイベントの環境変数はありません。
enabled
Boolean
デフォルト true

有効にすると、エージェントは recordCustomEvent() で記録した Insights カスタムイベントを New Relic Insights に送信します。無効の場合、エージェントはこのデータを収集したり、New Relic Insights に送信しません。

max_samples_stored
Integer
デフォルト 1000

エージェントが1分間に収集するカスタムイベントの最大数を定義します。カスタムイベントの数がこの制限を超えると、エージェントは統計的なサンプリングで収集します。

この制限を増やすとメモリ使用量が増加することに注意してください。

スロークエリー用変数

このセクションでは、Node.js エージェント変数を、アプリの newrelic.js 設定ファイルの slow_sql : { セクションに通常表示される順序で紹介します。この設定は、スロークエリーの動作を制御しますが、トランザクショントレースの SQL ノードには影響を与えません。

enabled
Boolean
デフォルト false
環境変数 NEW_RELIC_SLOW_SQL_ENABLED

有効にすると、エージェントはスロークエリーの詳細情報を収集します。

max_samples
Integer
デフォルト 10
環境変数 NEW_RELIC_MAX_SQL_SAMPLES

エージェントが1分間に収集する低速クエリの最大数を定義します。エージェントは、制限に達すると、その後のクエリーは破棄します。

この制限を増やすとメモリ使用量が増加することに注意してください。

カスタムホスト名用の変数

このセクションでは、Node.js エージェント変数を、アプリの newrelic.js 設定ファイルの process_host : { セクションに通常表示される順序で紹介します。この設定は、New Relic APM UI に表示されるホスト名の動作を制御します。

display_name
255 バイト以下の文字列
デフォルト (なし)
環境変数 NEW_RELIC_PROCESS_HOST_DISPLAY_NAME

New Relic UI に表示されるカスタムホスト名を指定します。このフィールドを設定しないと、New Relic は引き続きデフォルトである os.hostname() を呼び出して見つかったホスト名を使用します。

ipv_preference
Integer (4 または 6)
デフォルト 4
環境変数 NEW_RELIC_IPV_PREFERENCE

デフォルトのホスト名設定を使用すると、New Relicは os.hostname() によってホスト名を探します。この呼び出しに失敗すると、New Relic はホストの IP を名前として使います。ipv_preference: 4 または ipv_preference: 6 を設定すると、表示する IP アドレスのタイプ(IPv4 や IPv6) を選択できます。

環境変数のオーバーライド

このセクションでは、環境変数のみで利用できる2つの構成オプションを紹介します。このオーバーライドは、ほとんどの設定では使用されません。

NEW_RELIC_HOME
String
デフォルト (なし)
環境変数としてのみ使用できます。設定ファイルでは設定できません。

newrelic.js を含むディレクトリへのパス。

NEW_RELIC_NO_CONFIG_FILE
Boolean
デフォルト False
環境変数としてのみ使用できます。設定ファイルでは設定できません。
環境変数は newrelic.js の設定をオーバーライドするため、通常は使用されません。そのため、ほとんどの設定は newrelic.js に依存します。この設定を使用するには、環境変数を使って、すべてのキー設定で構成する必要があります。また、一部のログメッセージは設定ファイルが存在することを前提としています。

エージェントが newrelic.js の設定を読み取るのを防止します。

データストアトレーサー用の変数

このセクションでは、アプリの newrelic.js 設定ファイルの datastore_tracer セクションに通常表示される順序で、Node.js エージェント変数を紹介します。この設定は、データストアインスタンス用のメトリクスの収集動作を制御します。

instance_reporting.enabled
Boolean
デフォルト true

有効にすると、エージェントは一部のデータベースドライバーのデータストアインスタンス用メトリクス(ホストやポートなど)を収集します。これらは、スロークエリートレースやトランザクショントレースで報告されます。

database_name_reporting.enabled
Boolean
デフォルト true

有効にすると、エージェントは一部のデータベースドライバーのスロークエリートレースやトランザクショントレースでデータベース名を収集します。

関連情報

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