構築環境
OS : CentOS release 5.5 (Final)
サーバIP : 192.168.0.100
syslog-ng : syslog-ng-2.1.4-1.el5
事前準備
1.epelレポジトリの追加
syslog-ngはepelレポジトリにあるので、epelのパッケージを利用してインストールします。
なお、今後の競合を避けるため、基本的にepelのリポジトリは無効にし、
syslog-ngインストール時のみ一時的に有効にして利用します。
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
# vi /etc/yum.repos.d/epel.repo
### enabled=1 #<-コメントアウト br="">enabled=0 #<-追記 enabled="0に設定しておき、epelを利用したい時だけ、「--enablerepo=epel」として利用します。
2.libevtlogとlibdbiをインストール
syslog-ngを利用するために必要なlibevtlogとlibdbiをインストールしておきます。
# cd /usr/local/src
# wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/pkgs/pool/e/eventlog/rhel-5_syslog-ng-2.1/libevtlog0-0.2.8-1.i386.rpm
# rpm -ivh libevtlog0-0.2.8-1.i386.rpm
# wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/pkgs/pool/l/libdbi8/rhel-5_syslog-ng-2.1/libdbi8-0.8.2bb2-3.rhel5.i386.rpm
# rpm -ivh libdbi8-0.8.2bb2-3.rhel5.i386.rpm
syslog-ngインストール、設定
サーバ・クライアント共にsyslog-ngをインストールし、
クライアントから送信したsyslogメッセージをサーバ側で確認する方法を以下に示します。
1.syslog-ngインストール
yumコマンドのオプションでepelのリポジトリを有効にし、syslog-ngをインストールします。
# yum install --enablerepo=epel syslog-ng
2.syslog-ng設定ファイル(/etc/syslog-ng/syslog-ng.conf)の編集(共通)
2-1.optionsタグの編集
# vi /etc/syslog-ng/syslog-ng.conf
options {
(省略)
stats (86400); # <- syslog-ng="" 1="" 86400="" br="">perm (0644); # <- pre="">
2-2.syslog-ng内部で生成されるメッセージ出力の定義を追加
source s_internal { internal(); };# <- syslog-ng="" br="">destination d_syslognglog { file("/var/log/syslog-ng.log"); }; # <- var="" log="" syslog-ng="" br="">log { source(s_internal); destination(d_syslognglog); }; # <- source="" destination="" pre="">
3.syslog-ng設定ファイル(/etc/syslog-ng/syslog-ng.conf)の編集(サーバ)
3-1.sourceタグの追加
リモートからsyslogメッセージの受信を行うための設定を追記します。
# tcp,udp共に514ポートで待ち受け(ログの受信に関する設定)
source s_remote {
tcp(ip(0.0.0.0) port(514));
udp(ip(0.0.0.0) port(514));
}
3-2.destinationタグの追加
リモートから受信したsyslogメッセージをファイルに保存する設定を追記します。
# /var/log/syslog-ng//message.YYYY-MM-DDでファイルを作り
# syslogメッセージを保存する。
destination d_separatedbyhosts {
file("/var/log/syslog-ng/$HOST/messages.$YEAR-$MONTH-$DAY" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));
};
3-3.logタグの追加
3-1,3-2で追加したsourceとdestinationを紐付けます。
log { source(s_remote); destination(d_separatedbyhosts); };
3-4.設定したsyslog-ng.confに問題がないことを確認
# syslog-ng -s
(何も表示されないこと)
4.syslog-ng設定ファイル(/etc/syslog-ng/syslog-ng.conf)の編集(クライアント)
サーバに対してsyslogメッセージを送信するために、以下の設定を追加します。
4-1.destinationタグの追加
#syslogメッセージを対象のサーバへudpの514で送信する設定
destination d_loghost { udp("192.168.0.100" port(514)); }; #<-tcpにしたい場合は、udpの部分をtcpに編集する span="">
4-2.logタグの追加
# sourceとfilterとdestinationを関連付ける設定
log { source(s_sys); filter(f_default); destination(d_loghost); };
#なお、filterのf_defaultはデフォルトで用意されているものを利用します。
4-3.設定したsyslog-ng.confに問題がないことを確認
# syslog-ng -s
(何も表示されないこと)
5.logrotateスクリプトの編集
既存のsyslogのローテーション設定を引き継ぐため、/etc/logrotate.d/syslogファイルの設定を編集します。
# vi /etc/logrotate.d/syslog
### /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true #<-コメントアウト br=""> /etc/rc.d/init.d/syslog-ng reload > /dev/null 2>&1 #<-追記 pre="">
6.自動起動設定
6-1.syslogの自動起動設定
既存で動作しているsyslogdの自動起動の設定をオフに変更します。
# chkconfig --list syslog
syslog 0:off 1:off 2:off 3:off 4:off 5:off 6:off #<-offになっていることを確認します pre="">
6-2.syslog-ngの自動起動設定
# chkconfig syslog-ng on
# chkconfig --list syslog-ng
syslog-ng 0:off 1:off 2:on 3:on 4:on 5:on 6:off #<-2,3,4,5がonになっていることを確認します pre="">
6-3.既存で動作しているsyslogを停止
# /etc/init.d/syslog stop
# /etc/init.d/syslog status
syslogd は停止しています #<-syslogdが停止していることを確認します br=""> klogd は停止しています
6-4.syslog-ngを起動
# /etc/init.d/syslog-ng start
Starting syslog-ng: [ OK ]
# /etc/init.d/syslog-ng status
syslog-ng (pid 13824) を実行中... #<-syslog-ngが起動していることを確認します pre="">
7.syslogメッセージ転送確認
7-1.クライアント側からloggerコマンドでsyslogメッセージを送信
# logger -p kern.info "test"
7-2.サーバ側で転送されたsyslogメッセージを確認
# cat /var/log/syslog//messages.YYYY-MM-DD
Mar 4 17:5516 test-client root: test #<-メッセージが受信できていること確認します pre="">