如何设置清漆记录?

时间:2012-10-03 09:10:32

标签: logging varnish

我想让Varnish记录请求。我找到了命令varnishlog -a -w /var/log/varnish.log,但它没有记录任何内容。

然后我发现Varnish默认不写入日志。但是,我无法找到用于记录的配置选项。

5 个答案:

答案 0 :(得分:24)

如果您想在NCSA Common Log Format中记录HTTP请求,则需要使用varnishncsa。在CentOS / RedHat上,Varnish RPM软件包包含一个varnishncsa init脚本,可用于开始记录。默认情况下,它会记录到logfile="/var/log/varnish/varnishncsa.log"

此外,如果您希望通过单个Varnish安装服务多个不同的主机,您还需要在日志中包含主机名。这可以通过/etc/sysconfig/varnishncsa

中的以下设置来完成
DAEMON_OPTS="$DAEMON_OPTS -F '%{Host}i %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"'"

请注意,Anshu链接中描述的方法仅将Varnish传递的请求记录到后端服务器。 缓存命中请求永远不会被记录(在Varnish 5.0之前 - 见下文)。因此,以这种方式收集的HTTPD日志不能用于统计分析。

更新:正如@VikrantPogula所提到的,从Varnish 5.0开始,所有客户端请求都会被记录 - 包括缓存命中。这是默认行为,可以使用-c开关显式启用。

答案 1 :(得分:6)

清漆中的度量标准是人们挣扎的共同领域。

获得一次性请求指标相对容易,但随着时间的推移总体跟踪通常涉及使用varnishncsa。这是guide on Varnish installation,其中包含指标设置

答案 2 :(得分:3)

在回答Ketola的回答时,您可以通过传递-c标志来使varnishncsa记录甚至Cache命中请求。这将允许您使用HTTPD日志来分析统计信息。

示例:varnishncsa -c -a -w ~/varnish.log将以默认NCSA格式将缓存命中请求写入文件

答案 3 :(得分:1)

因为我登陆这里并且建议的修复没有帮助:

我的varnishncsa.log为空,进程正在运行。

原来,我必须指定日志格式(任何格式)。

由于这种洞察本身并没有修复我的初始化脚本,我使用this strategy修复了它。

答案 4 :(得分:0)

在具有systemd的系统中不推荐使用文件/etc/default/varnish*。只需运行以下命令:

systemctl enable varnishncsa.service
systemctl start varnishncsa.service

您还可以在/lib/systemd/system/varnishncsa.service

中修改守护程序参数。