コンピュータ/ソフトウェア関連Tips

本文へ

syslog-ng

更新: 2013年07月06日(土) 17:36
公開: 2013年07月06日(土) 17:33

リモートホスト毎にログを取りたいと思っていたら、そのまま参考になるページがあった。

参考

http://nullpopopo.blogcube.info/2008/08/syslogng.html

http://d.hatena.ne.jp/naga_sawa/20120503/1336007997

前者をほぼそのまま実行。違いは、パッケージインストールしたこと、元々インストールされていたのがsyslogではなくrsyslogという点、 obsoletedな命令の変更、rsyslogd停止を追加したことくらい。

$ sudo yum --enablerepo=epel install syslog-ng syslog-ng-libdbi

syslog-ng-libdbiをインストールしないと、

Plugin module not found in 'module-path'; module-path='/lib64/syslog-ng', module='afsql'

という警告がでる。

$ sudo /sbin/chkconfig rsyslog off

$ sudo /sbin/chkconfig rsyslog --list
rsyslog         0:off   1:off   2:off   3:off   4:off   5:off   6:off
$ sudo /sbin/chkconfig syslog-ng on

$ sudo /sbin/chkconfig syslog-ng --list
syslog-ng       0:off   1:off   2:on    3:on    4:on    5:on    6:off
$ cd /etc/syslog-ng
$ sudo cp syslog-ng.conf syslog-ng.conf.original

$ sudo vi syslog-ng.conf
source s_sys {
        file ("/proc/kmsg" program_override("kernel: "));
        unix-stream ("/dev/log");
        internal();
        # udp(ip(0.0.0.0) port(514));
};

の下に、以下を追加。

#
# Remote logging
#
source s_remote {
        tcp(ip(0.0.0.0) port(514));
        udp(ip(0.0.0.0) port(514));
};
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" sync(10)); };
destination d_spol { file("/var/log/spooler"); };
destination d_boot { file("/var/log/boot.log"); };
destination d_cron { file("/var/log/cron"); };
destination d_kern { file("/var/log/kern"); };
destination d_mlal { usertty("*"); };

destination d_cons { file("/dev/console"); };
destination d_mesg { file("/var/log/messages.$YEAR$MONTH$DAY"); };
destination d_auth { file("/var/log/secure.$YEAR$MONTH$DAY"); };
destination d_mail { file("/var/log/maillog.$YEAR$MONTH$DAY" flush_lines(10)); };
destination d_spol { file("/var/log/spooler.$YEAR$MONTH$DAY"); };
destination d_boot { file("/var/log/boot.log.$YEAR$MONTH$DAY"); };
destination d_cron { file("/var/log/cron.$YEAR$MONTH$DAY"); };
destination d_kern { file("/var/log/kern.$YEAR$MONTH$DAY"); };
destination d_mlal { usertty("*"); };

destination d_separatedbyhosts {
        file("/var/log/syslog-ng/$HOST-$FACILITY-$YEAR$MONTH$DAY.log");
};

sync(10)をflush_lines(10)にしてある。sync(10)のままだと、

Your configuration file uses an obsoleted keyword, please update your configuration; keyword='sync', change='flush_lines'

という警告がでる。

#log { source(s_sys); filter(f_kernel); destination(d_cons); };
log { source(s_sys); filter(f_kernel); destination(d_kern); };
log { source(s_sys); filter(f_default); destination(d_mesg); };
log { source(s_sys); filter(f_auth); destination(d_auth); };
log { source(s_sys); filter(f_mail); destination(d_mail); };
log { source(s_sys); filter(f_emergency); destination(d_mlal); };
log { source(s_sys); filter(f_news); destination(d_spol); };
log { source(s_sys); filter(f_boot); destination(d_boot); };
log { source(s_sys); filter(f_cron); destination(d_cron); };

の下に

log { source(s_remote); destination(d_separatedbyhosts); };

を追加。

$ sudo mkdir /var/log/syslog-ng
$ sudo /etc/init.d/rsyslog stop

システムロガーを停止中:                                    [  OK  ]
$ sudo /etc/init.d/syslog-ng start

syslog-ng を起動中:                                        [  OK  ]
$ logger -p local0.info -t test hogehoge
$ sudo tail /var/log/messages.20130608

Jun  8 22:23:16 svr2 syslog-ng[49579]: syslog-ng starting up; version='3.2.5'
Jun  8 22:26:21 svr2 test: hogehoge
$ cd /etc/logrotate.d

$ cat syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

$ sudo rm syslog

同一カテゴリーの記事

Tags: LINUX CentOS

© Someone in the TERRA

編集