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:描述