
APMエージェントによるネイティブログ転送のサポート
これまでNew Relic APMではアプリケーションログにattribute情報を修飾しサードパーティーのログフレームワークによってNew Relic Logsへ送る事によって、APMで検知したError情報とそのErrorに関連するログを的確に表示するLogs in Contextを実現してきました。



この度、Java Agent v7.6.0、.net Agent v9.7.0.0, Ruby Agent v8.6.0 からAgentによるネイティブログ転送が実装されました。これにより、ログフォーマッタやログフレームワークの設定を行うこと無く、APM エージェントをインストールするだけで、Logs in Contextが実現できるようになります。
機能の有効化と無効化
リリース時点ではAPM Agentによるログ転送機能はデフォルトでは無効化されていました。
その後この機能は5月3日(PDT)に新しいAgentがリリースされ、このバージョン以降のエージェントからデフォルトで有効化されます。
5月3日にリリースされたAgentは以下のバージョンとなります。
- Java Agent v7.7.0
- .net Agent v9.7.2.0
- Ruby Agent v8.7.0
同様に7月21日にリリースされたAgentは以下のバージョンとなります。
- Python agent v7.16.0.178
- Node.js agent v8.16.0
同様に11月3日には以下のエージェントでもデフォルトで有効化されます。
- Go Agent
- PHP Agent
注意
APMエージェントを使用してアプリケーションから直接ログを送信する場合は、現在アプリケーションからのログを収集している既存のログ転送ソリューションを無効にするか、変更する必要があります。
これまでのログフォワーダによる設定とAPMエージェントによるログ収集が両方有効化された場合、重複したログが送信され、二重請求が発生します。
また各APMエージェントでのデフォルト有効化リリース日以降にAPM Agentの新規インストールや無効化設定が無い状態でAgent Upgradeを行った場合は自動的にLog送信が開始されますので、コストやポリシー上の理由でAPMログの転送を行いたくない場合は、あらかじめ無効化の設定を行ってからAgentの起動を行ってください。
機能の有効化
現時点の最新AgentであるJava Agent v7.6.0、.net Agent v9.7.0.0, Ruby Agent v8.6.0ではAPMエージェントによるログ転送はデフォルトでは無効化されています。
APMエージェントを利用して(独自のログフォワーダーを利用せず)アプリケーションのログをNew Relic に送信したい場合は以下のいずれかの設定を行ってください。
デフォルトでは1分間に最大10,000行のログを送信します。10,000行を超えるログをAgentが検知した場合はAgentはログのサンプリングを行います。
10,000行を超えるログを送りたい場合はMAX行数の値を変更してください。この値はより小さな値を指定する事もできます。TDP利用料を抑制したい場合などには送信ログ行数を小さくすることもできます。
Java Agent(ドキュメント)
newrelic.yml による設定
環境変数による設定
Agent 引数による設定
.net Agent(ドキュメント)
newrelic.configまたはweb.configまたはapp.configまたはappsettings.json による設定
環境変数による設定
Ruby Agent(ドキュメント)
newrelic.yml による設定
環境変数による設定
機能の無効化
既存のログフォワーダを設定している、LogファイルをNew Relicに送信したくない、等の理由でAPMエージェントによるログ転送機能を有効化したく無い場合は、明示的に無効化設定を行っておく事で、5月3日のデフォルト有効化後もログ転送を無効にすることができます。
Java Agent(ドキュメント)
newrelic.yml による設定
環境変数による設定
Agent 引数による設定
.net Agent(ドキュメント)
newrelic.configまたはweb.configまたはapp.configまたはappsettings.json による設定
環境変数による設定
Ruby Agent(ドキュメント)
newrelic.yml による設定
環境変数による設定
機能の部分的有効化
ログ転送には既存のログフォワーダを使いながら、APMエージェントによるログの修飾機能だけ有効にしたい場合は以下のように設定を行います。
この機能はこれまでのログフォワーダによるデコレーション設定を置き換える事ができます。
Java Agent(ドキュメント)
newrelic.yml による設定
環境変数による設定
Agent引数による設定
.net Agent(ドキュメント)
newrelic.configまたはweb.configまたはapp.configまたはappsettings.json による設定
環境変数による設定
Ruby Agent(ドキュメント)
newrelic.yml による設定
環境変数による設定
UI 設定によるログ転送の無効化
社内のポリシーなどの理由により、APMエージェントによるログ転送機能を行いたくない場合はUIの[Manage your data] からアカウント単位でログ転送機能を無効にすることができます。

この設定をDisableにした場合、APM エージェントによるログ転送はおこなれません。

この設定はログの受け入れを停止する設定では無くAgentによるログ送出を無効化する設定のため、設定を行ってもログフレームワークによるログ転送は引き続き利用出来ます。
今回のAPM エージェントによるログ転送機能によって、ログフォワーダの設定ややアプリケーションのロギングコードの変更などを行う事なく、誰でも簡単に Logs in Contextによる的確なError原因の確認を行っていただく事ができるようになりました。
Agentによるログ転送機能リリース後も、これまでの手動設定によるログ転送機能は引き続きご利用いただけます。
フレームワークの制約などにより独自のログフォワーダを利用する必要があるお客様は引き続き現在の設定をご利用ください。
また、ログ転送が簡単に実施可能になった事と合わせて、ログデータの中に入る個人情報等を保護するためのログのマスク化/ハッシュ化の機能もリリースされています。
Agentによるログ転送による情報漏洩が不安な方は是非こちらのログ難読化機能(ドキュメント)も合わせてご利用をご検討ください。
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.