14

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

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

4

5 回答 5

24

如果您想以NCSA 通用日志格式记录 HTTP 请求,您需要使用varnishncsa. 在 CentOS/RedHat 上,Varnish RPM 软件包包含一个 varnishncsa 初始化脚本,您可以使用它来开始记录。默认情况下,它记录到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开关显式打开。

于 2012-10-03T10:48:37.100 回答
6

Varnish 中的度量标准是人们经常遇到的问题。

获得一些一次性请求指标相对容易,但随着时间的推移进行整体跟踪通常涉及使用 varnishncsa。这是关于 Varnish 安装的指南,其中包括公制设置

于 2015-05-04T04:27:27.463 回答
3

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

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

于 2014-10-10T08:03:56.903 回答
1

由于我降落在这里并且建议的修复没有帮助:

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

事实证明,我必须指定日志格式(任何格式)。

由于这种洞察力本身并没有修复我的初始化脚本,所以我使用这个策略修复了它。

于 2017-02-08T10:19:44.020 回答
1

这些文件/etc/default/varnish*在带有 systemd 的系统中已弃用。只需运行以下命令:

systemctl enable varnishncsa.service
systemctl start varnishncsa.service

您还可以修改守护程序参数/lib/systemd/system/varnishncsa.service

于 2020-05-04T10:51:03.203 回答