PHPエージェントの設定

PHPエージェントには、レポートされたデータのタイプと量を微調整するための設定がいくつかあります。大半のユーザーにとっては、デフォルトの値で最善のオーバーヘッドと使用しやすさが実現されますが、特定のニーズにより設定を変更することもできます。

INI設定の変更後、必ずウェブサーバーを再起動してください。再起動しないと、すぐに有効になりません

優先度の設定

PHPエージェントが設定で従う優先度が、次の図に簡単に示されています。サーバー側の設定には適用されません。PHPエージェントを使用してアプリのUIで変更できる唯一の値は、アプリのエイリアスとApdex-T値です。

php-config-order.png
New RelicのPHPエージェントを使用すると、API設定はディレクトリごとの設定を上書きします。ディレクトリごとの設定は、php.iniファイル設定を上書きします。サーバー側の設定には適用されません。

設定ファイルの変数

インストールの間、newrelic-installスクリプトは、作成された設定ファイルまたは編集が必要なファイルのリストについての情報を提供します。デフォルトでは、newrelic.iniという名前の設定ファイルを作成しようとします。

場合によっては、設定オプションをphp.iniファイルに追加するよう指示されます。必要な場合にのみそうしてください。どのファイルを編集する必要があるかは、PHPの特定のバージョン(1つまたは複数)が設定されているかどうかで異なります。

2つの最も一般的な設定は次のとおりです:

  • 単一のnewrelic.iniファイルを使用する。特別のオプションなしでPHPを自分でインストールまたはコンパイルした場合、これが通常デフォルトとなります。
  • すべての.iniファイルについて所定のディレクトリをスキャンする。

どのファイルを編集するか分からない場合:

  • コマンドラインから、php -iの出力を見直します。
  • ブラウザで、次のスクリプトを含むページの出力を見直します:

    <?php phpinfo(); ?>
  • newrelic.iniファイルが表示されている場合、それを使用します。

変数の範囲

newrelic.iniファイルの各変数には、定義された範囲があります。範囲は、設定をどこで確立または変更できるかを制御します。

New Relic設定でサポートされた2つの範囲は次のとおりです:

  • SYSTEM: 値はグローバルのnewrelic.iniファイルでグローバルに設定されます。
  • PERDIR: 値はディレクトリごとに設定されます。

それぞれ、より一般的なレベルで設定することもできます。それぞれの有効なロケーションは次のとおりです:

次のものについて設定できます: SYSTEM PERDIR
グローバルなnewrelic.iniファイルで設定します。 [確認] [確認]
ディレクトリごとに設定します。 [確認]

New Relic設定ではini_set()を使用できません。

変数のタイプ

newrelic.iniファイルの各変数には、定義されたタイプがあります。タイプは、使用する値の構文を指定します。

変数のタイプ フォーマットと内容
文字列

文字列の値には、英数字とピリオドを含めることができます。値は引用符で区切られます。

ブール値

論理的な真偽設定。有効な値は次のとおりです:

  • trueまたは有効な場合:ontrue、数字の1
  • falseまたは無効な場合: offfalse、数字の0
数値 数値には、数字に加え、浮動小数を表すピリオドのみを含めることができます。別途記載がある場合を除き、すべての数字は浮動小数ではなく整数です。
期間

期間を表す、引用符で区切られた文字列の値。文字フラグを使用して、時間コンポーネントを区切ります。フラグがない場合、時間はミリ秒となります。

  • w= 週
  • d= 日
  • h= 時間
  • m= 分
  • s= 秒
  • ms= ミリ秒
  • us= マイクロ秒

期間の例:

  • "1w3d23h10m"= 1週、3日、23時間、10分
  • "5h30m"= 5時間30分
  • "500"= 500ミリ秒

一般構成設定

この設定は、newrelic.iniファイルで使用できます。

newrelic.appname (強く推奨)
範囲: PERDIR
種類: 文字列(引用符を使用)
デフォルト: "PHP Application"

この設定オプションは、APMでデータがレポートされるアプリケーションの名前を設定します。当社では、混同や非意図的なデータの集計を避けるために、デフォルト名を分かりやすい名前に置き換えることを強く推奨しています。同じ名前のすべてのアプリケーションのデータはNew Relicにマージされるため、この設定は慎重に行ってください。

ディレクトリごとの設定を含むすべてのアプリケーション命名オプションについては、PHPアプリケーションの命名をご覧ください。

設定の値は、最大で3つのアプリケーション名のセミコロン区切りのリストです。リストの最初は、主たるアプリケーション名となります。各アカウントにつき一意でなければなりません。アプリケーション名は、キャッシュのキーとして使用します。アプリに複数の名前を使用する場合、New Relicはキャッシュに最初の名前のみを使用します。よって、各アプリケーション名は、最初の要素として一度しか表示されません。

キャッシュの例

newrelic.appname="App1;App2" を設定し、その後コードでnewrelic.appname="App1;App3"を設定すると、2番目は動作しなくなります。キャッシュのため、App1App2にレポートします。

アプリケーション名の重複が必要な場合、共通のアプリケーション名を第二または第三の位置で設定します。例えば:newrelic.appname="App2;App1" and newrelic.appname="App3;App1". 一例として、これはアプリケーションのスーパーセットを追跡する場合に有用です。

newrelic.capture_params
範囲: PERDIR
種類: ブール値
デフォルト: false

この設定は非推奨となっており、想定どおりに動作しない場合があります。代わりに、属性プロパティを使用します。

この値をプログラミングで設定するには、newrelic_capture_params() API関数を使用します。

機密情報をURLで直接渡す場合、これを無効にしてください。

trueに設定すると、トランザクショントレースでURLを介してPHPスクリプトに渡されたパラメーターの記録が有効になります(URLの?の後のすべて)。これは、トランザクショントレースを表示すると、パラメータードロップダウンの下に表示されます。

newrelic.framework
範囲: PERDIR
種類: 文字列(引用符を使用)
デフォルト: (自動検出)

