Ok gents, here you go  This is rsyslog v8.2102…

## Start rsyslog.conf

$AbortOnUncleanConfig on

$RepeatedMsgReduction off

$umask 0000

$CreateDirs on

 

global(

   processInternalMessages="on"

   parser.dropTrailingLFOnReception="on"

   parser.spaceLFOnReceive="on"

   parser.escapeControlCharactersOnReceive="on"

   preserveFQDN="on"

   net.enableDNS="off"

   workDirectory="/home/user/demo"

   maxMessageSize="16k"

)

 

module(load="imudp")

module(load="imptcp")

module(load="imfile")

module(load="mmjsonparse")

module(load="builtin:omfile" Template="RSYSLOG_FileFormat")

 

template(name="demo_out" type="list") {

   constant(value="R: ") property(name="rawmsg") constant(value="\n")

   constant(value="M: ") property(name="msg") constant(value="\n")

   constant(value="I: ") property(name="inputname") constant(value="\n")

   constant(value="S: ") property(name="$!strmsg" format="jsonr") 
constant(value="\n")

   constant(value="J: ") property(name="$!jsonmsg") constant(value="\n\n")

}

 

ruleset(name="json_check") {

  set $.isjson = parse_json($msg, "\$!parsed");

  if ($.isjson == 0) then {

    set $!jsonmsg = $msg;

    set $!strmsg = "";

  } else {

    set $!jsonmsg = "null";

    set $!strmsg = $msg;

  }

}

 

ruleset(name="to_debug") {

  action(

    type="omfile"

    name="debug_demo"

    template="demo_out"

    file="/home/user/demo/debug.out"

  )

}

 

ruleset(name="from_Demo") { 

  call json_check

  call to_debug

}

 

input(type="imudp"  name="udp-55141-in" port="55141" ruleset="from_Demo")

input(type="imptcp" name="ptcp-55141-in" port="55141" ruleset="from_Demo")



input(type="imfile"

  file="/home/user/practice/*.demolog"

  tag="Demo"

  facility="auth"

  severity="info"

  persiststateinterval="0"

  readmode="0"

  readtimeout="5"

  ruleset="from_Demo"

)

## End rsyslog.conf



Then, from the output file, some correct examples...




R: <111>1 2021-06-30T15:05:48.323+00:00 azlapncismlog02 logaudit 22815 test - 
test message at 1625065548.325

M: test message at 1625065548.325

I: ptcp-55141-in

S: test message at 1625065548.325

J: null

 

R: <111>1 2021-06-30T15:05:55.911+00:00 azlapncismlog02 logaudit 25337 test - 
test message at 1625065555.912

M: test message at 1625065555.912

I: udp-55141-in

S: test message at 1625065555.912

J: null

 

R: test message at 1625065662.605

M: test message at 1625065662.605

I: imfile

S: test message at 1625065662.605

J: null

 

R: a b c d e f

M: a b c d e f

I: imfile

S: a b c d e f

J: null

 

R: a,b,c,d,e,f

M: a,b,c,d,e,f

I: imfile

S: a,b,c,d,e,f

J: null

 

R: a|b|c|d|e|f

M: a|b|c|d|e|f

I: imfile

S: a|b|c|d|e|f

J: null



R: <111>1 2021-06-30T15:13:24.190+00:00 azlapncismlog02 logaudit 4266 test - 
{"str_field":"pi","num_field":3.14159}

M: {"str_field":"pi","num_field":3.14159}

I: ptcp-55141-in

S:

J: {"str_field":"pi","num_field":3.14159}

 


Then, from the output file, some incorrect examples...


 

R: 0,1,2,3,4,5

M: 0,1,2,3,4,5

I: imfile

S:

J: 0,1,2,3,4,5

 

R: <111>1 2021-06-30T15:13:51.909+00:00 azlapncismlog02 logaudit 4981 test - 
"str_field":"pi","num_field":3.14159

M: "str_field":"pi","num_field":3.14159

I: ptcp-55141-in

S:

J: "str_field":"pi","num_field":3.14159

 

R: <111>1 2021-06-30T15:15:56.392+00:00 azlapncismlog02 logaudit 8469 test - 
003491626A431T|Success|2021-04-28 22:15:31|event.type.sybtype|10.10.10.10

M: 003491626A431T|Success|2021-04-28 22:15:31|event.type.sybtype|10.10.10.10

I: ptcp-55141-in

S:

J: 003491626A431T|Success|2021-04-28 22:15:31|event.type.sybtype|10.10.10.10






