我想让Varnish记录请求。我找到了命令varnishlog -a -w /var/log/varnish.log
,但它没有记录任何内容。
然后我发现Varnish默认不写入日志。但是,我无法找到用于记录的配置选项。
答案 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