Como dividir logs do varnishncsa em separado no systemd (Ubuntu 16.04)

0

Eu preciso ter varnishncsa de registros divididos para separar arquivos com base no vhost.

Eu sei que posso fazer uma configuração de substituição em /etc/systemd/system/varnishncsa.service.d que filtrará em um vhost específico.

Algo parecido com este somedomain.conf:

[Service]
RuntimeDirectory=varnishncsa
Type=forking
User=varnishlog
Group=varnish
ExecStart=
ExecStart=/usr/bin/varnishncsa -q "ReqHeader ~ '^Host: somedomain.com'" -D -a -w /var/log/varnish/somedomain.log -P /run/varnishncsa/varnishncsa.pid -F '%%{X-Forwarded-For}i %%l %%u %%t "%%r" %%s %%b "%%{Referer}i" "%%{User-agent}i"'
ExecReload=/bin/kill -HUP $MAINPID
PrivateDevices=true
PrivateNetwork=true
PrivateTmp=true
ProtectHome=true
ProtectSystem=full
PIDFile=/run/varnishncsa/varnishncsa.pid

Mas como posso gerar um arquivo de log separado para cada um dos muitos vhosts?

Eu quero alimentar esses logs por domínio em awstats.

    
por user978388 18.08.2018 / 11:54

1 resposta

0

Os métodos que vi deixam 2 opções. 1 é registrar tudo em um único arquivo e, em seguida, usar varnishlog para analisar o log para ver apenas o vhost em que você está interessado. Mais sobre esta ferramenta está aqui - link .

Para dividir os logs em arquivos explícitos, você deve executar vários daemons varnishncsa . O método é mostrado neste blog intitulado: Como dividir log Varnish para host virtual .

Por exemplo:

verniz 3.x
varnishncsa -m "RxHeader:^Host: linuxaria.com$" -a -w /var/log/varnish/linuxaria.com.access_log -D
varnishncsa -m "RxHeader:^Host: linuxaria.org$" -a -w /var/log/varnish/linuxaria.org.access_log -D
verniz 4.x
varnishncsa -q "ReqHeader ~ '^Host: .*\.example1.com'"
varnishncsa -q "ReqHeader ~ '^Host: .*\.example2.com'"

Você precisaria configurá-lo como arquivos unitários systemd individualizados, um por vhost. NOTA: O método também é discutido nesta postagem do blog intitulada: [dicas] varnishncsa salve o log dividido cada host .

Seu exemplo

Então, para cada arquivo de unidade, 1 por vhost, você adicionaria sua linha exec da seguinte forma:

arquivo de unidade 1
ExecStart=/usr/bin/varnishncsa -q "ReqHeader ~ '^Host: somedomain1.com'" -D -a -w /var/log/varnish/somedomain1.log -P /run/varnishncsa/varnishncsa_vhost1.pid -F '%%{X-Forwarded-For}i %%l %%u %%t "%%r" %%s %%b "%%{Referer}i" "%%{User-agent}i"'
arquivo de unidade # 2
ExecStart=/usr/bin/varnishncsa -q "ReqHeader ~ '^Host: somedomain2.com'" -D -a -w /var/log/varnish/somedomain2.log -P /run/varnishncsa/varnishncsa_vhost2.pid -F '%%{X-Forwarded-For}i %%l %%u %%t "%%r" %%s %%b "%%{Referer}i" "%%{User-agent}i"'
    
por 19.08.2018 / 06:29