varnish日志记录

varnish一个非常好的特点就是日志记录的工作方式。varnish不是将日志记录进日志文件,而是调用VSL(the Varnish Shared Log)将日志记录到共享内存片段中。当这个片段被写满后,varnish就开始覆盖旧的数据。

这种方式比记录到日志文件中要快很多,并且不需要磁盘空间。当你需要的时候,它会给你提供很多很多有用的信息。

另一方面,如果你忘记了有程序将日志写入磁盘,那么日志将会占用过多的磁盘空间。

varnishlog 是一个可以用来查看varnish记录了哪些日志的一个程序。varnish可以为你提供原生日志。也有一些其他的客户端可以很好的查看日志,我们稍后将会展示给你。

在启动了varnish的终端窗口里键入varnishlog -g raw并按回车。

你将会看到一些行信息,并缓慢滚动,就像这面这样:

0 CLI            - Rd ping
0 CLI            - Wr 200 19 PONG 1273698726 1.0

varnish的主进程会检查cache进程一切是否正常。

现在,你可以到浏览器里面刷新页面,这些将会显示在日志记录中。

你将会看到以下信息:

11 SessOpen       c 127.0.0.1 58912 :8080 0.0.0.0 8080 1273698726.933590 14
11 ReqStart       c 127.0.0.1 58912
11 ReqMethod      c GET
11 ReqURL         c /
11 ReqProtocol    c HTTP/1.1
11 ReqHeader      c Host: localhost:8080
11 ReqHeader      c Connection: keep-alive
  • 第一列是一个随机数,它用来识别访问会话,如果数字相同就代表来自同一会话。
  • 第二列是日志信息的标签。所有的请求都会被标识一个活动类型标签。
  • 第三列是告诉我们这些数据是来自或者发送到客户端(c),还是后端服务器(b)。
  • 第四列是被记录的日志信息。

现在,你可以对日志进行一下过滤了,最基本的一些参数如下:

  • -b 只展示varnish和后端server交互的日志。当我们要优化缓存命中率时,非常有用。

  • -c 和-b参数一样,只不过是显示客户端的交互日志。

  • -g request 对请求进行分组

  • -q query 只列出与query想匹配的记录。

如果想要查看更多关于此话题的内容请查看varnishlog.

results matching ""

    No results matching ""