我的任务是为我们的 postgres 服务器设置更长/更好的日志保留,但是在配置 postgres 以通过 syslog 发送日志后,local0
我发现它们实际上从未到达配置的本地文件。
/etc/rsyslog.d/postgresql.conf
:
local0.* /company/data/psql/company_cluster/log/postgresql.log
相关的 postgres 配置:
log_destination = 'syslog'
syslog_facility = 'local0'
当我完成配置并重新加载/重新启动服务后,我注意到,虽然没有任何内容进入指定的日志文件(即使在touch
输入之后),但我曾是看到通过管道传输到 graylog 的具有*.*
规则的消息。
更奇怪的是,logger -p local0.info test
据我所知,该设施或任何其他设施都没有生成消息。其他local
设施也是如此,甚至mail.none
。
Rsyslog 似乎正在干净地重启,我仔细检查了配置文件中的 selinux 上下文,但找不到从 rsyslog 本身记录的任何相关信息。发生了什么?
所有 rsyslog 配置:
# cat /etc/rsyslog.conf /etc/rsyslog.d/* | grep -v -e '^\s*#' -e '^\s*$'
$ModLoad imuxsock
$ModLoad imjournal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
# graylog.conf
*.* @graylogmaster.rancher.company.ca:8514;RSYSLOG_SyslogProtocol23Format
# listen.conf
$SystemLogSocketName /run/systemd/journal/syslog
# postgresql.conf
local0.* /company/data/psql/company_cluster/log/postgresql.log
编辑:“并非真正的解决方案”解决方案
当我最初发布此问题时,我正在使用的特定服务器上的 Rsyslog 似乎出了问题(甚至可能还有其他问题)。重新启动服务没有任何效果,我正在等待维护窗口以重新启动或重新配置此服务器。
相同的配置在其他服务器上也能正常工作,但有一个警告,即LOCAL0
至少在某些情况下似乎无效,但local0
在任何地方都有效。