New Relicのインフラストラクチャエージェントは、独自のデータと統合のログを収集し、それらを単一のソースに統合します。デフォルトでは、ログはstandard-output
に表示され、 ログファイルに追加されます。標準出力でログを無効にするには、エージェントの構成オプションを参照してください。
基本構成
次の例は、Linuxシステムでのエージェントログの一般的な構成を示しています(Windowsまたは他のプラットフォームを実行している場合はファイルパスを変更します)。
log: level: info file: '/var/log/newrelic-infra/newrelic-infra.log' rotate: max_size_mb: 100 max_files: 5 compression_enabled: true file_pattern: YYYY-MM-DD_hh-mm-ss.log
ログの重大度レベル
インフラストラクチャは、標準のSyslog重大度レベルのサブセットを使用します:
ERROR
:エラー条件が満たされましたWARN
:警告条件が満たされましたINFO
:情報メッセージDEBUG
:デバッグレベルのメッセージが含まれています(トラブルシューティング時に役立ちます)
ログのフォーマット
インフラストラクチャエージェント v1.4.9 以降 では、ログメッセージがコンテキスト値とともにインライン化されます。これにより、グループ化やフィルタリングがしやすくなります。
containerized agent found in container containerID: VALUE
デフォルトでは、インフラストラクチャーのログはテキストとしてフォーマットされています。
フォアグラウンドモードでは、ログ出力はタイムスタンプなしのカラー表示となります。
DEBUG Sending deltas divided in blocks component=PatchSender mentityKey=ohaimaci mnumberOfBlocks=1バックグラウンドモードでは、ログはタイムスタンプ付きで出力されます。これは、サービスとして実行する場合や、ログをファイルにダンプする場合に使用されます。
time="2019-07-12T09:54:15+02:00" level=info msg="Agent service manager shutdown completed successfully." component=AgentService service=newrelic-infra
また、ログをJSONファイルとしてフォーマットすることもできます。
{"context":{},"level":"info","msg":"upstart_interval_sec: 0","timestamp":"2019-07-11T18:24:03+02:00"}{"context":{},"level":"info","msg":"plugin_dir: ","timestamp":"2019-07-11T18:24:03+02:00"}
ログ形式を変更するには、 エージェントの構成設定を参照してください。
ビルトインログローテーション
インフラストラクチャエージェントv1.28.0以降の場合、組み込みのログローテーションおよび圧縮メカニズムがエージェントで使用できます。
スマートバーボーズモード
インフラストラクチャエージェントのバージョン1.9.0以降 では、ログのスマートverboseモードを有効にすることができます。
Smart verboseモードでは、エラーメッセージが検出されるまで、デバッグメッセージがログに記録されません。エラーが検出されると、デバッグメッセージはエラーが発生する前にログファイルに書き込まれます。設定された最新の数のデバッグメッセージのみが記録されることに注意してください。例えば、設定された上限を10とした場合、エラーが検出されると、エラーが検出される前の最新の10個のデバッグメッセージがログに記録されます。
スマート冗長モードとデバッグメッセージ制限を有効にする方法の詳細については、 インフラストラクチャ構成設定を参照してください。
統合ログ管理
統合では、JSON ペイロードをSTDOUT
に書き込み、プレーンテキスト (将来構造化される JSON) ログをSTDERR
に書き込みます。
インフラストラクチャエージェントは統合STDERR
行を処理し、この出力をエージェントログに転送します。
エージェントは各STDERR
行を次のように処理します。
- When agent runs in verbose mode:
STDERR
行全体を DEBUG エージェント ログ エントリとして転送し、統合行コンテキストをmsg
フィールド内に配置します。 - Otherwise: 予期される形式 (下記を参照) に対して行を解析し、統合によって生成された重大度レベルが
fatal
またはerror
のエントリを、エージェント ERROR レベルとしてのみログに記録します。 この場合、フィールドは構造化された方法で抽出され、転送されます (したがって、エージェントに対して JSON 出力が有効になっている場合は、フィールドがクエリ可能になります)。
デフォルトでは、インフラストラクチャエージェントは、統合の実行を妨げない統合からのエラーをフィルタリングして除外します。 ログレベルが DEBUG に設定されている場合、または統合がログ構成に具体的にリストされている場合にのみ、統合からのすべてのエラーが表示されます。 たとえば、この設定では、ログレベルが INFO であっても、 nri-mssql
からのすべてのエラーが表示されます。
log: include_filters: integration_name: - nri-mssql
統合STDERR期待フォーマット
行は、等号で区切られたキーと値のペアのリストであることが期待されます。キーには任意の文字を含めることができますが、値には3つの異なる形式があります。
- string:<quote>任意の文字(エスケープされた引用符を含む) ▽"< quote>
- 地図:&{any character}
- word: スペースを除く任意の文字
エージェントの内部では、この正規表現を使ってフィールドを抽出しています。
([^\s]*?)=(".*?[^\\]"|&{.*?}|[^\s]*)
例えば、このセリフ。
time="2015-03-26T01:27:38-04:00" level=error msg="Foo bar baz" foo=bar
これらのフィールドを含む構造化されたエージェントログラインが生成されます。
- "time": "2015-03-26T01:27:38-04:00"- "level": "error"- "msg": "Foo bar baz"- "foo": "bar"