New Relic PHPエージェントは、サポートしているフレームワークを自動的に検出しますが、実験的な新バージョンを使用している、またはフレームワークをカスタマイズしている場合は、問題が発生することがあります。この設定では、エージェントに指定のフレームワークに従いトランザクションに名前を付けるよう指示するのではなく、フレームワークの自動検知が無効になります。

"no_framework"を指定すると、フレームワーク関連のトランザクションのネーミングがすべて無効になります。

次の値のいずれかを適宜しようします:

  • "cakephp"
  • "codeigniter"
  • "drupal"(Drupal 6および7について)
  • "drupal8"
  • "joomla"
  • "kohana"
  • "laravel"
  • "magento"
  • "magento2"
  • "mediawiki"
  • "silex"
  • "symfony1"
  • "symfony2" (Symfony 2および3について)
  • "symfony4"
  • "wordpress"
  • "yii"
  • "zend"
  • "zend2"(Zend Framework 2および3について)
  • "no_framework" (1つ検出された場合でもフレームワークなしを強制実行)

フレームワークの自動検知に失敗した場合、このコマンドも失敗します。

newrelic.ignored_params
範囲: PERDIR
種類: 文字列(引用符を使用)
デフォルト: ""

この設定は非推奨となっており、想定どおりに動作しない場合があります。代わりに、属性プロパティを使用します。

newrelic.ignored_params 設定を使用して、New Relic Serversに送信されたパラメーターのリストから除外されるパラメーター名のカンマ区切りのリストを指定します。引用符で文字列の値を囲います。

newrelic.capture_paramsでパラメーターのキャプチャを有効にした場合、New Relicによってキャプチャされたくない、またはトランザクションのトレースに表示したくない機密性の高いユーザーデータを持つパラメーターがある可能性がります。これを使用して、このデータの記録をブロックします。

newrelic.license (必須)
範囲: PERDIR
種類: 文字列(引用符を使用)
デフォルト: ""
メモ: エージェントバージョン3.0で導入

使用するNew Relicライセンスキーを設定します。マルチテナントシステムでは、これはディレクトリごとに設定できます。

以前のバージョンから3.0以上にアップグレードすると、ライセンスは(理由を説明するコメントとともに)デーモン設定ファイルから削除され、ファイル/etc/newrelic/upgrade_please.keyに保存されます。そのファイルからライセンスをコピーし、newrelic.iniファイルで設定します。upgrade_please.keyファイルを削除します。

newrelic.loglevel
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: "info"

ログファイルに送信されたメッセージの詳細度を設定します。詳細の度合いが低い順の、取り得る値は次のとおりです:

  • error
  • warning
  • info
  • verbose
  • debug
  • verbosedebug

エージェントの問題をNew Relicテクニカルサポートに報告する場合、verbosedebugが最も有用な設定ですが、これにより多くの情報が非常に迅速に生成されることがあるため、発生している問題の再現にかかる時間以上に、verbosedebugレベルでエージェントを保存しないようにしてください

エージェントの問題をNew Relicテクニカルサポートに報告する際、これをカスタムレベルに設定し、特定のサブシステムについてのみデバッグを有効にするよう求められる場合があります。カスタムレベルは本ドキュメントの範囲を超えています。

newrelic.transaction_tracer.detail
範囲: PERDIR
種類: 数値
デフォルト: 1
メモ: これは以前はnewrelic.transaction_tracer.top100でした。

トランザクショントレースで詳細のレベルを設定します:

  • 1に設定すると、すべてのサーバーの呼び出しがトレースされます。
  • 0に設定すると、トレースにはNew Relicにより内部でインストゥルメントされた呼び出しと、newrelic.transaction_tracer.customを使用してユーザーが定義した呼び出しのみが含まれます。

デフォルトのレベル1は、パフォーマンスに影響を与えます。パフォーマンスを改善する必要がある場合、詳細のレベルを0に設定するようにしてください。

すべてのサーバーの呼び出しのトレースを行っていない場合、トランザクショントレースの時間のブロックにはインストゥルメントされていない時間とラベルが付けられ、特定の関数(エージェントにより内部で定義)のみがインストゥルメントされます。すべての呼び出しをレポートする場合でも、トレースにインストゥルメントされない時間がある場合があります。

newrelic.high_security
範囲: SYSTEM
種類: ブール値
デフォルト: false

すべてのアプリケーションについて高いセキュリティを有効にします。高いセキュリティをtrueに設定すると、次の動作が有効になります:

  • newrelic-daemonが安全な接続(HTTPS)を使用している場合を除き、データはNew Relicに送信されません。PHPプロセスがnewrelic-daemonを作成する場合、newrelic.daemon.sslの値にかかわらずHTTPSを使用するよう設定されます。
  • 行のクエリ文字列は、newrelic.transaction_tracer.record_sqlの値にかかわらず収集されることはありません。
  • リクエスト属性は、newrelic.attributes設定にかかわらず取得されることはありません。
  • newrelic_add_custom_parameterおよびnewrelic_set_user_attributes API関数には影響はなく、これらの関数はfalseを返します。
  • newrelic_record_custom_event API関数はイベントをNew Relicに送信しません。
  • エージェントはエラーから例外メッセージを除去します。

newrelic.high_security設定を変更する場合、APMユーザーインタフェースでセキュリティ設定変更する必要があります。2つの設定が一致しない場合、データは収集されません。詳細については、高いセキュリティをご覧ください。

newrelic.labels
範囲: PERDIR
種類: 文字列(引用符を使用)
デフォルト: ""

ラベル名と値を設定し、アプリケーションと関連付けます。リストは、コロン区切りの名前と値のペアからなる、セミコロン区切りのリストです。

ラベルの例

"Server:One;Data Center:Primary"
newrelic.process_host.display_name
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: ""

APM UIに表示されるホスト名を設定します。設定すると、エージェントが自動的に取得するデフォルトのホスト名を上書きします。

