获取 varnishlog 以仅将 503 错误记录到文件中

Edu*_*uca 6 logging centos varnish apache-2.2

我尝试了一切:

service varnishlog start - 记录一切

varnishlog -D -c -m TxStatus:503 > /var/log/varnish/varnish.log - 好像什么都没做

varnishlog -c -m TxStatus:503 > /var/log/varnish/varnish.log - 仅在我关闭 SSH 连接之前记录

我别无选择,有什么帮助吗?

注意:varnishncsa 不是一个选项,因为它没有告诉我是哪个错误导致了 503。我正在运行 Varnish 3.x(最新)和 CentOS 5.8,Apache 2 作为后端。

s1d*_*s1d 11

对于那些沮丧地在这里寻找 Varnish 4 中相同问题的解决方案的人,请参见下文:

varnishlog -a -w /var/log/varnish/varnish50x.log -q "RespStatus >= 500 or BerespStatus >= 500"
Run Code Online (Sandbox Code Playgroud)

Varnish 4 取消了 varnishlog 中的 -m 选项,取而代之的是一种名为 VSL 的新过滤器查询语言,该语言可在新选项 -q 中使用。在上面的命令中,-a 提供 appendonly 选项而不是覆盖文件,-w 允许将输出写入文件,-q 用于 VSL 查询。上面的命令将记录 varnish 响应或后端响应状态 >=500(包括可怕的 503 错误)的条目。

  • 如果您使用最新的 Varnish 4.1,请记住在参数中添加“-A”(因此列表变为 `-a -A -w ...` 以具有 ASCII 日志(否则 Varnish 会写入二进制日志) (2认同)

小智 3

如果我理解正确的话 varnishlog -c -m TxStatus:503 > /var/log/varnish/varnish.log 确实满足您的需求,但一旦关闭 ssh 就会停止。

如果你需要临时记录503错误,比如几个月的时间来调试一个问题,那么你可以看看nohup或screen。

如果您需要永久记录 503 错误,请查看 varnishlog init 脚本 (/etc/init.d/varnishlog )。