[syslog-ng] Debugging Pattern Match Failures

Matthew Hall mhall at mhcomputing.net
Tue Aug 3 19:10:37 CEST 2010


On Tue, Aug 03, 2010 at 02:39:38PM +0200, Balazs Scheidler wrote:
> Well, if you want to look at the result of the message parsing exactly
> as done by syslog-ng, you could use a noop rewrite rule and enable
> debugging (though it is not recommended to be done in a production
> server):
> 
> rewrite r_noop { set("$MESSAGE"); };
> 
> This would set $MESSAGE to $MESSAGE, but at the end of the rewrite rule,
> syslog-ng would emit a debug message about the contents of the MESSAGE
> name-value pair.

Unfortunately I can't even get that far because the beginning of my 
message patterns is not matching up against whatever syslog-ng is using 
to do the pattern match, so I am not going to get any name value pairs 
out.

> Alternatively, you may still be able to use "pdbtool match" which can
> read a log file, parse it with syslog-ng's message parser and report the
> results per name-value pair.
> 
> $ pdbtool match -f /var/log/auth.log -p access/sshd.pdb  | head -10
> HOST=bzorp
> MESSAGE=pam_unix(cron:session): session opened for user root by (uid=0)
> PROGRAM=CRON
> PID=7362
> LEGACY_MSGHDR=CRON[7362]: 
> .classifier.class=unknown
> 
> ...
> 
> This uses the normal BSD syslog parser to read the file (thus if you are
> using no-parse flag, or RFC5424 format log files, that may differ)

How do I create a file in this BSD format the pdbtool expects? Right now 
I am using syslog-ng output files as input to my patternizing scripts, 
but I think I am not stripping off the right things at the beginning of 
the lines in these files (either too much or too little).

Is there some option I can use to store just the part it would send to 
the pattern matcher so that I can have input to my patternizer which 
looks exactly like what the daemon is going to match during the pattern 
match for each message?

> -- 
> Bazsi

Thanks,
Matthew.


More information about the syslog-ng mailing list