News and media screen tile collage

APMエージェントによるネイティブログ転送のサポート

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

APM-See-logs
Logs-ui-Logs-in-Context
Errors-inBox-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

機能の有効化

現時点の最新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] からアカウント単位でログ転送機能を無効にすることができます。

Manage your data

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

APM Log Setting

この設定はログの受け入れを停止する設定では無くAgentによるログ送出を無効化する設定のため、設定を行ってもログフレームワークによるログ転送は引き続き利用出来ます。

今回のAPM エージェントによるログ転送機能によって、ログフォワーダの設定ややアプリケーションのロギングコードの変更などを行う事なく、誰でも簡単に Logs in Contextによる的確なError原因の確認を行っていただく事ができるようになりました。

Agentによるログ転送機能リリース後も、これまでの手動設定によるログ転送機能は引き続きご利用いただけます。

フレームワークの制約などにより独自のログフォワーダを利用する必要があるお客様は引き続き現在の設定をご利用ください。

また、ログ転送が簡単に実施可能になった事と合わせて、ログデータの中に入る個人情報等を保護するためのログのマスク化/ハッシュ化の機能もリリースされています。

Agentによるログ転送による情報漏洩が不安な方は是非こちらのログ難読化機能(ドキュメント)も合わせてご利用をご検討ください。