rsyslog: Update imjournal input module

Support multiple input module bindings and fix sending message to
actions without input module binding. This is done by having one main
process that can be use to block input read and the rest of the
processing are in child processes.

There are some concern on the memory usage since it does have to open
the journal multiple time. It is better than having multiple instace of
rsyslogd running, but still higher than before,

Tested:
All out modules now gets the journal data. Only one output can act as
the main process and block input read if output fails. By default, the
default handler (send to all unbinded output) will be set as main.

If the input module set the option with `Main="on"` then the first one
found will be used as main.

```
input(
  type="imjournal"
  ruleset="prod-syslog"
  Main="on"
)
```

With this setup, the prod-syslog output could fail and stop reading the
input while the other ones in the background continues.

Upstream: https://github.com/rsyslog/rsyslog/pull/5146

Tested:
- Have multiple daemon spam the journal and make sure that we don't
hit OOM error and reboot.
- Two input sources
  - One default with Redfish and SEL handler
  - One exporting the logs out but direct to invalid output to make
sure there are no queue.

During the test the memory usage it:
- Average mem usage: 14MB
- Max mem usage: 29MB
- Min mem usage: 7MB

Google-Bug-Id: 282808929
Google-Bug-Id: 284470950
Change-Id: Iff8eaeb98dbe388e14aed08c1a11514bc012886c
Signed-off-by: Willy Tu <wltu@google.com>
2 files changed
tree: 2d9c3f1adc6ae9ce5e423a8c59a3d0bce8017b85
  1. conf/
  2. dynamic-layers/
  3. meta-nuvoton-npcm8xx/
  4. recipes-bsp/
  5. recipes-connectivity/
  6. recipes-core/
  7. recipes-devtools/
  8. recipes-extended/
  9. recipes-google/
  10. recipes-kernel/
  11. recipes-phosphor/
  12. LICENSE
  13. README.md
README.md

meta-gbmc-staging

This repository contains additions to the openbmc/meta-google layer that are not yet ready for OpenBMC inclusion.

How to use this layer

  1. Clone openbmc/openbmc from GitHub.
  2. Clone this layer from GitHub into a subdirectory of openbmc.