varnishlog、Varnishstat详解

Varnish将日志记录到共享内存片段,而不是记录到一个普通文件中。当记录到内存片段的最后处,会再从头开始记,覆写老数据。这比记录到文件要快的多,不需要磁盘空间。
Varnishlog是一个用来查看Varnish日志的程序
1:启动varnishlog,会看到主进程的基本信息
2:然后重新刷新浏览器访问页面,会看到访问的日志信息
3:格式说明:

  • 第一列可以是任意的数字,它代表具体的请求。数字相同,表示他们是同属于一个HTTP事务的。
  • 第二列是日志信息的标签。所有的日志条目都是用一个标签去标记,该标签代表何种行为被记录。以Rx开头的标签代表varnish正在接受数据,Tx代表正在发送数据。
  • 第三列表示数据的是来自或者要发送给客户(c),另外,还有为b的情况,代表数据来自或要发送给后端(b)。第四列是被记录的数据。

日志过滤指令:可以使用varnishlog去过滤,基本的选项如下:

-b 只显示varnish和后端服务器之间通信的记录条。当你想优化缓存命中率的时候,非常有用。 

./varnishlog -b

-I 通过正则表达式过滤数据,并显示匹配行。”varnishlog –c –I RxHeader –I Cookie”,将显示所有来自客户端的cookie头信息。

-k num 只显示开头的num个日志记录

-w 、-r 

输出日志到一个文件:
$ varnishlog -w /var/log/varnish.log
读取一个日志文件,然后显示首页的请求
$ varnishlog -r /var/log/varnish.log -c -m 'RxURL:^/$'

 

自定义日志

varnish里内置了日志模块,可以在vcl文件最上边引用std库,以便输出日志:import std;
然后在需要输出日志的地方,使用 std.log 即可。
比如你想跟踪哪些连接没有命中缓存,可以在vcl_miss函数中这样写:

sub vcl_miss {
  std.log("url miss! the url=" + req.url);
  return (fetch);
}
启动varnish 后,通过 varnishlog工具跟踪打印出的日志 varnishlog
-I log

客户端与varnish uncached log

 server与varnish uncached log

 客户端与varnish cached log

 

 Varnishstat统计信息

Varnishstat工具显示一个运行的varnished实例的相关统计数据

显示中每列的含义,从左到右:
1:值 2:从最后一秒更新以来的每秒的一个平均值,或者一个不能计算的周期
3:从进程开始到现在每秒的平均值,或者是一个不能计算的周期。
4:描述
当使用-1选项,输出列的含义,从左到右:
1:特征名字 2:值
3:从进程开始到现在每秒的平均值,或者是一个不能计算的周期。
4:描述

 

posted @ 2018-06-24 13:48  小亮的BLOG  阅读(515)  评论(0编辑  收藏  举报