我正在尝试在Debian机器上配置RSyslog以将所有内容记录到Postgresql中,同时也像往常一样在磁盘上进行日志记录.
我正在使用一个漂亮的Debian配置,我在阅读http://www.rsyslog.com/doc/rsyslog_pgsql.html和http://www.rsyslog.com/doc/rsyslog_high_database_rate.html的文档后激活了相关的配置指令.
它似乎工作但消息被写入磁盘或发送到Postgresql只有当我停止RSyslog时,就像它缓冲所有内容,直到停止命令并在关闭之前将所有内容写入内存.
虽然我可能没有丢失任何消息,但它不是很方便,因为它引入了大量的延迟(我不知道它是否甚至在关闭之前转储任何东西?),有没有办法减少它所以我可以拥有,正常情况(服务器不忙),几乎是实时记录?
这是我当前的配置文件:
$ModLoad imuxsock $ModLoad imklog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 $WorkDirectory /var/spool/rsyslog $IncludeConfig /etc/rsyslog.d/*.conf auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log user.* -/var/log/user.log mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err news.crit /var/log/news/news.crit news.err /var/log/news/news.err news.notice -/var/log/news/news.notice *.=debug;auth,authpriv.none;news.none;mail.none -/var/log/debug *.=info;*.=notice;*.=warn;auth,authpriv.none;cron,daemon.none;mail,news.none -/var/log/messages *.emerg :omusrmsg:* daemon.*;mail.*;news.err;*.=debug;*.=info;*.=notice;*.=warn |/dev/xconsole $ModLoad ompgsql *.* :ompgsql:localhost,syslog,syslog $ActionQueueType LinkedList # use asynchronous processing $ActionQueueFileName dbq # set file name,also enables disk mode $ActionResumeRetryCount -1 # infinite retries on insert failure
我也尝试过不使用http://www.rsyslog.com/doc/rsyslog_high_database_rate.html中的设置,它应该做这种缓冲(虽然我希望它偶尔会冲洗一下),但是我有相同的行为,有或没有它们.
从那里开始应用配置之前你读过
http://www.rsyslog.com/doc/rsyslog_high_database_rate.html了吗?文章说,那里的配置完全符合你的情况:输出在内存和磁盘上缓冲,然后再写入数据库.
如果您不希望输出被缓冲,则应该使用http://www.rsyslog.com/doc/rsyslog_pgsql.html中的配置而不应用其他内容.