CentOS7 を Syslog サーバとして他機器からのメッセージを受信出来るようにする

CentOS7 を Syslog サーバとして設定し、他の機器から送信されるメッセージを受信するには以下のように設定します。

syslog サーバには rsyslog を使います。 設定ファイルは /etc/rsyslog.conf になりますが、これを以下のように書き換えます。

1
2
3
4
sed -i -e 's/^#$ModLoad imudp/$ModLoad imudp/g' /etc/rsyslog.conf
sed -i -e 's/^#$UDPServerRun 514/$UDPServerRun 514/g' /etc/rsyslog.conf
sed -i -e 's/^#$ModLoad imtcp/$ModLoad imtcp/g' /etc/rsyslog.conf
sed -i -e 's/^#$InputTCPServerRun 514/$InputTCPServerRun 514/g' /etc/rsyslog.conf

受信した Syslog メッセージは以下のように分類して保存することにします。

  1. ログファイルはホスト毎に異なるディレクトリに保存する (%fromhost%)
  2. ログファイル名は年・月・日を付与する (%$year%%$month%%$day%)

具体的には以下のコマンドで /etc/rsyslog.conf へ設定を追記します。

1
2
3
4
cat >> /etc/rsyslog.conf << "EOF"
$template ClinetMessage,"/var/log/rsyslog/%fromhost%/%$year%%$month%%$day%_messages.log"
*.*     -?ClinetMessage
EOF

これで設定は完了です。 rsyslog デーモンを再起動し、設定を再読込すれば完了です。

1
systemctl restart rsyslog

Syslog サーバに限りませんが、SELinux や firewalld でブロックされないよう、注意します。