CentOS 7でrsyslogサーバを構築する
Pocket

CentOS 7でrsyslogサーバを構築し、クライアントからのログを受け付ける設定をする。

1.基本的な設定

サーバ側の設定

まずはrsyslogサーバとなるホスト上で、以下のように設定ファイル(/etc/rsyslog.conf)の記述を変更する。

●/etc/rsyslog.conf

# Provides UDP syslog reception
$ModLoad imudp # コメントアウトを解除(UDP)
$UDPServerRun 514 # コメントアウトを解除(UDP)

# Provides TCP syslog reception
$ModLoad imtcp # コメントアウトを解除(TCP)
$InputTCPServerRun 514 # コメントアウトを解除(TCP)

 

送信元を制限する場合は、以下の設定も追記する。
※TCPとUDPを1行で設定はできないので注意(分けて記述する必要がある)。

$AllowedSender UDP, 127.0.0.1, *.example.jp, 192.168.0.0/24 # UDPの場合
$AllowedSender TCP, 127.0.0.1, *.example.jp, 192.168.0.0/24 # TCPの場合

 

設定ファイル編集後、Firewalldのポートを開放しサービス再起動をする。

firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload
systemctl restart rsyslog

 

クライアント側の設定

次に、クライアント側でログの転送設定をする。
※今回はクライアント側もCentOS 7を用いている。

●/etc/rsyslog.conf

# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
$ActionQueueFileName fwdRule1 # unique name prefix for spool files コメントアウト解除
$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)  コメントアウト解除
$ActionQueueSaveOnShutdown on # save messages to disk on shutdown  コメントアウト解除
$ActionQueueType LinkedList # run asynchronously  コメントアウト解除
$ActionResumeRetryCount -1 # infinite retries if host is down  コメントアウト解除
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
*.* @Rsyslogサーバのホスト名orIPアドレス:514  # UDPの場合
*.* @@Rsyslogサーバのホスト名orIPアドレス:514 #TCPの場合
# ### end of the forwarding rule ###

 

設定ファイル編集後、サービスを再起動する。

systemctl restart rsyslog

 

これで、クライアントのログがrsyslogサーバに転送されるようになる。

Sponsored Links

2.ログ分け

先ほどまでの設定でクライアントからサーバへログが転送されるようになったが、このままだとサーバ側の「/var/log/messages」に書き込まれてしまう。
rsyslogでは以下のような変数を利用できるので、テンプレート機能と組み合わせて設定してやるといいだろう。

  • %fromhost% … ログのクライアントホスト名
  • %fromhost_ip% … ログのクライアントIPアドレス
  • %$year% … 西暦年
  • %$month% … 西暦月
  • %$day% … 西暦日

 

以下、設定例(追記)。
※「ClinetMessage」はテンプレート名なので、環境に合わせて任意の名称を付与すること。

クライアントのホスト名ごとに分ける

$template ClinetMessage,"/var/log/rsyslog/%fromhost%/messages.log"
*.*     -?ClinetMessage

 

さらに日付ごとに分ける

$template ClinetMessage,"/var/log/rsyslog/%fromhost%/%$year%%$month%%$day%_messages.log"
*.*     -?ClinetMessage

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。