デーモンの .ini設定

この設定の値は、デーモン起動を制御します。デーモンの起動が必要なことをエージェントが検知すると、このオプションが、そのデーモンについて適切なコマンドラインオプションに変換されます。

これらすべての設定は、newrelic.cfgファイルの設定を反映します。すべての .ini設定を1か所に保管するため、これらはここで繰り返されます。newrelic.cfgの各設定にではここに、 プレフィックスとしてnewrelic.daemon.が付いた相手があります。たとえば、newrelic.cfgssl設定は、.iniファイルのnewrelic.daemon.sslとなります。

ファイル/etc/newrelic/newrelic.cfgがある場合、エージェントはこの設定を無視し、デーモンを自動的に起動しません

デーモンの起動方法および外部設定ファイルをいつ使用するかの詳細については、PHPデーモン起動モードをご覧ください。

newrelic.daemon.app_timeout
範囲: SYSTEM
種類: 時間仕様文字列はたとえば、"5m"または"1h20m"となります
デフォルト: "10m"

アプリケーションが使用されていないと見なされてからの経過時間を設定します。使用されていないアプリケーションは、アプリケーションの上限250にはカウントされません。認められた単位は、"ns"および"us""ms""s""m""h"です。

0は、「タイムアウトなし」と解釈されます。これにより、新規アプリケーションが常にアプリケーションの上限250に対しカウントされ、またデーモンはアプリケーションごとに少量のメモリをオペレーティングシステムに解放できなくなります。

推奨事項:New Relic Supportの要請がある場合を除き、この値は使用しないでください。時折行われるバックグラウンドトランザクションでは、間隔の2倍の値を使用してください。たとえば、1時間ごとのバックグラウンドジョブでは、タイムアウトを2時間に設定します。

newrelic.daemon.app_connect_timeout
範囲: SYSTEM
種類: 時間仕様文字列はたとえば、"1s"または"5m"となります
デフォルト: "0"

アプリケーションに接続するデーモンについての、エージェントの最大の待ち時間を設定します。値が0の場合、エージェントはデーモンへの接続を1回しか試みません。認められた単位は、"ns"および"us""ms""s""m""h"です。

このタイムアウトが設定されていると、デーモンがまだバックエンドに接続していない場合エージェントはただちにトランザクションを停止せず、デーモンに接続を確立する時間を許可します。

推奨事項:タイムアウトを設定する場合、推奨値は15sです。接続に問題がある場合、エージェントはすべてのトランザクション開始時に所定のタイムアウトをブロックするため、時間のかかるバックグラウンドタスクのインストゥルメントを行っている場合にのみこのタイムアウトを設定してください。

newrelic.daemon.auditlog
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: ""

設定では、監査ログの名前を指定します。ログには、完全なURLや日付、時間、各リクエストのエンコード化されていない非圧縮データを含む、デーモンからNew Relicサーバーに送信されたすべてのデータが含まれます。

このファイルは、デーモンのログと同じファイルとすることはできません。

この監査ログは、非常に短時間で非常に大きくなる場合があります。長期間newrelic.daemon.auditlog設定を使用しないようにしてください。システムアドミニストレーターがセキュリティレビューを行い、どのデータが転送されるかを正確に観察できるようにすることが、主な目的です。

newrelic.daemon.collector_host
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: "collector.newrelic.com"

ライセンスキーの確認およびエージェントデータの送信のためにデーモンが連絡するコレクターホストの名前とオプションのポートを設定します。

これは単なるホスト名か、または"hostname:port"形式の名前とポート番号です。ポート番号を0に指定すると、デフォルトのポートである80を使用します。

New Relic Supportからのガイダンスなしに、この値を変更しないでください。

newrelic.daemon.dont_launch
範囲: SYSTEM
種類: 数値
デフォルト: 0

エージェントの起動前にデーモンを外部で起動したい場合、この値により、エージェントがデーモンの起動をいつ許可されるかが決まります:

  • 0: デーモンの起動には制限はなく、エージェントはデーモンをいつでも起動できます。
  • 1: 非コマンドライン(Apacheやphp-fpmなど)エージェントは、デーモンを起動できます。
  • 2: コマンドラインエージェントのみが、デーモンを起動できます。
  • 3: このエージェントはデーモンを起動することはありません。newrelic.cfgを介してデーモンを設定しており、エージェント以外から起動している場合、この設定を使用します。

/etc/newrelic/newrelic.cfgがある場合、エージェントは、エージェントを介してではなく起動スクリプトによりデーモンが起動されると仮定します。この設定はnewrelic.cfgに影響を与えず、そこに表示されません。

newrelic.daemon.location
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: "/usr/bin/newrelic-daemon"

起動可能なデーモンの名前を設定します。

この変数は、デーモンが実行可能なファイルへのフルパスを特定します。標準パッケージを使用してNew Relicシステムがインストールされた場合、デフォルトの場所は正しいものとなります。tar配布を使用してカスタムの場所にインストールした(かつ/usr/binへの書き込み許可がない)場合、デーモンが別の場所にある場合があります。

この設定はPHPにのみ関連しているため、newrelic.cfgファイルには表示されません。

OpenSolarisでは、/usrは多くの場合読み取り専用ファイルシステムです。OpenSolarisのデフォルトのデーモンの場所は/opt/newrelic/bin/newrelic-daemonです。

newrelic.daemon.logfile
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: "/var/log/newrelic/newrelic-daemon.log"

デーモン固有のログメッセージを記録するためのログファイルの名前を設定します。デーモンがこのファイルに書き込める必要があります。一般的には、Apacheユーザーの場合、Apache自体が起動するとデーモンが起動されるため、Apacheプロセスを実行しているユーザーがファイルに書き込みを行えることを確認してください。

デーモンのログファイルに書き込みを行えない場合、デーモンは自動的に起動せず、データのレポートは行われません。誰がデーモンを起動できるかを制限する手段として、このファイルへの書き込み許可を使用できます。

