rsyslog:開始フィールドからメッセージの終わりまで文字列を切り捨てる方法

rsyslog:開始フィールドからメッセージの終わりまで文字列を切り捨てる方法

rsyslogを介して処理したい汚れた機器があります。作業の90%が完了しましたが、ここで停止しました。

rawmsg: '<133>2022-07-15 17:11:11 eleservice-sw02 51891 Logout the web by admin on web (169.254.101.1).'
rawmsg: '<133>2022-07-15 17:11:14 eleservice-sw02 51890 Login the web by admin on web (169.254.101.1).'
rawmsg: '<132>2022-07-15 18:10:14 piknov29-sw42 43557 CPU RISING THRESHOLD: Total CPU Utilization is 83%.'

だから私の質問は、フィールド番号5(F、32:5)から行末までの文字列を選択する方法です。

答え1

結局正規表現を使うべきだと思います。

template(name="jetstream"
type="string"
string= "%fromhost%||%syslogfacility%||%syslogpriority%||%syslogseverity%||%msg:F,32:3%||%$year%-%$month%-%$day% %timegenerated:8:25%||%msg:R,ERE,4,FIELD:(\\s)([0-9][0-9][0-9][0-9][0-9])(\\s)(.+)--end%||tp-link\n")

鍵は次のとおりです。

%msg:R,ERE,4,FIELD:(\\s)([0-9][0-9][0-9][0-9][0-9])(\\s)(.+)--end%

すばらしいわけではありませんが、効果があります。 rsyslog/regexを使った初体験

関連情報