syslog-ngによるログサーバ構築(目次)


Table of Contents

はじめに

syslog-ng(RPM版)によるログサーバの構築手順を紹介します。
バージョンはrpm版の最新(2010/6/10時点)である2.1系をインストールします。

インストール環境

  • OS
    • CentOS 5.5 (kernel 2.6.18-194.3.1.el5)
  • パッケージ
    • syslog-ng-2.1.4-1
    • libevtlog0-0.2.8-1
    • libdbi8-0.8.2bb2-3

パッケージのダウンロード

eventlog

  • eventlogのダウンロード
    # 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

libdbi8

  • libdbi8のダウンロード
    # 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

syslog-ng

  • syslog-ng のダウンロード
    # wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/pkgs/pool/s/syslog-ng/rhel-5_syslog-ng-2.1/syslog-ng-2.1.4-1.rhel5.i386.rpm

インストール

  • eventlogのインストール
    # rpm -ivh libevtlog0-0.2.8-1.i386.rpm

  • libdbi8のインストール
    # rpm -ivh libdbi8-0.8.2bb2-3.rhel5.i386.rpm

  • syslog-ng のインストール
    # rpm -ivh syslog-ng-2.1.4-1.rhel5.i386.rpm

設定(サーバ側)

インストール後、syslogが停止されsyslog-ngが起動されますが、
ローカルホストのログを記録しない設定のため注意して下さい。

syslog-ng.confの設定

  • 以下の通り動作するよう設定します
    • ローカルホストのログはsyslogと同じ「/var/log」配下へ保存する
    • リモートホストのログは「/var/log/syslog-ng/$HOST/messages」へ保存する
  • 設定ファイル「/etc/syslog-ng/syslog-ng.conf」を編集します。(コメントを外しただけです)
    # vi /etc/syslog-ng/syslog-ng.conf
    
    #
    # configuration file for syslog-ng, customized for remote logging
    #
    
    source s_internal { internal(); };
    destination d_syslognglog { file("/var/log/syslog-ng.log"); };
    log { source(s_internal); destination(d_syslognglog); };
    
    # Local sources, filters and destinations are commented out
    # If you want to replace sysklogd simply uncomment the following
    # parts and disable sysklogd
    #
    # Local sources
    #
    source s_local {
        unix-dgram("/dev/log");
        file("/proc/kmsg" log_prefix("kernel:"));
    };
    #
    # Local filters
    #
    filter f_messages { level(info..emerg); };
    filter f_secure { facility(authpriv); };
    filter f_mail { facility(mail); };
    filter f_cron { facility(cron); };
    filter f_emerg { level(emerg); };
    filter f_spooler { level(crit..emerg) and facility(uucp, news); };
    filter f_local7 { facility(local7); };
    #
    # Local destinations
    #
    destination d_messages { file("/var/log/messages"); };
    destination d_secure { file("/var/log/secure"); };
    destination d_maillog { file("/var/log/maillog"); };
    destination d_cron { file("/var/log/cron"); };
    destination d_console { usertty("root"); };
    destination d_spooler { file("/var/log/spooler"); };
    destination d_bootlog { file("/var/log/boot.log"); };
    #
    # Local logs - order DOES matter !
    #
    log { source(s_local); filter(f_emerg); destination(d_console); };
    log { source(s_local); filter(f_secure); destination(d_secure); flags(final); };
    log { source(s_local); filter(f_mail); destination(d_maillog); flags(final); };
    log { source(s_local); filter(f_cron); destination(d_cron); flags(final); };
    log { source(s_local); filter(f_spooler); destination(d_spooler); };
    log { source(s_local); filter(f_local7); destination(d_bootlog); };
    log { source(s_local); filter(f_messages); destination(d_messages); };
    
    
    # Remote logging
    source s_remote {
        tcp(ip(0.0.0.0) port(514));
        udp(ip(0.0.0.0) port(514));
    };
    
    destination d_separatedbyhosts {
        file("/var/log/syslog-ng/$HOST/messages" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));
    };
    
    log { source(s_remote); destination(d_separatedbyhosts); };
    

  • 設定ファイルの構文チェックを行います。
    # syslog-ng -s

ログローテーションの設定

ローカルホストログ

  • ローカルホストのログはsyslogと同じ/var/log配下に保存するため、syslogの設定ファイルを流用します。
    ログローテーション後にsyslogプロセスではなく、syslog-ngプロセスをリロードするよう変更しています。
