当記事では、rsyslogで受信したログを送信元ホスト名、IPアドレスごとに自動でフォルダー分けする方法について記載します。
rsyslogは条件によりログメッセージを振り分ける機能があります。この機能を利用して、ログメッセージを送信元ホスト名、送信元IPアドレス別にフォルダー分けする設定を行っていきます。
前提条件
・rsyslogの受信サーバーとしてCentOS 7を用います。
・syslogの送信元サーバーは、各自設定を行ってください。
・syslogを受信するためにはファイアウォールの設定が必要です。以下の記事を参考に設定を行ってください。
rsyslogをホスト名でフォルダー分けする方法
まず、syslog受信側の設定を行います。
$ vi /etc/rsyslog.conf
15~16行目と20~21行目をコメントアウトして外部からsyslogの転送を受け入れます。
$ModLoad imudp $UDPServerRun 514
$ModLoad imtcp $InputTCPServerRun 514
次に、rsyslogファイルの50行目に以下のコマンドを追記します。
$template hostFile, “/var/log/rsyslog/%HOSTNAME%/%$year%-%$month%-%$day%.log”
50行目のテンプレートでログの出力名を定義します。
/var/log/rsyslog/送信元ホスト名/年-月-日.log
%$year% 年 %$month% 月 %$day% 日
さらに、57行目に以下のコマンドを追記します。
:fromhost-ip, !isequal, “127.0.0.1” -?hostFile
57行目で自分以外のログを受信した場合に hostFileテンプレートで指定した場所にログを保存します。
これで設定が完了しました。rsyslogを再起動します。
$ systemctl restart rsyslog
実際にホスト名でフォルダ分けされているのか、確認するために、Loggerコマンドで送信側からログを発生させます。
$ logger test -n “xxx.xxx.xxx.xxx”
ホスト名でフォルダー分けされているのが確認出来ました。
$ ls
rsyslogをIPアドレスでフォルダー分けする方法
先程のrsyslogファイルの50行目を以下のように%fromhost-ip%に変更します。
$template hostFile, “/var/log/rsyslog/%fromhost-ip%/%$year%-%$month%-%$day%.log”
rsyslogを再起動して、もう一度Loggerコマンドで送信側からログを発生させます。
$ logger test -n “xxx.xxx.xxx.xxx”
受信側で確認を行います。
$ ls
IPアドレス名でフォルダー分けされているのが確認出来ました。
以上で、rsyslogをホスト、IPアドレスごとに自動でフォルダー分けする方法の説明を終了します。
記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。