Many thanks for this example, I was able to create a rule to parse and
normalize using the lognormalizer utility.

However, nothing is traced in the debug file when I put it inside rsyslog.

I've set the following line, but the debug file doesn't show anything, so I
have no idea if it's normalized correctly or not.

action(type="mmnormalize" ruleBase="/home/syslog/rules/postgresql.rb"
useRawMsg="off")

On Sat, Apr 28, 2018 at 2:06 AM, David Lang <[email protected]> wrote:

> On Fri, 27 Apr 2018, Flo Rance wrote:
>
> Yes, I did and I was somehow lost in the section "Rules".
>>
>> http://www.liblognorm.com/files/manual/configuration.html#rulebase
>>
>> Concretely, my idea is to normalize the msg part:
>>
>> msg: ' 2018-04-26 10:22:45.283 CEST [13518] postgres@postgres [local]
>> FATAL:  no pg_hba.conf entry for host "[local]", user "postgres", database
>> "postgres", SSL off'
>>
>
> so this would start off with something like
>
> rule=: %date:date-iso% %time:time-24hr% %tz:word% [%pid:char-to:]%]
> %db:word% %place:word% %severity:word% %msg:rest%
>
> (I'm not sure if time-24 hour will handle the decimal seconds, and you may
> be able to use date-rfc5424 for this, and it may or may not include the
> timezone)
>
> try parsing the log with this rule and look at the contents of the
> resulting variables (lognormalizer will be the frist step in this, see
> http://www.liblognorm.com/files/manual/lognormalizer.html then you can
> put this into rsyslog and log with the format RSYSLOG_DebugFormat to see
> how the variables created by the rule show up in rsyslog.
>
> note, this doesn't affect $severity, it creates a new variable $!severity
> that you would then have to make use of, in a rule or a template.
>
> David Lang
>
>
> However, not so much examples treat about severity.
>>
>> On Fri, Apr 27, 2018 at 4:00 PM, David Lang <[email protected]> wrote:
>>
>> On Fri, 27 Apr 2018, Flo Rance wrote:
>>>
>>> Ok cool. But I should admit that an example of a ruleset would help me a
>>>
>>>> lot, because it's not easy to find some (good) documentation on how to
>>>> build it.
>>>>
>>>>
>>> I agree we need to get some sample rulesets up.
>>>
>>> did you see the documentation at http://www.liblognorm.com/file
>>> s/manual/index.html ?
>>>
>>>
>>> David Lang
>>>
>>> On Fri, Apr 27, 2018 at 3:49 PM, David Lang <[email protected]> wrote:
>>>
>>>>
>>>> On Fri, 27 Apr 2018, Flo Rance wrote:
>>>>
>>>>>
>>>>> I have taken a look at mmnormaliize and liblognorm and I've therefore
>>>>>
>>>>> another question.
>>>>>>
>>>>>> Docker sends logs from different softwares to syslog, all of them with
>>>>>> their own logging format.
>>>>>>
>>>>>> Will it be possible to create a ruleset to be applied for each
>>>>>> programm
>>>>>> and
>>>>>> each format, in order to extract the severity ? And is it possible to
>>>>>> normalize after having written the original log in a file ?
>>>>>>
>>>>>>
>>>>>> Yes, you would create a ruleset that has ruls for each program and
>>>>> it's
>>>>> format. This can be done to any log message, it doesn't matter how
>>>>> rsyslog
>>>>> gathers the log
>>>>>
>>>>> David Lang
>>>>>
>>>>>
>>>>> On Fri, Apr 27, 2018 at 9:26 AM, Flo Rance <[email protected]>
>>>>> wrote:
>>>>>
>>>>>
>>>>>> Ok, thank you guys, it's much more obvious.
>>>>>>
>>>>>>
>>>>>>> As a side note, CEST is not the programname, but the timezone
>>>>>>> (Central
>>>>>>> European Summer Time). So it seems that the programname is missing
>>>>>>> and
>>>>>>> only the pid is displayed.
>>>>>>>
>>>>>>> Anyway, I would really like to know how to use this mmnormalize
>>>>>>> module
>>>>>>> to
>>>>>>> parse the message and thus being able to forwared only relevant
>>>>>>> messages.
>>>>>>>
>>>>>>> On Thu, Apr 26, 2018 at 8:22 PM, David Lang <[email protected]> wrote:
>>>>>>>
>>>>>>> On Thu, 26 Apr 2018, Rainer Gerhards wrote:
>>>>>>>
>>>>>>>
>>>>>>>> 2018-04-26 10:28 GMT+02:00 Flo Rance <[email protected]>:
>>>>>>>>
>>>>>>>>
>>>>>>>> Good idea.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Here's a typical message that is sent by docker to syslog:
>>>>>>>>>>
>>>>>>>>>> Debug line with all properties:
>>>>>>>>>> FROMHOST: 'sc006692.domain', fromhost-ip: '127.0.0.1', HOSTNAME:
>>>>>>>>>> 'sc006692.domain', PRI: 155,
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> OK, rsyslog is doing the right thing. The PRI inside the message
>>>>>>>>>>
>>>>>>>>> (see
>>>>>>>>> rawmsg below) is 155. Accoding to RFC5424, Sect. 6.2.1 that is a
>>>>>>>>> facility of 19 and a severity of 3, or according to tables one and
>>>>>>>>> two
>>>>>>>>> in that section local3 with error severity.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> so the docker log-driver is setting the severity to error
>>>>>>>>>
>>>>>>>>
>>>>>>>> syslogtag 'docker_fluance-ehealthdb[1116]:', programname:
>>>>>>>>
>>>>>>>> 'docker_fluance-ehealthdb', APP-NAME: 'docker_fluance-ehealthdb',
>>>>>>>>
>>>>>>>>>
>>>>>>>>> PROCID:
>>>>>>>>>> '1116', MSGID: '-',
>>>>>>>>>> TIMESTAMP: 'Apr 26 10:22:45', STRUCTURED-DATA: '-',
>>>>>>>>>> msg: ' 2018-04-26 10:22:45.283 CEST [13518] postgres@postgres
>>>>>>>>>> [local]
>>>>>>>>>> FATAL:
>>>>>>>>>> no pg_hba.conf entry for host "[local]", user "postgres", database
>>>>>>>>>> "postgres", SSL off'
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> But in the message itself, it is providing different information,
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> including a timestamp (2018-04-26 10:22:45.283) programname (CEST)
>>>>>>>> pid
>>>>>>>> (13518) and finally severity (FATAL:)
>>>>>>>>
>>>>>>>> escaped msg: ' 2018-04-26 10:22:45.283 CEST [13518]
>>>>>>>> postgres@postgres
>>>>>>>>
>>>>>>>> [local] FATAL:  no pg_hba.conf entry for host "[local]", user
>>>>>>>>
>>>>>>>>>
>>>>>>>>> "postgres",
>>>>>>>>>> database "postgres", SSL off'
>>>>>>>>>> inputname: imuxsock
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> rawmsg: '<155>Apr 26 10:22:45
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> docker_fluance-ehealthdb[1116]: 2018-04-26 10:22:45.283 CEST
>>>>>>>> [13518]
>>>>>>>>
>>>>>>>>>
>>>>>>>>> postgres@postgres [local] FATAL:  no pg_hba.conf entry for host
>>>>>>>>>> "[local]",
>>>>>>>>>> user "postgres", database "postgres", SSL off'
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> If you look at the rawmsg, which is what the docker log-driver
>>>>>>>>>>
>>>>>>>>> passes
>>>>>>>>>
>>>>>>>>> to
>>>>>>>> rsyslog, you will see that it sets the pri to 155, the timestamp to
>>>>>>>> Apr
>>>>>>>> 26
>>>>>>>> 10:22:45 and the programname/pid to docker_fluance-ehealthdb[1116]
>>>>>>>>
>>>>>>>> the docker log driver makes the _assumption_ that what is spit out
>>>>>>>> to
>>>>>>>> stdout is not structured, so it adds a default header and passes it
>>>>>>>> to
>>>>>>>> rsyslog.
>>>>>>>>
>>>>>>>> I have to run to a meeting, I'll post some info later for
>>>>>>>> configuring
>>>>>>>> mmnormalize to parse the message.
>>>>>>>>
>>>>>>>> David Lang
>>>>>>>>
>>>>>>>>
>>>>>>>> $!:
>>>>>>>>
>>>>>>>> $.:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> $/:
>>>>>>>>>>
>>>>>>>>>> On Thu, Apr 26, 2018 at 9:57 AM, Rainer Gerhards <
>>>>>>>>>> [email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2018-04-26 9:48 GMT+02:00 Flo Rance via rsyslog
>>>>>>>>>>
>>>>>>>>>>> <[email protected]>:
>>>>>>>>>>>
>>>>>>>>>>> What do you mean by "not in any standard format" ?
>>>>>>>>>>>
>>>>>>>>>>> I've explicitely declared the logging driver in docker to be
>>>>>>>>>>>> syslog,
>>>>>>>>>>>> so
>>>>>>>>>>>> I
>>>>>>>>>>>> was expecting to be able to parse the result to extract accurate
>>>>>>>>>>>> data
>>>>>>>>>>>> in
>>>>>>>>>>>> the fields.
>>>>>>>>>>>>
>>>>>>>>>>>> Can you give me any hints on how I could use mmnormalize to
>>>>>>>>>>>> extract
>>>>>>>>>>>> the
>>>>>>>>>>>> various fields ?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> let's get started with something easier. Please add
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> *.* /var/log/messagedebug;RSYSLOG_DebugFormat
>>>>>>>>>>>
>>>>>>>>>>> to the top of your rsyslog.conf. Let some messages flow. In the
>>>>>>>>>>> new
>>>>>>>>>>> file, you should then see that message together with the decoded
>>>>>>>>>>> properties AND the raw message. Post that entry (~6 lines or so).
>>>>>>>>>>> With
>>>>>>>>>>> that, we know for sure what is going on.
>>>>>>>>>>>
>>>>>>>>>>> Rainer
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Apr 25, 2018 at 7:28 PM, David Lang <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, 25 Apr 2018, Rainer Gerhards wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> 2018-04-25 9:29 GMT+02:00 Flo Rance <[email protected]>:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Ok, but if ".err" means "err and above", why does it forward
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> messages
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>> the severity INFO as in the example ?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> pls post the raw message - how do you know it is INFO?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> in the docker world, the 'standard' is that messages get
>>>>>>>>>>>>>> dumped
>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> stdout,
>>>>>>>>>>>>> not in any standard format, so INFO: in the message body is the
>>>>>>>>>>>>> indication.
>>>>>>>>>>>>>
>>>>>>>>>>>>> It looks like these logs should be parsed with mmnormalize to
>>>>>>>>>>>>> extract
>>>>>>>>>>>>> the
>>>>>>>>>>>>> various fields (potentially as a parser on the input)
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>
>>>>>>>>>>>>> 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.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>
_______________________________________________
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