我需要varnishncsa
将日志拆分为基于 vhost 的文件。
我知道我可以进行覆盖配置,/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。
我见过的方法给你留下了 2 个选择。1 是将所有内容记录到单个文件中,然后使用 varnishlog 解析日志以仅查看您感兴趣的虚拟主机。有关此工具的更多信息在这里 - https://varnish-cache.org/docs/trunk/参考/varnishlog.html。
要将日志拆分为显式文件,您必须运行多个
varnishncsa
守护程序。该方法显示在标题为:How to split Varnish log for Virtual host的博客中。例如:
清漆 3.x 清漆 4.x您需要将其设置为个性化的 systemd 单元文件,每个虚拟主机一个。注意:该方法也在这篇博客文章中讨论,标题为:[tips]varnishncsa save the split log for each host。
你的例子
因此,对于每个单元文件,每个虚拟主机 1 个,您可以像这样添加 exec 行:
单元文件#1 单元文件#2