newrelic.daemon.loglevel
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: "info"

New Relicのデーモンのログファイルに記録されるメッセージの詳細レベルを設定します。詳細の度合いが低い順の、取り得る値は次のとおりです:

  • error
  • warning
  • info
  • debug

設定が詳細なほど、多くの情報を非常に迅速に生成できます。必要に応じて、問題を特定するために短期間debugを設定します。

newrelic.daemon.pidfile
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: (OSにより異なります)

デーモンがプロセスID(pid)を記録するファイルの名前を設定します。

このファイルは、デーモンがすでに実行中かどうか判断するため、デーモン起動とシャットダウンスクリプトが使用します。

newrelic.daemon.address(newrelic.daemon.portのエイリアス)
範囲: SYSTEM
種類: 文字列または数字
デフォルト: "@newrelic" on Linux, "/tmp/.newrelic.sock" otherwise

v9.2.0.247から、PHPエージェントは新たな設定であるnewrelic.daemon.addressをサポートします。この設定は、newrelic.daemon.portのエイリアスとなるものです。New Relic PHPデーモンの場所を指定するのにも使用できます。両方の値が設定された場合、newrelic.daemon.addressが優先されます。

エージェントとデーモン間の通信向けにソケットエンドポイントを設定します。

これは4つの方法で指定できます。

  • UNIXドメインソケット(UDS)として指定されたファイルを使用するには、文字列として絶対パス名を記入します。これが、非Linuxシステムではデフォルトです。
  • 標準のTCPポートを使用するには、1から65534の範囲で数字を指定します。
  • 抽象ソケットを使用するには、値@newrelic-daemon(エージェントバージョン5.2.0.141以上で使用可能)を使用します。これが、Linuxシステムではデフォルトです。
  • 別のホストで実行しているデーモンに接続するには(コンテナ環境で有用)、この値をhost:portに設定します。ここで、hostはホスト名またはIP、portは有効なポート番号を表します。IPv4とIPv6の両方がサポートされています。これは、エージェントバージョン9.2.0.247以上で使用できます。

    エージェントからデーモンに転送されたデータは暗号化されません。唯一の例外は、データをデーモンに送信する前に行われるSQL難読化です。当社では、エージェントとデーモンとの間ではプライベートネットワーク接続のみを使用することを推奨しています(これは、エージェントとデーモンが別のホストで実行されている場合にのみ該当します)。

ポート番号を使用する場合、Unixシステムでは、ポートは1から1023の範囲にあり、デーモンはスーパーユーザーとして実行する必要があります。デーモンで標準以外のポートを使用する場合、この変数は、エージェントがデーモンとの通信に使用するポート番号も設定します。

デーモンについてnewrelic.cfg起動メカニズムを使用している場合、この設定とそのファイルのアドレス設定は一致する必要があります。

newrelic.daemon.proxy
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: ""

イグレスプロキシとして使用するホストとユーザー認証情報を設定します。

これは、New Relicデータ収集サーバーにアクセスするのにサイトでプロキシが必要な場合にのみ使用します。プロキシ設定により、次のいずれかの形態となります:

  • hostname
  • hostname:port
  • user@hostname
  • user@hostname:port
  • user:password@hostname
  • user:password@hostname:port
  • proxytype://user:password@hostname:port

別のproxytypeが指定されている場合を除き、プロキシタイプはHTTPとなります。この場合、proxytypehttpまたはsocks4socks4asocks5のうち1つとすることができます。

newrelic.daemon.ssl
範囲: SYSTEM
種類: ブール値
デフォルト: true

この設定はPHPエージェントバージョン8.0以上では無視され、HTTPSを常に使用してNew Relicとの通信を行います。

PHPエージェントバージョンが8.0以前の場合、New Relicコレクターとの通信でセキュアなHTTP接続を使用するかどうかを制御します。エージェントはデフォルトでHTTPSを介してNew Relicと通信します。New Relicは、 APMとNew Relic REST APIへのすべてのトラフィックに対してHTTPSを要求します。

newrelic.daemon.ssl_ca_bundle
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: ""

PEM形式のCA証明書を含むファイルの場所を設定します。設定すると、このファイルの証明書を使用して、New Relicコレクターの認証を行います。大半の場合、CAバンドの設定は不要です。New Relic PHPエージェントは、必要なCA証明書とバンドルで提供されます。

newrelic.daemon.ssl_ca_pathも設定している場合、このファイルの証明書が最初に検索され、次にnewrelic.daemon.ssl_ca_pathディレクトリに含まれる証明書が検索されます。

newrelic.daemon.sslfalseに設定されている場合、この設定は影響を及ぼしません。

newrelic.daemon.ssl_ca_path
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: ""

PEM形式の信頼されたCA証明書を含むディレクトリの場所を設定します。設定すると、このディレクトリの証明書を使用して、New Relicコレクターの認証を行います。大半の場合、CAパスの設定は不要です。New Relic PHPエージェントは、必要なCA証明書とバンドルで提供されます。

newrelic.daemon.ssl_ca_bundleも設定している場合、これが最初に検索され、次にnewrelic.daemon.ssl_ca_pathに含まれるものが検索されます。

newrelic.daemon.sslfalseに設定されている場合、この設定は影響を及ぼしません。

newrelic.daemon.start_timeout
範囲: SYSTEM
種類: 時間仕様文字列はたとえば、"1s"または"5m"となります
デフォルト: "0"
デーモン起動がトリガーされた後に、デーモンについてのエージェントの最大待ち時間を設定します。値を0にすると、エージェントが待たなくなります。認められた単位は、"ns"および"us""ms""s""m""h"です。

指定されたタイムアウト値は、--wait-for-portフラグを介してデーモンに渡されます。これにより、ソケットの取得、またはタイムアウトの時間が経過するまで、デーモンの起動がブロックされます。

