rsyslog不记录


17

这是一个奇怪的问题。

我正在RHEL7 VM上测试chrony / ntp服务,并且正在重置其时间以及主机的时间。对它感到满意之后,我检查/var/log/messages并意识到它已经有一段时间没有被更改了。

现在,无论我做什么,除了重新启动rsyslog服务本身时,什么都不会记录。当我这样做时:

Apr 15 13:59:43 mymachine1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2847" x-info="http://www.rsyslog.com"] exiting on signal 2.

Apr 15 13:59:59 mymachine1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2853" x-info="http://www.rsyslog.com"] start

Apr 15 14:00:11 mymachine1 rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested address'

尝试诸如“ logger test不记录”之类的东西,除了rsyslog自己的消息外,别无其他。当我手动运行rsyslog -n -N1作为参数时,我得到:

rsyslogd: version 7.4.2, config validation run (level 1), master config /etc/rsyslog.conf

rsyslogd: End of config validation run. Bye

似乎由于某种原因,没有任何东西可以通过rsyslog登录。在同一主机上使用相同的rsyslog.conf文件记录第二台相同的虚拟机(不会经历重复禁用ntp的完全相同的循环,更改日期并多次重新启动)。

此时,日期/时间是正确的,启用了chrony并正在运行,并且我已经重新启动了几次-内核消息30秒后,没有其他日志被再次记录。

有什么想法吗?


我没有用之前RHEL7但我会检查/etc/rsyslog.conf/etc/rsyslog.d目录。听起来您没有配置任何要路由到特定日志文件的内容。您也可以尝试指定EMERG优先级的syslog消息以查看是否通过。示例:logger -p EMERG not really an emergency
Bratchley 2014年

1
/etc/rsyslog.conf包含以下内容:* .info; mail.none; authpriv.none; cron.none; local0.none / var / log / messages至于/etc/rsyslog.d中的文件,listen.conf,此:$ SystemLogSocketName / run / systemd / journal / syslog和rate-unlimit.conf:$ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0至于EMERG优先级,也不会记录。
Arkandel 2014年

您可能应该更新您的答案或粘贴bin,因为我们在那里丢失了换行符。
Bratchley 2014年

对于那个很抱歉。由于某种原因,它不会解析注释中的换行符。当我在rsyslog.conf中对此进行注释时,将再次启用日志记录:$ OmitLocalLogging on。但是,在同一主机上的另一台相同虚拟机上,它没有被注释掉,并且日志记录工作正常。
阿肯德尔2014年

查看它,显然这是systemd(RHEL7迁移到了IIRC的)一个选项,您可以检查journalctl -b是否将日志记录到系统日志中吗?
Bratchley 2014年

Answers:


19

这不是一个直接的解决方案,但是我将启用一些调试功能,以了解幕后情况。

想法#1-调试记录器

对于初学者,当您运行logger命令时,您可以这样做,将消息回显到STDERR。

$ logger -s "hi"
saml: hi

想法2-验证您的配置文件

您还可以尝试验证您的rsyslog配置文件:

$ sudo rsyslogd -N6 | head -10
rsyslogd: version 7.2.6, config validation run (level 6), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.

6921.173842409:7f8b11df2780: rsyslogd 7.2.6 startup, module path '', cwd:/root
6921.175241008:7f8b11df2780: caller requested object 'net', not found (iRet -3003)
6921.175261977:7f8b11df2780: Requested to load module 'lmnet'
6921.175272711:7f8b11df2780: loading module '/lib64/rsyslog/lmnet.so'
6921.175505384:7f8b11df2780: module lmnet of type 2 being loaded (keepType=0).
6921.175520208:7f8b11df2780: entry point 'isCompatibleWithFeature' not present in module
6921.175528413:7f8b11df2780: entry point 'setModCnf' not present in module
6921.175535294:7f8b11df2780: entry point 'getModCnfName' not present in module
6921.175541502:7f8b11df2780: entry point 'beginCnfLoad' not present in module

想法3-启动rsyslogd调试

另外,我会尝试启用rsyslogd守护程序调试以进一步了解。

$ sudo -i
$ export RSYSLOG_DEBUGLOG="/tmp/debuglog"
$ export RSYSLOG_DEBUG="Debug"

