Назад | Перейти на главную страницу

Как настроить rsyslog для входа в PostgreSQL без слишком большой задержки?

Я пытаюсь настроить RSyslog на машине Debian, чтобы все регистрировать в 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,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 без применения других вещей.