[syslog-ng] Chroot/Vserver config

Alexander Clouter ac56 at soas.ac.uk
Mon Sep 3 23:54:27 CEST 2007


Hi,

Ed W <lists at wildgooses.com> [20070903 22:24:13 +0100]:
>
> I am setting up a bunch of vserver machines on a single host (basically
> just a fancy chroot setup) - just looking for advice on a decent setup.
> 
> 1) Would prefer not to run multiple instances of syslogd in each vserver
> if possible (no special reason, just seems pointless).
> 2) Each vserver runs multiple processes, so need a fairly fully featured
> set of logging for each
> 3) Want to keep the logs readonly, or basically untouchable in the vservers
> 
> So I tried
> 
> a) setting up the host system to run the /vserver/xxx/dev/log as it's source
> b) using destinations of the form: "/var/log/$HOST/messages",
> "/var/log/$HOST/mail.log", etc
> 
> However, this doesn't seem to work because $HOST always shows the same
> name for every vhost (actually it has the name of the host server)
> 
> [snipped]
>
> What I really want is some way that I can set some MACRO in the
> "source{}" stanza and then use that later on in my destinations{} - is
> this possible?  Any other ways to achieve this?  Actually I can't find
> any way to define custom macros, but this feature would seem to solve a
> lot of configuration scenarios?
>
For my multicast logging I wanted to be lazy and log depending on the 
*destination* IP address[1] rather than the source IP; in multicast you group 
the services together under a single multicast group address (for example all 
mail server logging goes to 239.234.234.32).

I cobbled together a patch that lets you use $DESTIP as a macro.

http://marc.info/?l=syslog-ng&m=116136122419201&w=2
http://marc.info/?l=syslog-ng&m=118545979625151&w=2

I keep lightly prodding Bazsi to re-write it properly[2] and I am sure he 
will someday but is this the sort of thing useful to you.  If you bind to 
each vserver IP seperately on your host machine[3] you should find using 
$DESTIP in your macro's works nicely.

To map IP's to friendly names I would recommend softlinks in the filesystem 
personally.

Cheers

Alex

[1] this keeps the syslog-ng.conf file very simple and I do not have to 
	specify and keep up to date a list of source addresses; it is all 
	mapped to a single destination group address
[2] but it is complicated as to do it properly you would have to use 
	IP(V6)_PKTINFO, or for *BSD people its IP_RECVDSTADDR and from 
	when I was looking through the code there is not much opportunity to 
	get this kind of data to the macro sub-system without some framework 
	reworking/rejuggling
[3] so seperate 'udp(ip(w.x.y.x) port(514));' in the source{} section for 
	each vserver IP otherwise this patch will set $DESTIP to '0.0.0.0'


More information about the syslog-ng mailing list