syslog-ngのインストール

オリジナルのsyslogdは細かいログの制御・監査が行えない。また、セキュリティがあまり考慮されていないなどの問題があります。
これらの問題点を解消したのが syslog-ng とよばれるソフトウェアです。
ここでは、syslog-ng の導入及び、syslogd からの移行について説明しています。

ソース入手

syslog-ng導入には syslog-ng本体 と libolライブラリ が必須となります。

以下のURLから最新のソースを入手してください。
http://www.balabit.com/products/syslog_ng/

syslog-ng本体は syslog-ng-1.6.7.tar.gz をダウンロードしました。
http://www.balabit.com/downloads/syslog-ng/1.6/src/syslog-ng-1.6.7.tar.gz
libolライブラリは libol-0.3.15.tar.gz をダウンロードしました。
http://www.balabit.hu/downloads/syslog-ng/libol/0.3/libol-0.3.15.tar.gz

インストール

(1) libolライブラリ
libolライブラリをコンパイルまでします。

$ tar xvfz libol-0.3.15.tar.gz
$ cd libol-0.3.15
$ ./configure
$ make

(2) syslog-ng本体

$ tar xvfz syslog-ng-1.6.7.tar.gz
$ cd syslog-ng-1.6.7
$ ./configure --with-libol=../libol-0.3.15
$ make
$ su
# make install

以下にインストールされます
/usr/local/sbin/syslog-ng
/usr/local/man/man5/syslog-ng.conf.5
/usr/local/man/man8/syslog-ng.8

syslog-ng.confの設定

syslog-ngの設定ファイルは /usr/local/etc/syslog-ng/syslog-ng.conf を利用します。
インストール後、ファイルは存在しないので用意する必要があります。

# mkdir /usr/local/etc/syslog-ng/

syslog-ngを展開したディレクトリ内にテンプレートがありますのでそちらをコピーします。

# cp ./contrib/syslog-ng.conf.RedHat /usr/local/etc/syslog-ng/syslog-ng.conf

内容は以下の通りです。デフォルトのまま利用できると思いますが私は log_fifo_size をコメントしました。
syslog-ng.confの詳しい説明は syslog-ng.confの設定 を参照下さい。

options { sync (0);
          time_reopen (10);
          #log_fifo_size (1000);
          long_hostnames (off);
          use_dns (no);
          use_fqdn (no);
          create_dirs (no);
          keep_hostname (yes);
        };

source s_sys { file ("/proc/kmsg" log_prefix("kernel: ")); 
               unix-stream ("/dev/log"); internal(); };

destination d_cons { file("/dev/console"); };
destination d_mesg { file("/var/log/messages"); };
destination d_auth { file("/var/log/secure"); };
destination d_mail { file("/var/log/maillog"); };
destination d_spol { file("/var/log/spooler"); };
destination d_boot { file("/var/log/boot.log"); };
destination d_cron { file("/var/log/cron"); };
destination d_mlal { usertty("*"); };

filter f_filter1     { facility(kern); };
filter f_filter2     { level(info) and
                     not (facility(mail)
                        or facility(authpriv) or facility(cron)); };
filter f_filter3     { facility(authpriv); };
filter f_filter4     { facility(mail); };
filter f_filter5     { level(emerg); };
filter f_filter6     { facility(uucp) or
                     (facility(news) and level(crit)); };
filter f_filter7     { facility(local7); };
filter f_filter8     { facility(cron); };

#log { source(s_sys); filter(f_filter1); destination(d_cons); };
log { source(s_sys); filter(f_filter2); destination(d_mesg); };
log { source(s_sys); filter(f_filter3); destination(d_auth); };
log { source(s_sys); filter(f_filter4); destination(d_mail); };
log { source(s_sys); filter(f_filter5); destination(d_mlal); };
log { source(s_sys); filter(f_filter6); destination(d_spol); };
log { source(s_sys); filter(f_filter7); destination(d_boot); };
log { source(s_sys); filter(f_filter8); destination(d_cron); };

また、現在利用している syslog.conf を syslog-ng.conf に変換するツールも展開したディレクトリにあります。

# cd syslog-ng展開ディレクトリ
# cd contrib
# ./syslog2ng /etc/syslog.conf > /usr/local/etc/syslog-ng/syslog-ng.conf

とすることで、前まで利用していた syslog.conf を 簡単に syslog-ng.conf に変換する事が可能です。
作成したsyslog-ng.confはそのままではLinuxでは利用できませんので source構文を以下のように変更する必要があります。

#source local {
#        unix-stream("/dev/log");
#        udp(ip(0.0.0.0) port(514));
#        internal();
#};
source local { 
        file ("/proc/kmsg" log_prefix("kernel: "));
        unix-stream ("/dev/log"); internal(); 
};

syslog-ng.confについては syslog-ng.confの設定 を参照下さい。
syslog-ng.confの設定が完了したら次はsyslogd から syslog-ng へ移行しましょう。

syslogd から syslog-ng へ移行

(1) syslogdの停止

# /etc/rc.d/init.d/syslog stop
# chkconfig --del syslog            <-syslogのサービスが自動起動停止

(2) syslog-ngの起動

syslog-ngの自動起動スクリプトはsyslog-ngの展開ディレクトリにあります。それをコピーし起動します。

# cp ./contrib/init.d.RedHat-7.3 /etc/rc.d/init.d/syslog-ng

スクリプトの先頭に #!/bin/sh を追加します。

# vi /etc/rc.d/init.d/syslog-ng
---------------------
#!/bin/sh
---------------------
# chmod 755 /etc/rc.d/init.d/syslog-ng
# /etc/rc.d/init.d/syslog-ng start

これで syslog-ng で起動するようになりました。

続いて起動後に自動的に立ち上がるように ckconfig を実施しておきましょう

# chkconfig --add syslog-ng

これで syslogd から syslog-ng への移行は完了しました。

logrotate の設定変更

logrotate の syslog のローテートで syslogのプロセスに対してHUPシグナルを送るように設定をしているので syslog-ng に対して送るように設定変更する必要があります。

# vi /etc/logrotate.d/syslog
--------------------
/var/log/messages {
    postrotate
        /usr/bin/killall -HUP syslog-ng   <-ここをsyslog-ngへ変更
    endscript
}
--------------------

すべての HUPシグナルを syslog-ng に変更すれば設定完了です。
syslog-ngは 設定ファイル syslog-ng.conf を編集しswatchのような機能も持たせる事ができます。
詳しくは syslog-ng.confの設定 を参照下さい。

marronおすすめの参考書 by Amazon
SupportDeskパック Standard24(Linuxサポート付)3年[カスタムメイド対応] SupportDeskパック Standard24(Linuxサポート付)3年[カスタムメイド対応]
/
SupportDeskパック Standard(Linuxサポート付)4年[カスタムメイド対応] SupportDeskパック Standard(Linuxサポート付)4年[カスタムメイド対応]
/
SupportDeskパック Standard24(Linuxサポート付)4年[カスタムメイド対応] SupportDeskパック Standard24(Linuxサポート付)4年[カスタムメイド対応]
/

Copyright(C) 2004-2006 マロンくん.NET ~サーバ管理者への道~ All Rights. Reserved.