$ service rsyslog stop
$ rsyslogd -d | head -10    
7160.005597645:7fae096a3780: rsyslogd 7.2.6 startup, module path '', cwd:/root
7160.005872662:7fae096a3780: caller requested object 'net', not found (iRet -3003)
7160.005895004:7fae096a3780: Requested to load module 'lmnet'
7160.005906331:7fae096a3780: loading module '/lib64/rsyslog/lmnet.so'
7160.006023505:7fae096a3780: module lmnet of type 2 being loaded (keepType=0).
7160.006030872:7fae096a3780: entry point 'isCompatibleWithFeature' not present in module
7160.006033780:7fae096a3780: entry point 'setModCnf' not present in module
7160.006036209:7fae096a3780: entry point 'getModCnfName' not present in module
7160.006038359:7fae096a3780: entry point 'beginCnfLoad' not present in module
...
...
7160.006063913:7fae096a3780: rsyslog runtime initialized, version 7.2.6, current users 1
7160.006102179:7fae096a3780: source file syslogd.c requested reference for module 'lmnet', reference count now 2
7160.006113657:7fae096a3780: GenerateLocalHostName uses 'greeneggs'

确认版本信息

$ rsyslogd -version
rsyslogd 7.2.6, compiled with:
    FEATURE_REGEXP:             Yes
    FEATURE_LARGEFILE:          No
    GSSAPI Kerberos 5 support:      Yes
    FEATURE_DEBUG (debug build, slow code): No
    32bit Atomic operations supported:  Yes
    64bit Atomic operations supported:  Yes
    Runtime Instrumentation (slow code):    No
    uuid support:               Yes

See http://www.rsyslog.com for more information.

确认的错误和解决方法

OP将其作为错误提交给Red Hat。

该错误的特征如下:

果然,当我设置主机自己的时间时,VM与主机具有相同的错误时间。那是我注意到/ var / log / messages不再被更新的时候。

事实证明,除了重新启动rsyslog服务本身日志到该点文件。如果我这样做,将被记录:

  ---
   Apr 15 16:39:39 rhel7time-dev rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested address'

  Apr 15 16:39:39 rhel7time-dev rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="574" x-info="http://www.rsyslog.com"] exiting on signal 15.
  Apr 15 16:39:39 rhel7time-dev rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2117" x-info="http://www.rsyslog.com"] start
  ---

否则,任何内容都不会记录到文件中,包括记录器。

如果我在rsyslog.conf中注释掉$ OmitLocalLogging,则恢复文件日志记录(注意,直到那时我还没有更改rsyslog.conf)。

通过日志记录不受所有这些影响。journalctl -b显示日志记录,包括记录程序发送的任何内容。

一位开发人员对此做出了回应:

发生此问题时,您可以删除/var/lib/rsyslog/imjournal.state并重新启动守护程序作为一种解决方法。

rsyslog不会直接处理日期,而只能通过systemd API处理日期。我在imjournal中检查了一下代码,这看起来像systemd中的问题。

有关参考,请参见:https : //github.com/rsyslog/rsyslog/issues/43


我将其作为错误报告提出,并得到了RedHat的回应。可以在bugzilla.redhat.com/show_bug.cgi?id=1088021上查看详细信息。暂时关闭,谢谢大家的帮助。:)
Arkandel 2014年

1
@Arkandel-感谢您关闭此循环。我已将您的发现和解决方法合并到此A中,因此我们可以按解决方案结束问答周期(至少在某种程度上,这是一种经过确认的错误,带有解决方法)。如果您同意本大纲,请将此A标记为已接受。
slm

4

对我而言systemctl restart systemd-journald有所帮助,因为

File /run/log/journal/29c32d60f93c42489aabb4ebeb593f5b/system.journal corrupted or uncleanly shut down, renaming and replacing.
[12274404.541271] systemd-journald[15492]: Deleted empty journal /run/log/journal/29c32d60f93c42489aabb4ebeb593f5b/system@0005317804680d96-e103c48634d16856.journal~ (4096 bytes).

1

尝试使用以下命令检查rsyslog conf:rsyslogd -f /etc/rsyslog.conf -N 1
如果一切正常,请尝试 使用以下命令重新启动systemd-journald.socket: systemctl restart systemd-journald.socket
您可以使用命令“ logger”检查如果rsyslog工作正常:记录器“ hello”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.