推奨事項:タイムアウトを設定する場合、推奨値は2sから5sです。デーモンの起動に問題がある場合、エージェントはすべてのトランザクション開始時に所定のタイムアウトをブロックするため、時間のかかるバックグラウンドタスクのインストゥルメントを行っている場合にのみこのタイムアウトを設定することが推奨されます。

トランザクショントレーサー .ini設定

この設定の値を使用して、トランザクショントレースを制御します。

newrelic.transaction_tracer.custom
範囲: PERDIR
種類: 文字列(引用符を使用)
デフォルト: ""

これを、ユーザー定義の関数またはインストゥルメントのメソッドの、コンマ区切りのリストに設定します。

"myfunction,myclass::method,otherfunction"

内部PHP関数は、カスタムトレーシングを有することはできません。

各PERDIRファイルをカスタム関数のリストに追加できますが、すでに追加されている関数またはメソッドを削除することはできません。プログラムにより関数やインストゥルメントするメソッドを追加する場合、newrelic_add_custom_tracer() API関数呼び出しを使用します。

newrelic.transaction_tracer.enabled
範囲: PERDIR
種類: ブール値
デフォルト: true

トランザクショントレーサーを有効化または無効化します。

トレーサーは、newrelic.transaction_tracer.threshold値により設定された、閾値より多くの時間がかかるトランザクションについて、詳細なトランザクショントレースを作成します。1収集サイクル、1アプリケーションにつき1つのトランザクショントレースのみが保存され、トランザクションは常にそのサイクルで最も遅いトランザクションとなります。

トランザクショントレースは、特定のトランザクションが遅い理由を診断するのに有用です。メモリとパフォーマンスが逼迫している場合を除き、無効には絶対にしないでください。これを有効にしてもパフォーマンスへの影響は非常に些少で、メモリの使用量が増えます。

詳細については、newrelic.transaction_tracer.detailをご覧ください。

newrelic.transaction_tracer.explain_enabled
範囲: PERDIR
種類: ブール値
デフォルト: true

スロークエリの呼び出しについてのMySQLiおよびPDO MySQLライブラリからの説明プランを有効または無効にします。説明プランは、newrelic.transaction_tracer.slow_sqltrueに設定され、newrelic.transaction_tracer.record_sql"off"に設定されていない場合にのみ使用できます。

newrelic.transaction_tracer.explain_threshold
範囲: PERDIR
種類: 期間
デフォルト: "500"

クエリが「遅い」と見なされ、スロークエリページの候補となる閾値を設定します。単位付きの絶対値として期間を指定します。指定がない場合、デフォルトの単位はミリ秒となります。

期間の例

  • "200ms"
  • "1s250ms"
  • "1h30m"
  • "750us"
newrelic.transaction_tracer.internal_functions_enabled
範囲: SYSTEM
種類: ブール値
デフォルト: false

内部関数(Cで書かれ、PHP標準ライブラリまたはPECLエクステンションのいずれかを通じて提供される関数)のトレーシングのサポートを有効化または無効化します有効にすると、内部関数は、PHPで書かれた関数のようにトランザクショントレースに表示されます。

このオプションを有効にすると、特にPHP 5.xから多くのトレースを収集する際に、トランザクションが遅くなる場合があります。このオプションを有効にすることは、内部関数が遅いと疑われるパフォーマンス問題のデバッグを特に行う場合にのみ推奨されます。

newrelic.transaction_tracer.record_sql
範囲: PERDIR
種類: 文字列(引用符を使用)
デフォルト: "obfuscated"

クエリの記録方法(行う場合)を設定します。

トランザクショントレースを内部で記録する場合、スロークエリ呼び出しのクエリ全体が記録されます。このクエリをNew Relicに送信すると、セキュリティに重大な影響が生じる場合があるため、デフォルトではすべてのデータベースステートメントは、New Relicに送信する前に難読化されます。難読化ではクエリの文字列と数字を疑問符に置換するため、可逆性はありません。値も変わるため、影響がないのは、フィールド名だけとなります。

  • 機密でないデータでテストを行っており、トランザクショントレースで生クエリを表示する必要がある場合、"raw"に設定します。
  • クエリを全く記録しない場合、"off"に設定します。

本番環境では、必ず"obfuscated"または"off"に戻してください。

newrelic.transaction_tracer.slow_sql
範囲: PERDIR
種類: ブール値
デフォルト: true

スロークエリ機能を有効化または無効化するには、この設定を使用します。有効化すると、次のようになります:

  • 1分当たり、1アプリケーション毎に、最も遅いデータベースクエリの上位10位を記録します。
  • クエリにつながるスタックトレースを作成します。

この変数がfalseに設定されている、またはSQL記録が無効になっている場合、New Relicエージェントはスロークエリデータを収集しません。

newrelic.transaction_tracer.stack_trace_threshold
範囲: PERDIR
種類: 期間
デフォルト: "500"

これにより、クエリを記録しているトランザクショントレースのPHPスタック全体をエージェントが記録する下限の閾値を設定します。

単位付きの絶対値として期間を指定します。指定がない場合、デフォルトの単位はミリ秒となります。

期間の例

  • "200ms"
  • "1s250ms"
  • "1h30m"
  • "750us"

スタックトレースはメモリを消費するので、この値をあまり低く設定しないよう注意してください。newrelic.transaction_tracer.record_sql"off"に設定されている場合、この変数には意味はありません。

newrelic.transaction_tracer.threshold
範囲: PERDIR
種類: 期間
デフォルト: "apdex_f"

この変数を使用して、トランザクションがトレースの対象となる閾値を設定します。使用できる値としては次のものがあります:

  • "apdex_f"を使用して、閾値をアプリケーションのapdex_t値の4倍に設定します。詳細については、「Apdex: ユーザー満足度の測定」をご覧ください。
  • 特定の時間閾値を設定するには、その他の期間文字列を使用します。絶対値および測定単位として、期間を指定します。指定がない場合、デフォルトの単位はミリ秒となります。

期間の例

  • "200ms"
  • "1s250ms"
  • "1h30m"
  • "750us"
