如何过滤基于XID的清漆日志?

我遇到了难以find的罕见503错误。 Varnishlog让我很生气,因为我似乎无法得到我想要的信息。

我希望看到Varnish看到的客户端和后端通信。 我以为在Varnish的默认错误页面上login的XID号码将允许我从日志缓冲区中过滤确切的请求。 但是,没有varnishlog参数的组合给了我需要的输出。

以下仅显示客户端通信:

varnishlog -d -c -m ReqStart:1427305652 

而这只显示了由此产生的后端通讯:

 varnishlog -d -b -m TxHeader:1427305652 

是否有单行显示整个请求?

由于XID在与客户端通信时也出现在TxHeader标签行中:

  12 SessionOpen c 127.0.0.1 33829 :80 12 ReqStart c 127.0.0.1 33829 1171098618 12 RxRequest c GET 12 RxURL c / 12 RxProtocol c HTTP/1.1 12 RxHeader c Host: ganglia.gentoo 12 RxHeader c User-Agent: Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0 12 RxHeader c Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 12 RxHeader c Accept-Language: en-us 12 RxHeader c Accept-Encoding: gzip, deflate 12 RxHeader c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 12 RxHeader c Connection: keep-alive 12 VCL_call c recv lookup 12 VCL_call c hash 12 Hash c / 12 Hash c ganglia.gentoo 12 VCL_return c hash 12 HitPass c 1171098616 12 VCL_call c pass pass 12 Backend c 13 apache apache 12 TTL c 1171098618 RFC 120 -1 -1 1317921851 0 1317921851 0 0 12 VCL_call c fetch 12 TTL c 1171098618 VCL 120 -1 -1 1317921851 -0 12 VCL_return c hit_for_pass 12 ObjProtocol c HTTP/1.1 12 ObjResponse c OK 12 ObjHeader c Date: Thu, 06 Oct 2011 17:24:11 GMT 12 ObjHeader c Server: Apache 12 ObjHeader c Content-Length: 17 12 ObjHeader c Content-Type: text/html 12 VCL_call c deliver deliver 12 TxProtocol c HTTP/1.1 12 TxStatus c 200 12 TxResponse c OK 12 TxHeader c Server: Apache 12 TxHeader c Content-Type: text/html 12 TxHeader c Content-Length: 17 12 TxHeader c Accept-Ranges: bytes 12 TxHeader c Date: Thu, 06 Oct 2011 17:24:11 GMT 12 TxHeader c X-Varnish: 1171098618 12 TxHeader c Age: 0 12 TxHeader c Via: 1.1 varnish 12 TxHeader c Connection: keep-alive 12 Length c 17 12 ReqEnd c 1171098618 1317921851.307137489 1317921851.344322681 0.000065327 0.037110329 0.000074852 

正如@Oneiroi所说,根据man page

  -b Include log entries which result from communication with a backend server. If neither -b nor -c is specified, varnishlog acts as if they both were. -c Include log entries which result from communication with a client. If neither -b nor -c is speci‐ fied, varnishlog acts as if they both were. 

所以,试试这个:

 varnishlog -d -m TxHeader:XID | awk '$1 !~ /0/ { print $0 }' 

结果示例:

 varnishlog -d -m TxHeader:1171098618 | awk '$1 !~ /0/ { print $0 }' 13 BackendOpen b apache 127.0.0.1 40207 127.0.0.1 8080 13 TxRequest b GET 13 TxURL b / 13 TxProtocol b HTTP/1.1 13 TxHeader b Host: ganglia.gentoo 13 TxHeader b User-Agent: Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0 13 TxHeader b Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 13 TxHeader b Accept-Language: en-us 13 TxHeader b Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 13 TxHeader b X-Forwarded-For: 127.0.0.1 13 TxHeader b Accept-Encoding: gzip 13 TxHeader b X-Varnish: 1171098618 13 RxProtocol b HTTP/1.1 13 RxStatus b 200 13 RxResponse b OK 13 RxHeader b Date: Thu, 06 Oct 2011 17:24:11 GMT 13 RxHeader b Server: Apache 13 RxHeader b Content-Length: 17 13 RxHeader b Content-Type: text/html 13 Fetch_Body b 4 0 1 13 Length b 17 13 BackendReuse b apache 12 SessionOpen c 127.0.0.1 33829 :80 12 ReqStart c 127.0.0.1 33829 1171098618 12 RxRequest c GET 12 RxURL c / 12 RxProtocol c HTTP/1.1 12 RxHeader c Host: ganglia.gentoo 12 RxHeader c User-Agent: Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0 12 RxHeader c Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 12 RxHeader c Accept-Language: en-us 12 RxHeader c Accept-Encoding: gzip, deflate 12 RxHeader c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 12 RxHeader c Connection: keep-alive 12 VCL_call c recv lookup 12 VCL_call c hash 12 Hash c / 12 Hash c ganglia.gentoo 12 VCL_return c hash 12 HitPass c 1171098616 12 VCL_call c pass pass 12 Backend c 13 apache apache 12 TTL c 1171098618 RFC 120 -1 -1 1317921851 0 1317921851 0 0 12 VCL_call c fetch 12 TTL c 1171098618 VCL 120 -1 -1 1317921851 -0 12 VCL_return c hit_for_pass 12 ObjProtocol c HTTP/1.1 12 ObjResponse c OK 12 ObjHeader c Date: Thu, 06 Oct 2011 17:24:11 GMT 12 ObjHeader c Server: Apache 12 ObjHeader c Content-Length: 17 12 ObjHeader c Content-Type: text/html 12 VCL_call c deliver deliver 12 TxProtocol c HTTP/1.1 12 TxStatus c 200 12 TxResponse c OK 12 TxHeader c Server: Apache 12 TxHeader c Content-Type: text/html 12 TxHeader c Content-Length: 17 12 TxHeader c Accept-Ranges: bytes 12 TxHeader c Date: Thu, 06 Oct 2011 17:24:11 GMT 12 TxHeader c X-Varnish: 1171098618 12 TxHeader c Age: 0 12 TxHeader c Via: 1.1 varnish 12 TxHeader c Connection: keep-alive 12 Length c 17 12 ReqEnd c 1171098618 1317921851.307137489 1317921851.344322681 0.000065327 0.037110329 0.000074852 

从手册页:

包含与客户端通信导致的日志条目。 如果既不指定-b也不指定-c,varnish日志就好像它们都是。

理论上否定添加-c或-b 应该检索整个事务。