[syslog-ng] REGEX rewrites on packet body possible?
Eli Stair
estair at ilm.com
Thu Aug 16 19:07:03 CEST 2007
I've got a problem with some network devices that is leading me to need to find
some way to do regex rewriting of portions of the message body of syslog
messages.
Problem: I've got a bunch of Foundry devices that put their hostname followed
by a comma in the body of the message (and some that do not). Some of these
look like this:
{
2007-08-16:2007-08-16T09:50:16-07:00 hostname [hostname.local7.notice]
hostname, Linecard Module 13 temperature 50.0 C degrees is normal
}
# template("$R_ISODATE $HOST [$PROGRAM.$FACILITY.$PRIORITY] $MSG\n")
As you can see from the template, the second hostname reported with the comma
is part of the MSG body. For reasons of properly searching/indexing this data
I need to strip this out. I've seen mention of a tool called 'syslog-mailer'
that sounds like it would do the job somewhat. Additionally, I've seen blog
chatter about potentially adding full regex rewrite capability to syslog-ng in
the recent past. I can't find evidence of either of these methods however.
My first try at solving this using an external program showed that when passing
data OUT of syslog-ng to a defined program, only the message body is sent and
before application of a template, the other information is dropped. Thus it's
not possible to do processing of the whole payload externally, re-import the
data via a socket and finish writing because the facility and HOST information
is all gone!
I'm looking at writing a log proxy using Net::Dev::Tools::Syslog in perl to
handle listening, rewriting if necessary, and forwarding full messages on to
syslog-ng after. I'd just like to know if there are any better suggestions, or
if this has been done before successfully in another way?
Cheers, and thanks for any insight.
/eli
More information about the syslog-ng
mailing list