[syslog-ng] snmptrapd and HOST macro mapping

joël Winteregg joel.winteregg at gmail.com
Thu Nov 13 21:57:43 CET 2008


Hello,


> > > > Juste to know, does syslog-ng only use relay config statements
> > > > (keep_hostname, etc.) when the log source is defined as udp() or tcp() ?
> > > 
> > > no, keep_hostname is always applied. in 3.0, it is even possible to
> > > specify hostname related options on a per-source basis.
> > > 
> > 
> > Okay, interesting ! You can hardcode (into config file) a given HOST
> > macro value associated to a source config ?
> 
> Yes, there are two ways to do this:
>  - host-override(): this is a new option, that let's you specify a fixed
> hostname for each source, this effectively overrides the hostname
> parsing routines
>  - rewrite rule that changes the HOST value after parsing
> 
> The first looks like this:
> 
> pipe("/tmp/snmptrapd.pipe" host-override("overridden-host"));
> 
> everything coming from this pipe will use "overridden-host" as hostname.
> 
> The second one looks like this:
> 
> rewrite r_host { set("overridden-host" value("HOST")); };
> 
> The rewrite rule can even use macros, like this:
> 
> rewrite r_host { set("${HOST}-append" value("HOST")); };
> 
> This will append the string '-append' to the hostname.
> 

Great ! Thanks for the input !

> > 
> > > > I'm asking this, because I'm wondering if I forward my SNMP trap to
> > > > syslogd and then to syslog-ng through udp (@SYSLOG-COLLECTOR defined in
> > > > syslog.conf), syslog-ng will maybe see the SNMP trap as a compliant RFC
> > > > 3164 forwarded message ?
> > > 
> > > That wouldn't work. the problem is inherent in the syslog API, it does
> > > not let you change the hostname.
> > 
> > Okay, but here, what I wanted to achieve was the following. Log this
> > SNMP message using snmptrapd syslog functionality: 
> > "Nov 12 16:57:59 wlc02.mydomain.com Cold Start"
> > 
> > The given snmptrapd output message formatting (header): "Nov 12 16:57:59
> > wlc02.mydomain.com" set before every snmptrapd message is here to
> > provide a RFC 3164 compliant message => this should allow syslog-ng to
> > think that "Nov 12 16:57:59 wlc02.mydomain.com Cold Start" is a
> > forwarded syslog message ? If so, this would allow me to fetch
> > "wlc02.mydomain.com" as HOST macro using keep_hostname(on), no ?
> > 
> 
> you misunderstand the relayed message format. the header is not
> duplicated in case a message is relayed, the format is still the same.
> 

Ah, okay ! Yes you're right I totally misunderstood the relayed message
format ;-)


> > 
> > >  The only way to work around that is to
> > > have snmptrapd to send its output to syslog-ng directly (and format the
> > > message according to the syslog protocol). There are multiple options:
> > > 
> > >   * pipe: make snmptrapd output go to a pipe, and reference this from
> > > syslog-ng; writing a pipe is about the same as writing a file, so this
> > > would probably work
> > 
> > Ahhh, yeah ! That's much easier than my relayed message style ! If, as I
> > did before, I format snmptrad message as follow (to a named pipe), it
> > should work:
> > "Nov 12 16:57:59 wlc02.mydomain.com Cold Start"
> 
> yes. you might add a priority field though.
> 

Ok ! Will try this !

> > 
> > >   * program source: in 3.0, I introduced program source, which is
> > > basically a syslog-ng managed program, whose output is parsed as a
> > > syslog message, line by line.
> > > 
> > 
> > Okay, really interesting too ;-) It reads logs from stdout and stderr of
> > the given program ?
> 
> it only fetches the standard output.
> 
> > 
> > Will try this (named pipe stuff) before the csv-parser option. As I'm
> > also interested into csv-parser option I will invest time to try it too.
> > Will let you know about last-column-greedy.
> 
> the named pipe should work with any syslog-ng version, csv-parser is
> added in 3.0.
> 

Thanks again for your support !


Joël



More information about the syslog-ng mailing list