如何在systemd下将varnishncsa日志拆分为单独的日志(Ubuntu 16.04)

如何在systemd下将varnishncsa日志拆分为单独的日志(Ubuntu 16.04)

我需要将varnishncsa日志拆分为基于虚拟主机的单独文件。

我知道我可以进行覆盖配置,以/etc/systemd/system/varnishncsa.service.d过滤特定的虚拟主机。

像这样的 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

但是我怎样才能让它为每个虚拟主机生成一个单独的日志文件呢?

我想将这些每个域日志输入 awstats。

答案1

我见过的方法给你留下了两个选择。 1 是将所有内容记录到一个文件中,然后使用 varnishlog 解析日志以仅查看您感兴趣的虚拟主机。有关此工具的更多信息请参见此处 -https://varnish-cache.org/docs/trunk/reference/varnishlog.html

要将日志拆分为显式文件,您必须运行多个varnishncsa守护程序。该方法在该博客中显示,标题为:如何分割虚拟主机的 Varnish 日志

例如:

清漆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
清漆 4.x
varnishncsa -q "ReqHeader ~ '^Host: .*\.example1.com'"
varnishncsa -q "ReqHeader ~ '^Host: .*\.example2.com'"

您需要将其设置为个性化的 systemd 单元文件,每个虚拟主机一个。笔记:该方法也在这篇标题为:的博客文章中进行了讨论:[tips]varnishncsa为每个主机保存分割日志

你的例子

因此,对于每个单元文件(每个虚拟主机 1 个),您可以像这样添加 exec 行:

单元文件#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"'
单元文件#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"'

相关内容