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 による設定
application_logging:
enabled: true
forwarding:
enabled: true
max_samples_stored: 10000
環境変数による設定
NEW_RELIC_APPLICATION_LOGGING_ENABLED=true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000
Agent 引数による設定
-Dnewrelic.config.application_logging.enabled=true
-Dnewrelic.config.application_logging.forwarding.enabled=true
-Dnewrelic.config.application_logging.forwarding.max_samples_stored=10000
.net Agent(ドキュメント)
newrelic.configまたはweb.configまたはapp.configまたはappsettings.json による設定
<applicationLogging enabled=true>
<forwarding enabled=true maxSamplesStored=10000 />
</applicationLogging>
環境変数による設定
NEW_RELIC_APPLICATION_LOGGING_FOWARDING_ENABLED=true
NEW_RELIC_APPLICATION_LOGGING_FOWARDING_MAX_SAMPLES_STORED=10000
Ruby Agent(ドキュメント)
newrelic.yml による設定
application_logging:
forwarding:
enabled: true
max_samples_stored: 10000
環境変数による設定
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED: 10000
機能の無効化
既存のログフォワーダを設定している、LogファイルをNew Relicに送信したくない、等の理由でAPMエージェントによるログ転送機能を有効化したく無い場合は、明示的に無効化設定を行っておく事で、5月3日のデフォルト有効化後もログ転送を無効にすることができます。
Java Agent(ドキュメント)
newrelic.yml による設定
application_logging:
enabled: true
forwarding:
enabled: false
環境変数による設定
NEW_RELIC_APPLICATION_LOGGING_ENABLED=true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=false
Agent 引数による設定
-Dnewrelic.config.application_logging.enabled=true
-Dnewrelic.config.application_logging.forwarding.enabled=false
.net Agent(ドキュメント)
newrelic.configまたはweb.configまたはapp.configまたはappsettings.json による設定
<applicationLogging enabled=true>
<forwarding enabled=false />
</applicationLogging>
環境変数による設定
NEW_RELIC_APPLICATION_LOGGING_FOWARDING_ENABLED=false
Ruby Agent(ドキュメント)
newrelic.yml による設定
application_logging:
forwarding:
enabled: false
環境変数による設定
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=false
機能の部分的有効化
ログ転送には既存のログフォワーダを使いながら、APMエージェントによるログの修飾機能だけ有効にしたい場合は以下のように設定を行います。
この機能はこれまでのログフォワーダによるデコレーション設定を置き換える事ができます。
Java Agent(ドキュメント)
newrelic.yml による設定
application_logging:
enabled: true
forwarding:
enabled: false
local_decorating:
enabled: true
環境変数による設定
NEW_RELIC_APPLICATION_LOGGING_ENABLED=true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=false
NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=true
Agent引数による設定
-Dnewrelic.config.application_logging.enabled=true
-Dnewrelic.config.application_logging.forwarding.enabled=false
-Dnewrelic.config.application_logging.local_decorating.enabled=true
.net Agent(ドキュメント)
newrelic.configまたはweb.configまたはapp.configまたはappsettings.json による設定
<applicationLogging enabled=true>
<forwarding enabled=false />
<localDecorating enabled=true />
</applicationLogging>
環境変数による設定
NEW_RELIC_APPLICATION_LOGGING_FOWARDING_ENABLED=false
NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=true
Ruby Agent(ドキュメント)
newrelic.yml による設定
application_logging:
forwarding:
enabled: false
local_decorating:
enabled: true
環境変数による設定
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=false
NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=true
UI 設定によるログ転送の無効化
社内のポリシーなどの理由により、APMエージェントによるログ転送機能を行いたくない場合はUIの[Manage your data] からアカウント単位でログ転送機能を無効にすることができます。
この設定をDisableにした場合、APM エージェントによるログ転送はおこなれません。
この設定はログの受け入れを停止する設定では無くAgentによるログ送出を無効化する設定のため、設定を行ってもログフレームワークによるログ転送は引き続き利用出来ます。
今回のAPM エージェントによるログ転送機能によって、ログフォワーダの設定ややアプリケーションのロギングコードの変更などを行う事なく、誰でも簡単に Logs in Contextによる的確なError原因の確認を行っていただく事ができるようになりました。
Agentによるログ転送機能リリース後も、これまでの手動設定によるログ転送機能は引き続きご利用いただけます。
フレームワークの制約などにより独自のログフォワーダを利用する必要があるお客様は引き続き現在の設定をご利用ください。
また、ログ転送が簡単に実施可能になった事と合わせて、ログデータの中に入る個人情報等を保護するためのログのマスク化/ハッシュ化の機能もリリースされています。
Agentによるログ転送による情報漏洩が不安な方は是非こちらのログ難読化機能(ドキュメント)も合わせてご利用をご検討ください。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。