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行を以下のように処理します。
- エージェントが冗長モードで実行される場合: DEBUGエージェントのログエントリとしてSTDERRの全行を転送するだけで、`msg`フィールド内に統合行のコンテキストを配置します。
- それ以外の場合: 想定されるフォーマット(下記参照)に沿って行を解析し、深刻度が `fatal` または `error` の統合によって生成されたエントリのみをエージェントの ERROR レベルとして記録します。この場合、フィールドは構造化された方法で抽出され、転送されます (したがって、エージェントで JSON 出力が有効な場合、フィールドはクエリ可能になります。
統合STDERR期待フォーマット
行は、等号で区切られたキーと値のペアのリストであることが期待されます。キーには任意の文字を含めることができますが、値には3つの異なる形式があります。
- string:<quote>任意の文字(エスケープされた引用符を含む) ▽"< quote>
- 地図:&{任意の文字}。
- 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"