New Relic のインフラストラクチャエージェントは、自分自身のデータとインテグレーションのログを収集し、それらを単一のソースに統合します。デフォルトでは、ログは 標準出力
に表示され、 ログファイル に追加されます。標準出力のログを無効にするには、 エージェントの設定オプション を参照してください。
ログの重大度レベル
インフラストラクチャーでは、標準的な Syslog の深刻度レベルのサブセットを使用しています 。
ERROR
: エラー条件を満たしています。WARN
: 警告条件を満たしています。INFO
: 情報提供のメッセージDEBUG
: デバッグレベルのメッセージが含まれています(トラブルシューティングの際に便利です)。
重要
DEBUG
レベルは、 verbose mode が有効な場合にのみ表示されます。
ログのフォーマット
インフラストラクチャエージェント 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"}
ログの形式を変更するには、 エージェントの構成設定 を参照してください。
ログローテーション
インフラストラクチャエージェントは、ネイティブなログローテーションや圧縮メカニズムを提供しません。代わりに、ほとんどの Linux ディストリビューションにデフォルトでインストールされている Linux logrotate ツール のような統合ログローテーションツールを使用することをお勧めします。
Logrotate
は、 /etc/logrotate.conf
のエントリーとして、または /etc/logrotate.d
ディレクトリのファイルとして設定することができます。
logrotate
は通常、cron ジョブとして自動的に実行されるので、cron に logrotate
エントリ(例えば、 /etc/cron.daily/logrotate
)と同様のものがあるかどうかを確認してください。
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
スマートバーボーズモード
インフラストラクチャエージェントのバージョン1.9.0以降 では、ログのスマートverboseモードを有効にすることができます。
Smart verboseモードでは、エラーメッセージが検出されるまで、デバッグメッセージがログに記録されません。エラーが検出されると、デバッグメッセージはエラーが発生する前にログファイルに書き込まれます。設定された最新の数のデバッグメッセージのみが記録されることに注意してください。例えば、設定された上限を10とした場合、エラーが検出されると、エラーが検出される前の最新の10個のデバッグメッセージがログに記録されます。
スマートバーボーズモードとデバッグメッセージの制限を有効にする方法の詳細については、 インフラストラクチャの設定 を参照してください。
インフラストラクチャエージェントv1.4.9導入前のログ取得について
以下は、 v1.4.9 の前後のインフラストラクチャエージェントのバージョンの機能比較です。 。
Agent v1.4.9以上 | v1.4.9以前 |
---|---|
フォアグラウンドモードのログ。 | フォアグラウンドモードでエージェントが一部のエントリを記録できないという問題がありました。これは、エージェントが完全に構成されるまでログサービスがデータを書き込むことができなかったためです。 |
テキストとJSON形式のログを表示します。 | ログはテキストのみ。 |
ログがインラインテキストで表示されます。 | ログは静的なリテラルとして、文脈を無視した1行で表示されます。 |
統合ログ管理
インテグレーションは、JSONペイロードをSTDOUTに、プレーンテキスト(将来的にはJSON構造化)のログをSTDERRに書き込みます。
インフラストラクチャ・エージェントは、統合されたSTDERRラインを処理し、この出力をエージェントの1つ(通常はサービス・ログ)に転送します。
エージェントは各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"