CentOS8でrsyslogの出力フォーマットを変更する

掲題の通り、rsyslogの出力フォーマットを変更していきます。
しかしながら、私自身がrsyslogの仕様をあまり理解できていないので、rsyslogのカスタムした出力フォーマットの適用方法だけ試す目的で実施しています。

環境

  1. CentOS 8.1

アーキテクチャx86-64

  1. rsyslog

バージョン : 8.37.0
リリース : 13.el8

新しい出力フォーマットをテンプレートとして登録する

rsyslogのコンフィグである /etc/rsyslog.conf を編集してカスタムした出力フォーマットをテンプレートとして追加します。
追加箇所は #### RULES #### と書いてある部分より上の部分で設定の読み込みをやっているようなので、#### RULES #### の真上にテンプレートの設定を追加していきます。

template(name="test" type="string"
         string="%HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf% %TIMESTAMP:::date%\n"
        )

今回はテストなので、タイムスタンプをログの先頭から一番後ろに変更するフォーマットです。
また、typeは単純化と思われるstringを選択しています。
設定する変数は正直あまり分かっていません。
rsyslogのテンプレートに関するドキュメントのリンクは以下になるので、変数などの詳細はここを参照してください。
RSyslog Documentation - rsyslog

出力フォーマットを実際のログ出力に適用する

次に出力フォーマットをログ出力に適用します。
今回は /var/log/messages の出力を置き換えていきます。
既存の出力設定をコメントアウトして action でテンプレートを適用します。

#*.info;mail.none;authpriv.none;cron.none                /var/log/messages   #Comment Out
*.info;mail.none;authpriv.none;cron.none action(type="omfile" file="/var/log/messages" template="test")

これでrsyslogのサービスを再起動してやればカスタムした出力フォーマットが適用されます。


今回の手順は出力にテンプレートを適用する手順でしたが、以下を見る限りではrsyslogをSyslogサーバとして利用する場合でもテンプレート自体は流用できそうかなとは思います。
23.5. ロギングサーバーでの rsyslog の設定 Red Hat Enterprise Linux 7 | Red Hat Customer Portal