I am reaching out again for some help to use imjournal to fetch journald log 
entries while imuxsock is also used. I am having a systemd system, 
rsyslog.service has "Requires=syslog.socket" commented out. rsyslog_v8.1903 is 
used.
The /etc/rsyslog.conf I have:
module(load="imuxsock"       SysSock.Use="on"       
SysSock.Name="/run/systemd/journal/syslog")
module(load="builtin:omfile"       dirCreateMode="0755"       
fileCreateMode="0640")
module(load="mmjsonparse")action(type="mmjsonparse")
$FileOwner syslog$FileGroup syslog$FileCreateMode 0640$DirCreateMode 0755$Umask 
0022$PrivDropToUser syslog$PrivDropToGroup syslog
include(file="/etc/rsyslog.d/custom-syslog.conf mode="required")
Where, /etc/rsyslog.d/custom-syslog.conf defines the 
following:module(load="imjournal" PersistStateInterval="100" 
StateFile="/path/to/file")if ( $inputname == "imuxsock" ) then {    
action(type="omfile" file="/var/log/imuxsock_log")else if ( $inputname == 
"imjournal" ) then {    action(type="omfile" file="/var/log/imjournal_log")}
I understand that the filtering of "$inputname" may or may not work as David's 
response. I want to know the proper configuration to enable the use of 
imjournal.
Thanks,Patrick

    On Wednesday, February 5, 2020, 04:19:24 p.m. EST, David Lang 
<[email protected]> wrote:  
 
 On Wed, 5 Feb 2020, Patrick Leung wrote:

> Thank you again for the information. Again, if I load both imuxsock and 
> imjournal, how do I associate filters to each input module?

as you note, imjournal doesn't support binding to a ruleset, so logs from it 
just go into the default ruleset.

if you log with the template RSYSLOG_DebugFormat you may find something you can 
filter on (I suspect that $input will work, but I haven't tested it)

so something like
if $input == 'imjournal' and <other filter> then { action() }

David Lang

>e.g. rsyslog.confif ( filter1_condition ) then { action(xxx) } 
> if ( filter2_condition ) then { action(yyy) }Associate "filter1" to process 
> messages received by imuxsock and "filter2" to process messages received by 
> imjournalimuxsock supports ruleset binding; but not imjournal.
>    On Monday, February 3, 2020, 04:12:04 p.m. EST, David Lang <[email protected]> 
>wrote:
>
> On Mon, 3 Feb 2020, Patrick Leung wrote:
>
>>   Thank you for your clarification once again. If I understand it right, the
>>   use of RSYSLOG_DebugFormat template gives me the generated syslog file that
>>   contains structured journald log content, filtering is handled prior to
>>   output log file generation.
>
> not quite, filtering happens how you define it in the config file.
>
> the debug format shows you what the contents of all the variables are at the
> point in the config file that you write the log with that format.
>
> This lets you see the contents to understand what your filters have to work
> with.
>
> filters can be the traditional facility.severity (i.e. mail.info) format, or
> they can be much more powerful if..then formats
>
>> What I would like to achieve:forward journald log to rsyslog, and use
>> rsyslog's filtering capabilities to filter journald master log file to
>> individual log file base on matched ruleset in rsyslog. I may want to filter
>> journald log base on systemd units and container services to their individual
>> log files.
>
> that's trivail
>
>> 1) Is it possible to load both imuxsock and imjournal modules when starting
>> rsyslog,
>
> yes, but if you have journald deliver the messages to imuxsock and have 
> rsyslog
> fetch the messages via imjournal you will get two copies of every message
>
>
>>  and have these modules process journald log and generate individual
>> log file   base on the matching ruleset?
>
> yes, rsyslog runs every log message through the ruleset(s) in the config file
>
>> 2) If imjournal is loaded, I am not
>> crystal clear on rsyslog config syntax   to set up the ruleset for structured
>> journald log entry filtering.   Essentially I am looking for the equivalent
>> of, for example, "journalctl CONTAINER_ID=<id> > /path/to/container_id_log".
>
> you would do something like
>
> if $!CONTAINER_ID == "id" then /path/to/file
>
> note that you can also use dynamic file names so that you can use variables in
> the path, so you could end up writing to /path/to/ID/file (look for dynafile)
>
>> 3) $programname property (which is part of TAG stemmed from MSG syslog fornat
>> AFAIK) is available for ruleset matching when imuxsock is used?
>
> programname is available with both imuxsock and imjournal
>
> David Lang
>
>> Thanks again for help.
>> Thanks,Patrick
>>     On Sunday, February 2, 2020, 04:59:50 a.m. EST, David Lang 
>> <[email protected]> wrote:
>>
>> log the message with the template RSYSLOG_DebugFormat and it will show you 
>> every
>> value it has parsed. You may need to use mmnormalize or mmjsonparse (the 
>> first
>> is a batter long-term option as it is far more flexible) to extract the 
>> values
>> from json if they aren't already parsed. look for a json string in the $!
>> section, every value there can be individually addressed.
>>
>> David Lang
>>
>>
>>   On Sun, 2 Feb 2020,
>> Patrick Leung wrote:
>>
>>> Date: Sun, 2 Feb 2020 09:30:55 +0000 (UTC)
>>> From: Patrick Leung <[email protected]>
>>> To: Patrick Leung via rsyslog <[email protected]>,
>>>     David Lang <[email protected]>
>>> Subject: Re: [rsyslog] rsyslog journald filtering
>>>
>>> Hello David,Indeed the information you have provided is useful. Another 
>>> follow up question.
>>> In case of using imjournal to filter systemd-journald log that is being 
>>> forwarded to rsyslog-v8, what property I can use in rsyslog config for such 
>>> log filtering? What if the journald log entry contain custom field that I 
>>> want to use as the filtering condition?
>>>
>>> Thanks,Patrick
>>>
>>>     On Friday, January 3, 2020, 5:36:16 p.m. PST, David Lang 
>>> <[email protected]> wrote:
>>>
>>> rsyslog does not change it's config during a run (with the exception of the
>>> table_lookup() function, which may work for you)
>>>
>>> syslog can filter on anything it knows about, so if you fetch from journald 
>>> with
>>> imjournal so that you can see all the metadata that journald takes the time 
>>> to
>>> lookup, you can filter on any of it. If you have journald write to a socket 
>>> for
>>> rsyslog to read, journald doesn't send that metadata (and refuses to 
>>> consider
>>> doing so, I've asked)
>>>
>>> does this answer your questions?
>>>
>>> David Lang
>>>
>>  
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to