私は数日間それを把握しようとしているので、誰かがこの質問で私を助けてくれることを本当に願っています。ログペイロードのいくつかのキーワードに基づいてFluentdのログメッセージの重大度(INFO、ERROR、WARNINGなど)を変更する方法はありますか?
私はGKEのkubernetesで動作するコンテナを持っています。 /var/log/containers/my_container.logでは、私は(異なるフォーマットでいくつかの他のログの中で)このようなものを持っている:
{"log":"17-Oct-2017;04:36:29.744 : [main] [server:] [id:] [yt:] ERROR no.myproject.service.Server - call failed for some reason\n","stream":"stdout","time":"2017-10-17T04:36:29.750702216Z"}
このログはINFOログとしてのStackdriver(GKEでFluentd出力)に現れるなど:
23:02:32.000 17-Oct-2017;04:36:29.744 : [main] [server:] [id:] [yt:] ERROR no.myproject.service.Server - call failed for some reason
ので
23:02:32.000
は(のStackdriverの正常な動作です)、それに追加されます。このフォーマットはフォーマット2として参照されます。
このログメッセージは実際には(ペイロードの内容に基づいて)エラーログメッセージなので、Stackdriver(Fluentd)にERRORとして表示します。
私がしようとしています:
<filter reform.**>
type parser
format /^(?<time>\d{2} [^\s]*) : (?<message2>[^ \]]*)\] (?<message3>[^ \]]*)\] (?<message4>[^ \]]*)\] (?<message5>[^ \]]*)\] (?<severity>\w)\s+(?<log2222>.*)/
reserve_data true
suppress_parse_error_log false
key_name log
</filter>
ERRORにメッセージ変化の重症度を得ることを望んもこの中にいくつかの新しいキー/値(としてログに[..]フィールドの内容を取得しますケースメッセージ2:メインなど)
しかし、このフィルタを設定ファイルに追加した後も、出力ログは以前と同じですが、変更はありません。
私には何が欠けていますか? Regexパターンを書いているときに、kubernetesのログファイルやフォーマット2と呼ばれるメッセージの "ログ"フィールドを実際に考慮する必要があるかどうかはわかりません(Stackdriver上に時間が追加されています) 。
私は本当に助言に感謝します、それは大きな助けになるでしょう。
ありがとうございました。今私は出力のペイロードから重大度を取得しています。もう一つ質問があります。私はまた、メッセージ5とlog2222へのmessage2の新しいフィールドが追加されることを期待していましたが、新しいフィールドは追加されません。ログtext-payloadからいくつかのデータを抽出し、出力の新しい追加フィールドとして取得するにはどうすればいいですか?(上記の例では "message2:[main]"のように) – samanta
ようこそ。私はあなたのツールを知らないので、それが助けになるかどうかはわかりませんが、置換文字列を指定することができれば、$ {severity} message2:$ {message2} 'を置き換えることができます。これで 'ERROR message2:[main'が出ます。新しいバージョン[here](https://regex101.com/r/o5lu2j/2)を参照してください。 – PJProudhon