Re: A better method than daisy-chaining logging files?

From: Brett Neumeier <bneumeier_at_gmail.com>
Date: Fri, 31 May 2019 07:52:08 -0500

On Fri, May 31, 2019 at 4:21 AM Laurent Bercot <ska-supervision_at_skarnet.org>
wrote:

> >I just attempted to link an apache24 instance to its log files via a
> >bundle, which isn't acceptable to s6-rc-compile.
> My advice is to use s6-rc's producer/consumer mechanism for one
> of the log streams, and use a named pipe for the other one, without
> cramming it into the s6-rc mechanism. That would typically mean:
>
> - configure apache24 to output its access log to stdout
> - declare apache24 as a producer for apache24-access-log and
> apache24-access-log as a consumer for apache24
> - apache24-access-log is a simple s6-log invocation, reading
> from its stdin
> - mkfifo /var/run/apache24/error-fifo (with appropriate rights)
> - declare that apache24 outputs its error log to
> /var/run/apache24/error-fifo
> - apache24-error-log has its run script doing something like:
> redirfd -r 0 /var/run/apache24/error-fifo s6-log your-logging-script
> - manually list apache24-error-log in apache24's dependencies, so
> apache24 doesn't start before apache24-error-log. (The pipeline
> mechanism automatically adds apache24-access-log to apache24's deps.)
> - manually define any bundles you want.
>

For what it's worth, I use approximately this setup on my s6- and
s6-rc-managed nginx server. The only difference is that I have nginx using
/dev/stdout as its _error_ stream; and then I have a service that creates a
separate fifo for each site defined in the nginx configuration. Nginx
writes each access log to the appropriate fifo, and there's a separate
s6-log process consuming from each of the fifos. I have had no problems
whatever with that setup, it works like a charm and was really pretty
straightforward to set up.

In fact, I find that there are a lot of services I want to run that can
either log to syslog or write to a specific filesystem location, and the
same "service writes to a fifo, s6-log reads from the fifo" mechanism works
fine for all of them. Since I use that pattern so frequently, I create a
`/run/log-fifos` directory to contain all the fifos. I think that makes the
entire mechanism pretty obvious and transparent, which is my general goal
with system administration.

Cheers,

Brett

-- 
Brett Neumeier (bneumeier_at_gmail.com)
Received on Fri May 31 2019 - 12:52:08 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:44:19 UTC