# vi /etc/logrotate.d/syslog

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts
    postrotate
    /etc/rc.d/init.d/syslog-ng reload 2>/dev/null #変更箇所
    endscript
}
  • 設定ファイルの構文チェックを行います。実行結果に「error」開始で始まる行がなければ問題ありません。
    # logrotate -dv /etc/logrotate.d/syslog

    エラー時は以下のように表示されます。
    error: /etc/logrotate.d/********:2 unexpected text

リモートホストログ

  • リモートホストのログは正規表現でローテーションするよう設定します。
    # vi /etc/logrotate.d/syslog-ng
    
    /var/log/syslog-ng/*/messages
    /var/log/syslog-ng/*/secure
    /var/log/syslog-ng/*/maillog
    /var/log/syslog-ng/*/spooler
    /var/log/syslog-ng/*/boot.log
    /var/log/syslog-ng/*/cron
    /var/log/syslog-ng/*/local0.log
    /var/log/syslog-ng/*/local1.log
    /var/log/syslog-ng/*/local2.log
    /var/log/syslog-ng/*/local3.log
    /var/log/syslog-ng/*/local4.log
    /var/log/syslog-ng/*/local5.log
    /var/log/syslog-ng/*/local6.log
    /var/log/syslog-ng/*/local7.log
    /var/log/syslog-ng.log {
        weekly
        rotate 52
        compress
        postrotate
            /etc/rc.d/init.d/syslog-ng reload 2>/dev/null
        endscript
    }
  • 設定ファイルの構文チェックを行います。クライアント側からログが転送されていないため、ログファイルが無いというエラーが出ますが無視します。
    # logrotate -dv /etc/logrotate.d/syslog-ng
    
    considering log /var/log/syslog-ng/*/local0.log
    error: stat of /var/log/syslog-ng/*/local0.log failed: No such file or directory
    considering log /var/log/syslog-ng/*/local1.log
    error: stat of /var/log/syslog-ng/*/local1.log failed: No such file or directory
    considering log /var/log/syslog-ng/*/local2.log
    error: stat of /var/log/syslog-ng/*/local2.log failed: No such file or directory
    considering log /var/log/syslog-ng/*/local3.log
    error: stat of /var/log/syslog-ng/*/local3.log failed: No such file or directory
    considering log /var/log/syslog-ng/*/local4.log
    error: stat of /var/log/syslog-ng/*/local4.log failed: No such file or directory
    considering log /var/log/syslog-ng/*/local5.log
    error: stat of /var/log/syslog-ng/*/local5.log failed: No such file or directory
    considering log /var/log/syslog-ng/*/local6.log
    error: stat of /var/log/syslog-ng/*/local6.log failed: No such file or directory
    considering log /var/log/syslog-ng/*/local7.log
    error: stat of /var/log/syslog-ng/*/local7.log failed: No such file or directory

設定(クライント側)

リモートホストでのログ転送設定

  • 設定ファイルのバックアップを取ります
    # cp -rp /etc/syslog.conf /etc/syslog.conf.bak
  • ログの転送設定を行います。
    # vi /etc/syslog.conf
    *.*     @192.168.11.100

  • syslogを再起動します。
    # /etc/init.d/syslog restart

起動・自動起動

自動起動の設定

  • syslogの自動起動が無効になっている事を確認します。
    # chkconfig --list syslog
    サービス syslog は chkconfig をサポートしますが実行レベルで参照されていません (run 'chkconfig --add syslog')
  • syslog-ngの自動起動が有効になっている事を確認します。
    # chkconfig --list syslog-ng
    syslog-ng       0:off   1:off   2:on    3:on    4:on    5:on    6:off

動作確認

ローカルホストのログ確認

ローカルホストのログが「/var/log」配下へ保存される事を確認します。

  • ローカルホスト(syslog-ngサーバ)でloggerコマンドを実行しテスト用のログを生成します。
    [root@serv100 ~]# logger -p kern.info "test" 
    
  • ローカルホストのログが正しく記録される事を確認します。
    [root@serv100 ~]# vi /var/log/messages
    Jun 11 01:47:26 s_local@serv100 root: test

リモートホストのログ転送

リモートホストのログがログサーバの「/var/log/syslog-ng/$HOST/messages」へ保存される事を確認します。

  • リモートホストでloggerコマンドを実行しテスト用のログを生成します。
    [root@serv101 ~]# logger -p kern.info "test" 
    
  • ローカルホスト(syslog-ngサーバ)でログが正しく記録される事を確認します。
    [root@serv100 ~]# vi /var/log/syslog-ng/192.168.11.101/messages
    Jun 11 18:27:32 192.168.11.101/192.168.11.101 root: test
このエントリーをはてなブックマークに追加
Last-modified: 2010-06-11 (金) 20:35:31   最終更新のRSS