2

出力ファイルのログごとに 1 行の JSON 形式でログを出力するカスタム アプリケーションを作成しています。これらのログを分析のために AWS CloudWatch と Splunk の両方に取得したいと考えています。私の質問は、タイムスタンプをログ行に配置する標準的な場所は何ですか? 次のように JSON blob の前に移動する必要があります。

2016-05-30 10:13:00 { "field1": 6, "field2": "Hello world!", ...}

または、次のように JSON 内に入れる必要があります。

{"timestamp": "2016-05-30 10:13:00", "field1": 6, "field2": "Hello world!", ...}

Splunk は後者を好むようです。ログ形式が _json であると伝えると、前者に不満を感じ、次のようなエラーが発生します。

05-28-2016 16:29:17.973 +0100 ERROR JsonLineBreaker - JSON StreamId:18154196253238674442 had parsing error:Unexpected character: '-' - data_source=.....

しかし、Cloudwatch は前者を望んでいるようです。つまり、タイムスタンプをログ行の最初のものとして望んでいるようです。これは、JSON 以外のログでは問題ありませんが、明らかに JSON ログでは問題ありません。私はどこでも答えを探してみましたが、タイムスタンプのフォーマットに関する記事はたくさんありますが、この JSON 関連の質問をカバーしているようには見えません。

4

1 に答える 1

0

あなたが書いたように、メッセージごとに純粋な JSON オブジェクトをログに記録することが最善の方法です。これをサポートしていないツールは、JSON ロギングをうまくサポートしていません。

Splunk は JSON ログ行を非常によく読み取ることができます。メッセージを解析し、検索結果でプレゼンテーションを強調表示します。

ただし、JSON オブジェクトとして解析できない場合、ログ行が JSON ではないという標準的な方法はありません。

于 2016-12-07T19:18:47.413 に答える