如何配置 rsyslog 以无太多延迟的方式登录 PostgreSQL?

如何配置 rsyslog 以无太多延迟的方式登录 PostgreSQL?

我正在尝试在 Debian 机器上配置 RSyslog 以将所有内容记录到 PostgreSQL 中,同时也像往常一样记录在磁盘上。

我使用的是相当原始的 Debian 配置,在阅读以下文档后,我激活了相关的配置指令:http://www.rsyslog.com/doc/rsyslog_pgsql.htmlhttp://www.rsyslog.com/doc/rsyslog_high_database_rate.html

它似乎可以工作,但是仅当我停止 RSyslog 时,消息才会写入磁盘或发送到 PostgreSQL,就好像它缓冲了所有内容直到停止命令,并在关闭之前将所有内容写入内存中。

虽然我可能不会丢失任何消息,但这不是很方便,因为它会引入很多延迟(我不知道它在关闭之前是否会转储任何内容?),有没有办法减少它,以便我可以在正常情况下(服务器不忙)获得几乎实时的日志记录?

这是我当前的配置文件:

$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,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,它应该进行这种缓冲(尽管我希望它偶尔会刷新一次),但无论有没有它们,我的行为都是一样的。

答案1

你读过吗http://www.rsyslog.com/doc/rsyslog_high_database_rate.html在从那里应用配置之前?文章说,那里的配置正是您所遇到的情况:输出在写入数据库之前先在内存和磁盘上缓冲。

如果你不想让输出被缓冲,你应该使用来自的配置http://www.rsyslog.com/doc/rsyslog_pgsql.html无需使用其他材料。

相关内容