rsyslog:システムログをフィルタリングして別のファイルにログを送信する

rsyslog:システムログをフィルタリングして別のファイルにログを送信する

複数のホストからすべてのリモートNATイベントを取得する次の設定を持つCentOSベースのrsyslogサーバーがあります。

$template TmplcpFW, "/var/log/%HOSTNAME%.log"
if ($hostname == ["CP1CGNAT","CP2CGNAT"]) then ?TmplcpFW
& ~

/var/log/CP1CGNATのサンプルログ出力

<150>1 2018-12-20T16:07:00.482369+01:00 2018-12-20 15 - - - 06:59: CP1CGNAT_O_Poland{OR_NAT}[jservices-nat]: JSERVICES_NAT_RULE_MATCH: proto 6 (TCP) application: any, xe-1/0/1.1718:100.70.0.2:59794 -> 109.32.8.15:80, Match NAT rule-set: (null), rule: OR_NAT_Poland, term: t1
<150>1 2018-12-20T16:07:00.482369+01:00 2018-12-20 15 - - - 06:59: CP1CGNAT_O_France{OR_NAT}JSERVICES_SESSION_OPEN: application:none, xe-1/0/1.1718 100.70.0.2:59794 [55.93.69.53:26620] ->  109.32.8.15:80 (TCP) 
<150>1 2018-12-20T16:07:11.091313+01:00 2018-12-20 15 - - - 07:10: CP1CGNAT_O_UK{OR_NAT}JSERVICES_SESSION_CLOSE: application:none, xe-1/0/1.1718 100.70.0.2:59778 [55.93.69.60:40136] ->  109.32.8.15:80 (TCP) 

プレフィックス "syslog ホスト 10.10.10.10 log-prefix CP1CGNAT_O_Poland" を使用して NAT デバイスサービスを設定しました。

次に、次のタイムスタンプを持つプレフィックス値に基づいて、上記のログを別のディレクトリ/ファイルに分割したいと思います。

/Poland/Logs_Poland_2018-12-20, /France/Logs_France_2018-12-20, /UK/Logs_UK_2018-12-20

rsyslogでこれを達成する方法を提案できますか?


コメントから更新:

NATデバイスで設定されたさまざまなログプレフィックスをフィルタとして使用し、テンプレートでは次のように使用しました(合計10個の同様のテンプレート)。

$template TmplcpFW_P, "/var/log/NIPFW/Poland/Poland_%HOSTNAME%_%$year%.%$month%.%$day%.log" 
if ($hostname == ["CP1CGNAT","CP2CGNAT"]) and $msg contains 'CP1CGNAT_O_Poland' then ?TmplcpFW_P 
$template TmplcpFW_F, "/var/log/NIPFW/France/France_%HOSTNAME%_%$year%.%$month%.%$day%.log" 
if ($hostname == ["CP1CGNAT","CP2CGNAT"]) and $msg contains 'CP1CGNAT_O_France' then ?TmplcpFW_F

上記の条件に一致するすべてのログをそのディレクトリ/ファイルに移動し、残りのログを/var/log/messagesに移動したいと思います。

ベストアンサー1

おすすめ記事