> On Jun 17, 2021, at 12:03, David Lang <[email protected]> wrote:
> 
> what is msg and rawmsg in these two cases?
> 
> what you are showing is the output, what we need to look at is the input to 
> be parsed.
> 
> David Lang
> 
> On Thu, 17 Jun 2021, John Chivian wrote:
> 
>> Date: Thu, 17 Jun 2021 11:37:14 -0500
>> From: John Chivian <[email protected]>
>> To: David Lang <[email protected]>
>> Cc: John Chivian via rsyslog <[email protected]>
>> Subject: Re: [rsyslog] Odd parse_json Behavior With imfile Input
>> Hi David:
>> 
>>  I wish I could say that was the case, but the msg object is exactly what it 
>> should be.  Here’s the output in error...
>> 
>>      "string": "", "json": 
>> 206|domain1\user1|SEC_ACCOUNTING_CONSULTANT|N|2019-10-21 
>> 15:46:33.487|domain2\user2|10.224.129.254
>> 
>> …and here’s the output with parentheses added…
>> 
>>      "string": "(206|domain1\\user1|SEC_ACCOUNTING_CONSULTANT|N|2019-10-21 
>> 15:46:33.487|domain2\\user2|10.224.129.254)", "json": "null"
>> 
>> …produced by…
>> 
>>      constant(value="\"string\": \"") property(name="$!smsg" format="jsonr") 
>> constant(value="\",")
>>      constant(value="\"json\": ") property(name="$!jmsg")
>> As you can see the only difference in msg is the added parenthesis, and both 
>> represent exactly what msg should be.
>> 
>> 
>> Regards,
>> 
>> 
>> 
>>> On Jun 17, 2021, at 11:16, David Lang <[email protected]> wrote:
>>> 
>>> whenever you have a parsing problem, log the messages with the template 
>>> RSYSLOG_DebugFormat
>>> 
>>> 90%+ of the time, we find that the contents of the variables are not what 
>>> you are expecting, and the rest of the time, seeing the debug output lets 
>>> us figure out what is going wrong with the parser
>>> 
>>> Also, what version of rsyslog are you running?
>>> 
>>> David Lang
>>> 
>>> On Thu, 17 Jun 2021, John Chivian via rsyslog wrote:
>>> 
>>>> Date: Thu, 17 Jun 2021 11:05:21 -0500
>>>> From: John Chivian via rsyslog <[email protected]>
>>>> To: rsyslog-users <[email protected]>
>>>> Cc: John Chivian <[email protected]>
>>>> Subject: [rsyslog] Odd parse_json Behavior With imfile Input
>>>> I am using the parse_json function to determine whether or not the msg 
>>>> element is a JSON object.
>>>> 
>>>> set $.isjson = parse_json($msg, "\$!parsed");
>>>> 
>>>> if ($.isjson == 0) then {
>>>> set $!jmsg = $msg;
>>>> set $!smsg = "";
>>>> } else {
>>>> set $!jmsg = "null";
>>>> set $!smsg = $msg;
>>>> }
>>>> 
>>>> 
>>>> For network input this seems to always work, but for file input we seeing 
>>>> odd behavior where some strings that are not JSON objects are being 
>>>> identified as if they were JSON objects.
>>>> 
>>>> Case in point is the msg "a,b,c,d,e,f”.  If received over the network 
>>>> (imptcp) with a proper syslog header, this msg is correctly identified as 
>>>> not being a JSON object, and the value is applied to the $!smsg element in 
>>>> the if construct that follows.
>>>> 
>>>> However, if that same string is received in file input (imfile), the 
>>>> message is incorrectly identified as being a JSON object and the value is 
>>>> applied to the $!jmsg element.  The same is true if the fields are pipe 
>>>> delimited as "a|b|c|d|e|f".
>>>> If I modify the msg to be wrapped in parenthesis, i.e. "(a,b,c,d,e,f)” or 
>>>> “(a|b|c|d|e|f)", then the string is identified properly in both cases.
>>>> 
>>>> Another thing that may be of significance is that if I add a syslog header 
>>>> to each line of the file input, and specify needparse=“on” in the file 
>>>> input definition, the issue goes away and the msg element is always 
>>>> identified properly.
>>>> 
>>>> This is v8.2102.  I’m not sure if this is a bug or if I’m missing 
>>>> something fundamental about the differences between input types, so any 
>>>> advice or guidance is greatly appreciated.
>>>> 
>>>> Thanks all!
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> rsyslog mailing list
>>>> https://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.
>> 

_______________________________________________
rsyslog mailing list
https://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