PHP エージェントを使用すると、 logs in contextを取得でき、他の New Relic データのコンテキストでアプリのログを表示できます。 この機能の一般的な情報については、 「APM ログのコンテキスト」を参照してください。
コンテキストオプションの自動ログ
アプリのログとリンク メタデータを自動的に New Relic に送信するようにコンテキスト内のログを構成するには、2 つのオプションがあります。 エージェント転送で使用するコンテキスト内の自動ログにサポートされているフレームワークは次のとおりです。
- Monolog 2 または 3。PHP エージェント v10.1.0 以降が必要です。
もう 1 つのオプションは、エージェントにリンク メタデータを含むトークンでログ レコードを修飾させ、外部ログ フォワーダーを使用してログを New Relic に送信させることです。ログ装飾用にサポートされているフレームワークには次のものがあります。
- Monolog 2 または 3。PHP エージェント v10.13.0 以降が必要です。
サポートされているフレームワークを使用している場合は、アプリのログとリンク メタデータを New Relic に自動的に送信するように APM エージェントを構成できます。コンテキスト内の自動ログでサポートされているフレームワークには、次のものがあります。
モノログ (バージョン 2 または 3)
これは最も単純なアプローチであり、ログフォワーダーの設定にアクセスしたり関心を持ったりしていない開発者や、アプリのコンテキストでログやその他のリンクメタデータの機能を確認したいアカウントに最適です。多くのオーバーヘッド。
このオプションを使用して、エージェントはspan.id
、 trace.id
、 hostname
、 entity.guid
、およびentity.name
を追加します。ログ転送の制限について学習します。
重要
エージェント リリース 10.3.0 以降、ロギング メトリックとエージェント ログ転送機能はデフォルトで有効になっています。
ログ転送機能を備えたバージョンのエージェントをインストールするだけです ( PHP エージェント 10.1.0 以降)。転送が無効になっている場合は、次の構成を使用できます。
構成ファイル( newrelic.ini
):
newrelic.application_logging.enabled = true
newrelic.application_logging.metrics.enabled = true
newrelic.application_logging.forwarding.enabled = true
PHP エージェント構成ドキュメントでは、エージェントの構成方法について詳しく説明していますが、ここでは、PHP ログ構成の最も重要な側面のいくつかを確認してリンクします。
コア ロギング機能がアクティブかどうかを制御するオプションは 1 つあります。
newrelic.application_logging.enabled
サポートされているロギング フレームワークを使用している場合、エージェントは、アプリケーションが生成しているログ メッセージの重大度を測定するメトリクスを送信できます。newrelic.application_logging.metrics.enabled
構成を使用して、この機能を有効にすることができます。
サポートされているロギング フレームワークを使用していて、エージェントを使用してアプリケーション ログを New Relic に送信したい場合は、INI 設定の接頭辞newrelic.application_logging.forwarding
を使用して制御できます。利用可能なオプションは次のとおりです。
enabled
max_samples_stored
log_level
Monolog ログ ライブラリ (バージョン 2 または 3) を使用している場合は、ログ コンテキスト属性を有効にすることもできます。これにより、Monolog に渡されたロギング コンテキスト データが New Relic 属性に変換されます。この機能は、設定newrelic.application_logging.forwarding.context_data
の接頭辞が付いた INI 設定を通じて制御できます。利用可能なオプションは次のとおりです。
enabled
include
exclude
重要
既存のログ転送ソリューションがあり、コンテキスト内で自動ログを使用するようにエージェントを更新する場合は、必ずdisable your manual log forwarderを実行してください。 そうしないと、アプリはログ データを 2 倍送信することになります。 アカウントによっては、二重請求が発生する可能性があります。 詳細については、特定のログフォワーダーを無効にする方法をご覧ください。
あなたが好きなログフォワーダーをすでに持っていますか?私たちはあなたをカバーしています!言語エージェントは、自動ログインコンテキスト機能へのアクセスを提供するために必要なリンクメタデータでログを装飾できます。
この方法では、コンテキストでログを有効にする前に、外部ログ フォワーダーをインストールする必要があります。ログ フォワーダーをお持ちでない場合は、New Relic UI でインフラストラクチャ エージェントを使用するように求められます。
既存のログ転送ソリューションを使用し、後でエージェントを更新してコンテキスト内の自動ログを使用することにした場合は、必ずdisable your manual log forwarderを実行してください。 そうしないと、アプリは二重のログ行を送信することになります。 アカウントによっては、二重請求が発生する可能性があります。 詳細については、特定のログフォワーダーを無効にする手順に従ってください。
重要
PHP エージェントのローカル ログ装飾は、ログ メッセージを直接変更しません。メッセージ内にNR-LINKING
トークンを書き出すには、ロギング フレームワークの構成を更新する必要があります。
ログ装飾を使用して PHP のコンテキストでログをアクティブ化することを選択した場合は、まず PHP アプリをセットアップします。
New Relic でのログインがすでに設定されていることを確認してください。これには、アプリケーション ログを収集して New Relic に転送する、サポートされているログ フォワーダーの構成が含まれます。
PHP エージェントの最新バージョンをインストールまたは更新し、分散トレースを有効にします。ログ装飾のサポートには、PHP エージェント バージョン 10.13.0.1 以降を使用してください。
Monologバージョン 2 または 3 をインストールします。
Monolog 拡張機能を使用して、PHP のログ装飾を構成します。
ローカル ログの装飾を有効にするには:
自動ログ転送を無効にします。
newrelic.application_logging.forwarding.enabled = false
PHP エージェントによるローカル ログの装飾を有効にします。
newrelic.application_logging.local_decorating.enabled = true
PHP エージェントは、各 Monolog ログ レコードにリンク メタデータを追加します。この情報を実際のログ メッセージに表示するには、メッセージの最後に%extra.NR-LINKING%
形式の仕様を含む Monolog ハンドラーごとに Monolog Formatter を設定する必要があります。これは、コンテキスト内のログが機能するために必要なリンク データです。
例えば:
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\StreamHandler;
$logger = new Logger('log');
$handler = new StreamHandler('php://stderr');
$logfmt = "%channel%.%level_name%: %message% %extra.NR-LINKING%\n";
$formatter = new LineFormatter($logfmt);
$handler->setFormatter($formatter);
$logger->pushHandler($handler);
デコレータは、すべてのログmessage
(プレーン テキスト) に 5 つの属性を追加します: entity.guid
、 entity.name
、 hostname
、 trace.id
、およびspan.id
。例:
This is my log message. NR-LINKING|{entity.guid}|{hostname}|{trace.id}|{span.id}|{entity.name}|
ログメッセージが空または空白の場合、出力メッセージも空になります。 例:
NR-LINKING|{entity.guid}|{hostname}|{trace.id}|{span.id}|{entity.name}|.
出力されるログメッセージは空の文字列になります。
ログアペンダーが正しく構成されていることを確認するには、アプリケーションを実行してから、クエリ演算子has:span.id has:trace.id
を使用してNewRelicのログデータを確認します。
すべてが正しく構成され、データが強化されたメタデータとともにNew Relicに転送されている場合、ログはJSONとして出力され、 trace.id
フィールドとspan.id
フィールドが含まれているはずです。 UIにログデータが表示されない場合は、トラブルシューティング手順に従ってください。
このドキュメントはインストールの役に立ちましたか?
データを保護する
ログには、HIPAAまたはその他のコンプライアンスプロトコルによって保護されている機密情報が含まれている場合があります。デフォルトでは、クレジットカードや社会保障番号などのアイテムのように見える番号パターンを難読化しますが、追加情報をハッシュまたはマスクする必要がある場合があります。
詳細については、難読化の式とルールに関するドキュメントを参照してください。 New Relic UIを使用するか、GraphQL APIであるNerdGraphを使用して、ログデータをハッシュまたはマスクできます。
データを調べる
ログデータを最大限に活用するには:
トラブルシューティングのヒント
通常、コンテキストでログを有効にしてから 1 分以内にログが表示され始めます。 アプリのTriage > Logsセクションを確認してください。 また、そこにエラーに関連するログパターンも表示され始めます。
エラーまたはトレースのログが表示されない場合は、アプリにログがない可能性があります。 UIページを更新するか、選択した期間を変更してみてください。
自動ロギングを無効にする
APMログ イン コンテキストは、有効になっている場合、 エージェント ログ データを自動的に転送します。 エージェントリリース 10.3.0 以降、この機能は PHP エージェントに対してデフォルトで有効になっています。 これにより、セキュリティ、コンプライアンス、課金、システム パフォーマンスに悪影響が及ぶ可能性があります。 詳細情報、またはデフォルト設定を調整する必要がある場合は、自動ログ記録を無効にする手順に従ってください。