newrelic.transaction_tracer.gather_input_queries
範囲: PERDIR
種類: ブール値
デフォルト: true

この設定を使用して、スロークエリおよびトランザクショントレースによるDQL入力クエリの収集を有効化または無効化します。有効にすると、スロークエリおよびトランザクショントレースとともに表示されます。

newrelic.transaction_tracer.max_segments_web
範囲: PERDIR
種類: 数値
デフォルト: 0

PHPエージェントがウェブトランザクションについて記録するセグメントの最大数を指定します。この最大値に達すると、サンプリングが行われます。

PHPエージェントは、収集したセグメントとして、トランザクショントレースとディストリビューティッド(分散)トレースをレポートします。各セグメントは、トランザクショントレースでのメソッドや関数呼び出しを表します。この設定のデフォルト値は0です。これは、PHPエージェントがウェブトランザクションの間にすべてのセグメントを捕捉することを表します。トランザクション終了時に、最も優先順位の高いセグメントを組み合わせて、トランザクショントレースでレポートします。

数十万または数百万の関数呼び出しのある、長時間実行されるPHPプロセスでは、この値を1より大きな値に設定すると、PHPエージェントがセグメント記録時にシステムメモリを大量に消費することがなくなります。

セグメントのサイズは、対応するメソッド名やクラス名の長さ、メソッドが行う以後の呼び出しの数により異なります。つまり、控えめに見積もっても、1セグメント当たり400バイトとなります。PHPエージェントをセグメント捕捉につき40 MBに制限するには、この値を100000に設定します。この値を2000より低く設定すると、トランザクショントレースについてレポートされるセグメントの合計数がさらに制限されます。

この設定はPHPウェブプロセス専用です。PHP CLIプロセスには影響はありません。CLIプロセスに制限を設定するには、newrelic.transaction_tracer.max_segments_cliを使用します。

newrelic.transaction_tracer.max_segments_cli
範囲: PERDIR
種類: 数値
デフォルト: 100000

PHPエージェントがCLIトランザクションについて記録するセグメントの最大数を指定します。この最大値に達すると、サンプリングが行われます。

PHPエージェントは、収集したセグメントとして、トランザクショントレースとディストリビューティッド(分散)トレースをレポートします。各セグメントは、トランザクショントレースでのメソッドや関数呼び出しを表します。この設定のデフォルト値は0です。これは、PHPエージェントがウェブトランザクションの間にすべてのセグメントを捕捉することを表します。トランザクション終了時に、最も優先順位の高いセグメントを組み合わせて、トランザクショントレースでレポートします。

数十万または数百万の関数呼び出しのある、長時間実行されるPHPプロセスでは、この値を1より大きな値に設定すると、PHPエージェントがセグメント記録時にシステムメモリを大量に消費することがなくなります。

セグメントのサイズは、対応するメソッド名やクラス名の長さ、メソッドが行う以後の呼び出しの数により異なります。つまり、控えめに見積もっても、1セグメント当たり400バイトとなります。PHPエージェントをセグメント捕捉につき40 MBに制限するには、この値を100000に設定します。この値を2000より低く設定すると、トランザクショントレースについてレポートされるセグメントの合計数がさらに制限されます。

この設定はPHP CLIプロセス専用です。PHPウェブプロセスには影響はありません。ウェブプロセスに制限を設定するには、newrelic.transaction_tracer.max_segments_webを使用します。

その他のトレーサーの .ini設定

この設定の値を使用して、さまざまなトレーサー機能を制御します。

newrelic.cross_application_tracer.enabled

ディストリビューティッド(分散)トレーシング機能が利用できるようになりました。ディストリビューティッド(分散)トレーシングはクロスアプリケーショントレーシングを改良したもので、複雑な分散システムのアクティビティを監視するのにお薦めです。

範囲: PERDIR
種類: ブール値
デフォルト: true

クロスアプリケーショントレーサーを有効化または無効化します。クロスアプリケーショントレーサーは、アプリケーション間でウェブトランザクションメトリックスとトランザクショントレースを関連付けるため、HTTPヘッダーをアウトバウンドリクエストとレスポンスに挿入します。

アウトバウンドトレーシングとクロスアプリケーショントレーシングは同時に使用できません。PHPエージェントのデフォルト設定では、ディストリビューティッド(分散)トレーシングが無効になり、クロスアプリケーショントレーシングが有効になります。

newrelic.distributed_tracing_enabled
範囲: PERDIR
種類: ブール値
デフォルト: false

ディストリビューティッド(分散)トレーシングを有効にすると、クロスアプリケーショントレーシングが無効になります。有効にする前に、移行ガイドを読み、New Relicの機能への影響について理解してください。

ディストリビューティッド(分散)トレーシングを有効化または無効化します。エージェントのトランザクショントレーサーとディストリビューティッド(分散)トレーシング機能が有効になっている場合、エージェントはヘッダーをアウトバウンドリクエストに挿入し、ディストリビューティッド(分散)トレーシングヘッダーの着信リクエストをスキャンします。

newrelic.transaction_tracer.enabled = true
newrelic.distributed_tracing_enabled = true
newrelic.distributed_tracing_exclude_newrelic_header
範囲: PERDIR
種類: ブール値
デフォルト: false

アウトバウンドリクエストに添付されたNew Relicディストリビューティッド(分散)トレーシングヘッダーを除外するには、これをtrueに設定し、ディストリビューティッド(分散)トレーシング用のW3Cトレースコンテキストヘッダーにのみ依存します。これがfalseの場合、両方のタイプのヘッダーがアウトバウンドリクエストに添付されます。

New Relicディストリビューティッド(分散)トレーシングヘッダーを使用すると、W3Cトレースコンテキストヘッダーをサポートしない古いエージェントとの相互運用が可能になります。W3Cトレースコンテキストヘッダーをサポートするエージェントバージョンは、ディストリビューティッド(分散)トレーシング用のNew Relicヘッダーよりこのヘッダーを優先します。

