Running Two varnishncsa Instances using Systemd : looking for best practice

Dridi Boukelmoune dridi at varni.sh
Wed Jan 29 16:05:52 UTC 2020


Hi,

On Wed, Jan 29, 2020 at 3:09 PM Yassine Aouadi
<yassine.aouadi90 at gmail.com> wrote:
>
> Hello ,
>
> I Would like to Split my Varnish logs into   access log and error log file :
>
> I Know I can reach my goal   by command line using   varnishncsa :
>
> ---
> usr/bin/varnishncsa  -c -b -a -w /var/log/varnish/access-varnishncsa.log -D  -f /etc/varnish/varnishncsa_logmatic.format -q 'RespStatus < 400' &&  /usr/bin/varnishncsa  -c -b -a -w /var/log/varnish/error-varnishncsa.log -D  -f /etc/varnish/varnishncsa_logmatic.format -q 'RespStatus > 399'
> ---

Since you are using both -c and -b you want both client and backend
transactions but your query will only capture client transactions, use
this instead:

    -q '*Status < 400'
    -q '*Status > 399'

This should work with either RespStatus or BerespStatus.

> I am looking now to edit my varnishncsa unit file so i can do the same using systemd :
>
> This is my actual  unit file with one Varnishncsa instance :
> ---
> [Unit]
> Description=Varnish HTTP accelerator log daemon
> Documentation=https://www.varnish-cache.org/docs/4.1/ man:varnishncsa
> After=varnish.service
>
> [Service]
> Type=forking
> PIDFile=/run/varnishncsa/varnishncsa.pid
> RuntimeDirectory=varnishncsa
> User=varnishlog
> Group=varnish
> ExecStart=/usr/bin/varnishncsa  -c -b -a -w /var/log/varnish/access-varnishncsa.log -D  -f /etc/varnish/varnishncsa_logmatic.format
> ExecReload=/bin/kill -HUP $MAINPID
> PrivateDevices=true
> PrivateTmp=true
> ProtectHome=true
> ProtectSystem=full
>
> [Install]
> WantedBy=multi-user.target
>
> ---
>
> What is the best practice to do so ?
> Can I use the same  one unit file  and use a one shot exec start ? Or should I split unit files and run two different systemd varnishncsa services (instances)?

I think the simplest is to have multiple units.


Dridi


More information about the varnish-misc mailing list