6 Sep 2010 10:52
Svlogd feature request
Rafal Bisingier <ravbc <at> man.poznan.pl>
2010-09-06 08:52:20 GMT
2010-09-06 08:52:20 GMT
Hi, First of all: thank you Gerrit for a great software. I've been using it for years now, and am really happy with it. Currently I have some systems using runit for supervising couple hundreds services, and it "just works"! But because of this (quite big) amount of services, each of which is quite "verbose", the volume of produced logs is simply huge. Moreover I had to transfer all this logs to a remote machine(s) for archiving/inspection purposes _in_ _real-time_, without mixing them (so logs from different services must be sorted out to different directories on the remote machine). Currently I use svlogd prefixing/sorting functionality with UDP transport layer, but UDP simply sucks(Continue reading)I'd like to use TCP for sending the logs, but then i'd loss "real-time transfer" because most of the services produce quite many log entries, but also evenly "sleeps" for tens of seconds (so I've got many line of logs, then tens of seconds sleep, and again many lines of logs, and so on). With TCP transport on log files rotation, even with very often rotation I'd have some delays in sending logs. So I thought about aggregating logs from different services in one "sending service", so the probability of pause in logs growth would be much lower. The idea is simple: use svlogd to prefix log lines and forward it to a dedickated socklog instance, which will send them to remote machine via TCP, and there logs will be sorted (just like I have it now) based on the prefix added by the first svlogd in the whole process. The only problem I've got now is how to connect first svlogd (the one adding prefix) with local socklog. Of course I could use local UDP transport (to a localhost), but that is not a pretty solution. And so I thought about adding a "unix socket writing" functionality to svlogd, just like its UDP capabilities. I've even thought about creating a patch for this, but my programming skills are way to weak,
I'd like to use TCP for sending the logs, but then i'd loss
"real-time transfer" because most of the services produce quite many
log entries, but also evenly "sleeps" for tens of seconds (so I've got
many line of logs, then tens of seconds sleep, and again many lines of
logs, and so on). With TCP transport on log files rotation, even with
very often rotation I'd have some delays in sending logs. So I thought
about aggregating logs from different services in one "sending
service", so the probability of pause in logs growth would be much
lower. The idea is simple: use svlogd to prefix log lines and forward
it to a dedickated socklog instance, which will send them to remote
machine via TCP, and there logs will be sorted (just like I have it
now) based on the prefix added by the first svlogd in the whole process.
The only problem I've got now is how to connect first svlogd
(the one adding prefix) with local socklog. Of course I could use local
UDP transport (to a localhost), but that is not a pretty solution. And
so I thought about adding a "unix socket writing" functionality to
svlogd, just like its UDP capabilities. I've even thought about
creating a patch for this, but my programming skills are way to weak,
RSS Feed