newrelic.span_events_enabled
範囲: PERDIR
種類: ブール値
デフォルト: true

スパンイベントはディストリビューティッド(分散)トレーシングに関してレポートされます。スパンイベントをレポートするには、ディストリビューティッド(分散)トレーシングが有効になっている必要があります。このオプションは、スパンイベントのレポートを有効化/無効化します。

newrelic.infinite_tracing.trace_observer.host
範囲: PERDIR
種類: 文字列
デフォルト: ""

Infinite Tracingに使用するトレースオブザーバーを設定します。空白の場合、Infinite Tracingサポートは無効になります。この場合、ディストリビューティッド(分散)トレーシングとスパンイベントが有効になっている必要があります。

newrelic.infinite_tracing.trace_observer.port
範囲: PERDIR
種類: 整数
デフォルト: 443

Infinite Tracingトレースオブザーバーとの通信に使用するTCP/IPポートを設定します。newrelic.infinite_tracing.trace_observer.hostが空白の場合、この設定は無視されます。この設定は通常、変更する必要はありません。

newrelic.infinite_tracing.span_events.queue_size
範囲: PERDIR
種類: 整数(1000以上)
デフォルト: 100000

Infinite Tracingトレースオブザーバーへの送信についてキューに登録可能なスパンイベントの数を設定します。エージェントは、スパンバッチ内のInfinite Tracingのスパンイベントを内部で管理します。このスパンバッチは、最大で1000スパンを保有できます。よって、スパンイベントのキューサイズは1000以下にはできません。1000以下にすると、1つのスパンバッチもキューに登録できません。1000以下のキューのサイズを指定すると、最大サイズ1000を使用します。

newrelic.error_collector.enabled
範囲: PERDIR
種類: ブール値
デフォルト: true

エラーコレクターを有効化または無効化します。有効にすると、エージェントはPHPエラーを収集し、New Relic UIにレポートします。

エージェントは、各トランザクションについて最も重大なエラー、および1収集サイクル当たり最大20件のエラーのみを記録します。

APMでのエラー設定の概要については、APMでのエラーの管理をご覧ください。

newrelic.error_collector.record_database_errors
範囲: PERDIR
種類: ブール値
デフォルト: true

有効にすると、エージェントはMySQL関数が返したエラーを、PHPエラーとして収集します。

newrelic.error_collector.prioritize_api_errors
範囲: PERDIR
種類: ブール値
デフォルト: false

newrelic_notice_error() API関数を通じて特定されたエラーに最も高い優先度を割り当てるには、これをtrueに設定します。

newrelic.error_collector.ignore_exceptions
範囲: PERDIR
種類: 文字列
デフォルト: (なし)

エージェントが無視すべき完全修飾例外クラス名の、カンマ区切りのリスト。扱っていない例外が発生した場合、エージェントはリストにある各クラスについて、$exception instanceof Classと同様のことを行います。これらのチェックでtrueが返された場合、エージェントは例外を記録しません。

サポートされたPHPリリースによっては、この値は例外のレポートを無効にするのと等しくなります:

  • サポートされたPHP 5バージョン: newrelic.error_collector.ignore_exceptions = Exceptions
  • サポートされたPHP 7バージョン: newrelic.error_collector.ignore_exceptions = Throwable
newrelic.error_collector.ignore_errors
範囲: PERDIR
種類: 整数またはPHPで定義されたエラー定数のビット単位式
デフォルト: 0

PHPエージェントのエラーレベルignoreに設定します。この設定の値は、PHPのerror_reportingオプションと同様の構文を使用します。たとえば、PHP agentがE_WARNINGE_ERRORレベルエラーを無視するよう設定するには、次のものを使用します:

newrelic.error_collector.ignore_errors = E_WARNING | E_ERROR

または

newrelic.error_collector.ignore_errors = 3

PHPエージェントを使用してE_WARNING以外のすべてを無視するよう設定するには、次のものを使用します:

newrelic.error_collector.ignore_errors = E_ALL & ~E_WARNING

newrelic.framework.drupal.modules
範囲: PERDIR
種類: ブール値
デフォルト: true
メモ: バージョン3.0以前のエージェントでは、この値のデフォルトはfalseでした。このオプションを設定すると、newrelic.transaction_tracer.detail = 1となりました。

Drupalモジュールトラッキングを有効にするには、これをtrueに設定します。このオプションのパフォーマンスへの影響は、newrelic.transaction_tracer.detailと同じです。Drupalモジュール関数と呼び出し数の記録が有効になり、ウェブトランザクションのようにModulesタブの下に表示されます。

newrelic.framework.wordpress.hooks
範囲: PERDIR
種類: ブール値
デフォルト: true

WordPressフックトラッキングを有効にするには、これをtrueに設定します。WordPressフックやプラグイン、テーマの記録が有効になり、 New Relic UIのWordPressタブの下に表示されます。

newrelic.webtransaction.name.files
範囲: PERDIR
種類: 文字列(引用符を使用)
デフォルト: ""

ファイル名を使用してウェブトランザクションに名前を付ける場合を除き、これはnewrelic.webtransaction.name.functionsと同じです。ファイル名は、PCREで使用する標準のPOSIX正規表現にできます。たとえば、"controllers/actions/.*"のようになります。

newrelic.webtransaction.name.functions
範囲: PERDIR
種類: 文字列(引用符を使用)
デフォルト: ""

New RelicエージェントがDrupalやWordpressなど特定のフレームワークを検知する場合を除き、最初のPHPファイルの後でウェブトランザクションに名前が付けられます。たとえば、article.phpのようになります。

最初のファイルがディスパッチャーの場合、この命名スキームでは有用性の低いデータが生成されます。この変数を使用して、ディスパッチャーが生成した「アクション」である関数のリストを指定します。ウェブトランザクションの名前は、実行した最初のアクション関数となります。

ディスパッチ関数命名の例

