web-dev-qa-db-ja.com

レイテンシを長くせずにPostgreSQLにログインするようにrsyslogを構成するにはどうすればよいですか?

DebianマシンでRSyslogを設定して、すべてをPostgreSQLにログインさせながら、通常どおりディスクにログを記録しようとしています。

私はかなりストックのDebian構成を使用しており、 http://www.rsyslog.com/doc/rsyslog_pgsql.html および http: //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 の設定を使用するようにしないことも試しました= =、これはこの種のバッファリングを行うことになっています(ただし、たまにフラッシュされることを願っています)が、それらの有無にかかわらず同じ動作をします。

5
Jonathan Ballet

そこから設定を適用する前に http://www.rsyslog.com/doc/rsyslog_high_database_rate.html を読みましたか?この記事によると、そこでの構成は、あなたの場合に起こることを正確に実行します。出力は、データベースに書き込む前に、メモリとディスクにバッファリングされます。

出力をバッファリングしたくない場合は、他の要素を適用せずに http://www.rsyslog.com/doc/rsyslog_pgsql.html の設定を使用するだけです。

2
etagenklo