Bugzilla will be upgraded to version 5.0 on a still to be determined date in the near future. The original upgrade date has been delayed.
Bug 1419228 - rsyslog imjournal module no longer receives logs after switch to persistent journald configuration
rsyslog imjournal module no longer receives logs after switch to persistent j...
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: rsyslog (Show other bugs)
7.3
x86_64 Unspecified
unspecified Severity medium
: rc
: ---
Assigned To: Radovan Sroka
Karel Srot
Vladimír Slávik
: Triaged
Depends On: 1446140
Blocks: 1420851
  Show dependency treegraph
 
Reported: 2017-02-03 19:45 EST by Greg Bailey
Modified: 2018-02-21 21:52 EST (History)
7 users (show)

See Also:
Fixed In Version: rsyslog-8.24.0-10.el7
Doc Type: Enhancement
Doc Text:
Feature: Make imjournal to be more robust and to be able to handle switching between runtime and persistent Journal. Reason: When Journal was switched imjournal stops logging at all. Result: The imjournal module can handle switching from runtime to persistent Journal without restarting rsyslog.service and removing statefile.
Story Points: ---
Clone Of:
Environment:
Last Closed: 2017-08-01 05:56:22 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
rsyslog patch (2.91 KB, patch)
2017-03-13 11:11 EDT, Radovan Sroka
no flags Details | Diff


External Trackers
Tracker ID Priority Status Summary Last Updated
Github rsyslog/rsyslog/pull/1747 None None None 2017-09-05 05:26 EDT
Red Hat Product Errata RHBA-2017:2306 normal SHIPPED_LIVE rsyslog bug fix and enhancement update 2017-08-01 08:41:59 EDT

  None (edit)
Description Greg Bailey 2017-02-03 19:45:13 EST
Description of problem:

When switching to persistent journald storage (section 2.10.5 of the Red Hat Enterprise System Admin Guide), rsyslog does not appear to see any additional journal messages until rsyslog itself is restarted.

Version-Release number of selected component (if applicable):
rsyslog-7.4.7-16.el7.x86_64

How reproducible:
Always

Steps to Reproduce:
1.  Start with non-persistent journald config (no /var/log/journal directory)
2.  Do something that would log to /var/log/secure (like "ssh localhost" and give a bogus password).
3.  Observe that /var/log/secure has some entries for the failed sshd session
4.  Configure persistent logging, with "mkdir /var/log/journal; systemctl restart systemd-journald"
5.  Repeat step 2 above (another ssh connection)
6.  /var/log/secure does not have any additional logging until rsyslog is restarted (but journalctl will show them)

Actual results:
Missing entries in files written to by rsyslogd

Expected results:
Complete log entries

Additional info:
Comment 2 Radovan Sroka 2017-03-13 11:11 EDT
Created attachment 1262471 [details]
rsyslog patch
Comment 4 Karel Srot 2017-03-20 04:40:47 EDT
Hi Radovan,
could you please describe in more detail what changes for rsyslog when persistent journald storage is configured? Does rsyslog continue reading messages from the socket? Is it really expected that rsyslog would handle this configuration change without a restart?
Thank you.
Comment 5 Radovan Sroka 2017-03-20 05:23:47 EDT
(In reply to Karel Srot from comment #4)
> Hi Radovan,
> could you please describe in more detail what changes for rsyslog when
> persistent journald storage is configured? Does rsyslog continue reading
> messages from the socket? Is it really expected that rsyslog would handle
> this configuration change without a restart?
> Thank you.

Hi Karel,

when we are switching journal between runtime and persistent, it changes file descriptor/s so imjournal is not able to read anything and it polls forever.

This patch handles return values from journal API better and after systemd fix above imjournal is able to distinguish whether journal changed file descriptor/s or not.

I think that is a bug but tolerated one so far.

It could be simply tested like in description.

After switching journal files, rsyslog is trying to apply last valid cursor from statefile so few messages can appear again it depends on persist state interval.
It is because when rsyslog find out that journal has been changed it is impossible to get cursor. Journal structure is something like undefined so this is why we are using last valid cursor form statefile.
Comment 11 errata-xmlrpc 2017-08-01 05:56:22 EDT
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2017:2306

Note You need to log in before you can comment on or make changes to this bug.