index.phpが次の名前の関数にディスパッチを行う場合:

  • login、
  • logout、
  • admin、
  • show、および
  • 編集

この値を"login,logout,admin,show,edit"に設定します。

ウェブトランザクションは、/index.php(最初のファイル名)ではなく、loginlogoutなどと命名されます。

newrelic.webtransaction.name.remove_trailing_path
範囲: PERDIR
種類: ブール値
デフォルト: false

有効になっている場合、これにより、スクリプト名の後にあるリクエストURIの内容が削除されます。たとえば、これにより、末尾の/xyz/zy/path/to/foo.php/xyz/zyから削除されます。

newrelic.datastore_tracer.instance_reporting.enabled
範囲: PERDIR
種類: ブール値
デフォルト: true

falseの場合、エージェントはデータストアインスタンスメトリックスをレポートせず、hostport_path_or_idパラメーターをトランザクションや遅いsqlトレースに追加しません。

newrelic.datastore_tracer.database_name_reporting.enabled
範囲: PERDIR
種類: ブール値
デフォルト: true

falseの場合、エージェントはdatabase_nameパラメーターをトランザクションや遅いsqlトレースに追加しません。

属性の設定

このセクションには、属性の収集とレポートに影響を与える設定が一覧記載されています。

newrelic.attributes.enabled
範囲: PERDIR
種類: ブール値
デフォルト: true

PHPエージェントが生成した、またはnewrelic_add_custom_parameter()を通じてユーザーが生成した属性の収集を有効化または無効化します。この設定は、その他すべての属性収集設定に優先します。

詳細については、属性を有効または無効にするをご覧ください。

newrelic.{destination}.attributes.enabled
範囲: PERDIR
種類: ブール値
デフォルト: browser_monitoring.attributes.enabledについての場合を除きtrue

どの宛先が属性を受信するかを制御します。この設定は、.includeおよび.exclude設定を上書きします。

使用可能な宛先の詳細については、属性を有効または無効にするをご覧ください。

newrelic.attributes.{include|exclude}
範囲: PERDIR
種類: 文字列
デフォルト: (なし)

これは、属性の宛先の細かい制御を可能にする設定オプションのファミリーです。詳細については、属性を有効または無効にするをご覧ください。

その他の .ini設定

このセクションには、残りのnewrelic.ini設定が一覧記載されています。

newrelic.enabled
範囲: SYSTEM
種類: ブール値
デフォルト: (なし)

New Relicエージェントを有効化または無効化します。デフォルトでは、New Relic PHPエージェントはすべてのディレクトリについて有効になっています。

ウェブサーバーに複数のサイトがあるが、PHPエージェントに特定のサイトのみを監視させたい場合:

  1. newrelic.enabledが、newrelic.iniファイルでグローバル(システム)レベルでtrueに設定されていることを確認します。
  2. 1つ以上の特定のサイトについて、ディレクトリごと(PERDIR)に、newrelic.enabledfalseに設定します。

グローバルにエージェントを無効にする必要がある場合、newrelic.iniファイルでnewrelic.enabledの値をfalseに設定します。

エージェントがグローバルで無効になっている場合、完全に初期化されません。重要な理由でグローバルに無効にしていると想定し、エージェントはPHPへの影響を可能な限りゼロに近くしようとします。

エージェントをグローバルで無効にしてから、.htaccessを使用してディレクトリごとに選択的に有効にすることはできません。

newrelic.logfile
範囲: SYSTEM
種類: 文字列(引用符を使用)
デフォルト: "/var/log/newrelic/php_agent.log"

ここでは、メッセージのロギング用のファイル名を特定します。これは、エージェントによる問題のデバッグに有用です。設定がどのようなものであっても、次のことを確認してください。

  • 含まれるディレクトリとファイル自体の許可が正しい。
  • PHPを実行するユーザーがファイルに書き込みを行える。通常、これはウェブサーバーと同じユーザーです。
newrelic.transaction_events.enabled
範囲: PERDIR
種類: ブール値
デフォルト: true

trueに設定すると、エージェントは分析イベントデータを収集しレポートします。イベントデータを使用して、New Relic UIは、ヒストグラムパーセンタイルなどの追加情報を表示できます。

newrelic.error_collector.capture_events
範囲: PERDIR
種類: ブール値
デフォルト: true

trueに設定すると、エージェントはエラーイベントデータを収集しレポートします。イベントデータを使用して、New Relic UIはエラー分析を表示できます。

newrelic.feature_flag
範囲: PERDIR
種類: ブール値
デフォルト: true

この設定により、PHPエージェント内の新規および実験的な機能が有効になります。これらのフラグを使用して、PHPエージェントの以後のバージョンでデフォルトで有効にされる予定の機能を、選択的に有効にします。

newrelic.browser_monitoring.auto_instrument
範囲: PERDIR
種類: ブール値
デフォルト: true

これにより、ブラウザモニタリングのためのJavaScript断片の自動挿入が有効になります。有効にすると、エージェントがヘッダーとフッターをHTML出力に挿入し、エンドユーザー体験のためページロードタイミングについてのメトリックスが生成されます。詳しくは、PHPでのページロードタイミングをご覧ください。

newrelic.guzzle.enabled
範囲: PERDIR
種類: ブール値
デフォルト: true

New Relicとともに使用する際のGuzzleライブラリのサポートを有効化または無効化します。

  • PHPエージェントのバージョン6.4またはそれ以降:この設定は、デフォルトでtrueに設定されます。
newrelic.preload_framework_library_detection
範囲: SYSTEM
種類: ブール値
デフォルト: true
メモ: PHPエージェントバージョン9.4で導入

プレロードが有効になっている場合に、フレームワークとライブラリの検知が有効になります。プレロードはPHPバージョン7.4で導入されました。newrelic.preload_framework_library_detectionは、opcache.preloadphp.iniファイルで設定されている場合にのみ有効です。

その他のヘルプ

さらに支援が必要な場合は、これらのサポートと学習リソースを確認してください: