Ubuntu 16.04
 

Rsyslog : リモートホストにログを転送する
2016/09/12
 
リモートホストにログを転送して、特定ホストで複数ホストのログを一括管理できるようにします。
ここでは以下のような環境を例にします。
+----------------------+          |          +----------------------+
| [  Syslog Server   ] |10.0.0.30 | 10.0.0.51| [  Syslog Client   ] |
|    dlp.srv.world     +----------+----------+   node01.srv.world   |
|                      |                     |                      |
+----------------------+                     +----------------------+

[1] ログを受信して一括管理する側のホストで、リモートホストのログを TCP 経由で受信できるよう設定します。
root@dlp:~#
vi /etc/rsyslog.conf
# 22-23行目:コメント解除

module(load="imtcp")
input(type="imtcp" port="514")
# 許可する送信元を指定

$AllowedSender TCP, 127.0.0.1, 10.0.0.0/24, *.srv.world
root@dlp:~#
systemctl restart rsyslog

[2] 送信側ホストの設定です。
root@node01:~#
vi /etc/rsyslog.d/50-default.conf
# 例として auth,authpriv.* のログを転送

auth,authpriv.*    
@@dlp.srv.world:514
# 最終行に追記 (ログ受信サーバーダウン時の設定)

# キューファイルのプレフィックス
$ActionQueueFileName queue
# キューファイルを保存する領域の最大サイズ
$ActionQueueMaxDiskSpace 1g
# シャットダウン時にキューをディスクに書き出す
$ActionQueueSaveOnShutdown on
# LinkedList方式でキューを管理 (メモリを動的に割り当てる方式)
$ActionQueueType LinkedList
# 受信サーバーダウン時のリトライ回数 (-1 で無制限, 0 でリトライしない
$ActionResumeRetryCount -1

root@node01:~#
systemctl restart rsyslog

[3] 受信側のホストでログを見てみると、以下のようにログが記録されていることが分かります。
root@dlp:~#
tail -30 /var/log/auth.log

Sep 11 09:28:17 dlp systemd: pam_unix(systemd-user:session): session opened for user root by (uid=0)
Sep 11 09:28:17 dlp login[2275]: ROOT LOGIN  on '/dev/ttyS0'
Sep 11 10:17:01 dlp CRON[2342]: pam_unix(cron:session): session opened for user root by (uid=0)
Sep 11 10:17:01 dlp CRON[2342]: pam_unix(cron:session): session closed for user root
Sep 11 14:26:57 node01 login[2527]: pam_unix(login:session): session closed for user ubuntu
Sep 11 14:26:57 node01 systemd-logind[2032]: Removed session 6.
Sep 11 14:26:57 node01 systemd: pam_unix(systemd-user:session): session closed for user ubuntu
Sep 11 14:27:03 node01 login[2611]: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
Sep 11 14:27:03 node01 systemd: pam_unix(systemd-user:session): session opened for user root by (uid=0)
Sep 11 14:27:03 node01 systemd-logind[2032]: New session 7 of user root.
Sep 11 14:27:03 node01 login[2658]: ROOT LOGIN  on '/dev/ttyS0'
[4] ホストごと、年月日ごとにログファイルを分ける場合は、受信サーバー側で以下のように設定します。
root@dlp:~#
vi /etc/rsyslog.d/50-default.conf
# 追記:ログを書き出す場所を定義

$template Auth_log,"/var/log/auth.d/%fromhost%_%$year%%$month%%$day%.auth"
# 追記:定義した場所を指定 (ハイフンは非同期書き込みの指定)

auth,authpriv.*    
-?Auth_log
root@dlp:~#
systemctl restart rsyslog
root@dlp:~#
ll /var/log/auth.d/

total 16
-rw-r-----  1 syslog adm     483 Sep 14 14:49 dlp_20160914.auth
-rw-r-----  1 syslog adm     411 Sep 14 14:49 node01.srv.world_20160914.auth
 
Tweet