[syslog-ng] patternize and IPv6 hosts
Peter Gyongyosi
gyp at balabit.hu
Fri Feb 25 12:00:47 CET 2011
On 02/24/2011 12:07 PM, Valentijn Sessink wrote:
> Just a small remark. If you run pdbtool with "patternize" on a log file
> with logs from an IPv6 host, pdbtool thinks that everything after the
> first ":" is the log message. For example, the log message:
>
> Feb 24 11:39:26 2a01:4f8:8a0:5141::3c2 named[31090]: lame server
> resolving ....
>
> ... will be patternized as if the logging host were "2a01" and if the
> pattern should be:
> <pattern>4f8:8a0:5141::3c2 named[31090]: lame server resolving
> ....</pattern>
>
> I searched around in the patternize code, but could not find the
> particular code where the host got cut off. However, for someone a bit
> at home in this code, I think the fix should be trivial.
>
As Bazsi has already answered, the patternize code uses syslog-ng's
built-in message parsing functionality, much like as the messages were
loaded from a file source. It would be possible to add a way to parse to
custom message formats, but patternizing is an offline operation anyway
and we're only using the message part of the loglines, so I think sed,
awk & co. are much better tools for this task :) (note that patternize
is capable of loading the input from stdin, you don't even need to
duplicate your logs on the disk for this). For it to work, you'd need to
be able to tell patternize not to parse the lines in the textfile at all
and consider the whole line as the message part.
This patch I've just pushed to my repo at
git://git.balabit.hu/gyp/syslog-ng-3.2.git does just that:
commit 31cedfa84839459046a5b0acd5fb42339e1da807
Author: Peter Gyongyosi <gyp at balabit.hu>
Date: Fri Feb 25 11:31:03 2011 +0100
pdbtool patternize: added the --no-parse option
This allows for the manual processing of the to-be-patternized log
messages
instead of requiring it to be in a parsable RFC-compliant log format.
After this, you can do things like
cat logfile.log | cut -d' ' -f4- | pdbtool patternize --no-parse -f -
It's still based on 3.2, but I guess it should apply trivially on 3.3 as
well. If not, let me know and I'll open my 3.3 branch and add it there,
too. (And if you're not doing it already, you should really try
patternize with 3.3, as since a couple of days ago, it contains Balint
Kovacs's patch which allows you to specify word delimiters instead of
using only the hardcoded space char for this purpose, which can
*drastically* improve the quality of your patterns.)
greets,
Peter
More information about the syslog-ng
mailing list