瓦尼西克萨

以APACHE/NCSA组合日志格式显示Varnish日志

手册部分:

1

SYNOPSIS

瓦尼西克萨 [-a] [-b] [-c] [-C] [-d] [-D] [-E] [-F <format>] [-f <formatfile>] [-g <request|vxid>] [-h] [-j] [-k <num>] [-L <limit>] [-n <dir>] [-P <file>] [-Q <file>] [-q <query>] [-r <filename>] [-R <limit[/duration]>] [-t <seconds|off>] [-V] [-w <filename>]

DESCRIPTION

Varnishncsa实用程序读取varnishd(1)共享内存日志,并以Apache/NCSA“组合”的日志格式显示它们。

生成的每个日志行都基于从共享内存日志中收集的单个请求类型事务。然后扫描请求事务以查找相关部分,以便输出一个日志行。要筛选生成的日志行,请使用查询语言选择适用的事务。非请求事务将被忽略。

以下选项可用:

-a

将输出写入文件时,应追加而不是覆盖。如果没有-w选项,此选项将不起作用。

-b

记录后端请求。如果未指定-c,则只有后端请求将触发日志行。

-c

记录客户端请求。这是默认设置。如果指定了-b,则还需要-c来记录客户端请求

-C

做所有正则表达式和字符串匹配,不区分大小写。

-d

处理日志开头的日志记录并退出。

-D

守护神。

-E

显示ESI请求,表示客户端模式。

-F <format>

设置输出日志格式字符串。

-f <formatfile>

从文件中读取输出格式。将从指定的文件中读取一行,并使用该行作为格式。

-g <request|vxid>

日志记录的分组。默认情况下,按vxid分组。

-h

打印程序使用和退出

-j

Make format-specifier replacements JSON-compatible. When escaping characters, use JSON-style \uXXXX escape sequences instead of C-style \xXX sequences. Empty strings will be replaced with "" instead of "-", and empty integers will be replaced with null. Use -F or -f in combination with -j to write JSON logs.

-k <num>

在退出之前处理此数量的匹配日志事务。

-L <limit>

设置在强制完成最早的事务之前保留的未完成事务的上限。当发生这种情况时,将合成警告记录。此设置对运行查询的内存使用量保持上限。默认为1000笔交易记录。

-n <dir>

指定从中获取日志的varnishd工作目录(也称为实例名称)。如果未指定-n,则使用主机名。

-P <file>

将进程的ID写入指定的文件。

-Q <file>

指定包含要使用的VSL查询的文件。当指定了多个-q或-q选项时,所有查询都被视为使用‘or’运算符组合它们。

-q <query>

指定要使用的VSL查询。当指定了多个-q或-q选项时,所有查询都被视为使用‘or’运算符组合它们。

-r <filename>

从此文件中读取二进制文件格式的日志。可以使用以下命令创建该文件 varnishlog -w filename 。如果文件名为-,则从标准输入中读取日志。并且不能作为守护程序工作。

-R <limit[/duration]>

将输出限制在指定的限制内。超过限制的交易将被抑制。该限制被指定为最大事务数(相对于所选的分组方法)和一个可选的时间段。如果未指定持续时间,则默认为 s 使用的是。持续时间字段可以格式化为VCL中的格式(例如 -R 10/2m )或作为不带前缀的简单时间段(例如 -R 5/m )。当进入时 -g raw 分组模式,此设置不能与 -i-I-x-X ,我们建议使用 -q 取而代之的是。

-t <seconds|off>

在初始VSM连接上返回错误之前超时。如果设置,则VSM连接每0.5秒重试一次,持续此时间。如果为零,则只尝试连接一次,如果连接不成功,将立即失败。如果设置为“off”,则连接不会失败,从而允许实用程序无限期地启动并等待Varnish实例出现。默认为5秒。

-V

打印版本信息并退出。

-w <filename>

将输出重定向到文件。除非指定了-a选项,否则该文件将被覆盖。如果应用程序在守护程序模式下收到SIGHUP,文件将重新打开,允许旧文件旋转离开。在守护程序模式下运行时,此选项是必需的。如果文件名为-,varnishncsa将写入标准输出,并且不能作为守护进程工作。

--optstring

将optstring参数打印到 getopt(3) 以帮助编写包装器脚本。

MODES

Varnishncsa的默认模式是“客户端模式”。在此模式下,日志将类似于Web服务器在没有Varnish的情况下生成的日志。可以使用-c显式选择客户端模式。

如果指定了-b开关,varnishncsa将在“后端模式”下运行。在该模式下,将记录Varnish对后端产生的请求。除非还指定了-c,否则Varnish收到的客户端请求将被忽略。

在后端和客户端模式下运行varnishncsa时,强烈建议包含格式说明符%{Varnish:side}x以区分后端和客户端请求。

导致管道的客户端请求(即返回(vCL中的管道),将不会在后端模式下生成日志记录。这是因为Varnish不会生成请求,而是盲目地双向传递字节。但是,在正常模式下运行的varnishncsa实例可以通过使用格式化程序%{Varnish:Handling}x看到这种情况,该格式化程序将是‘管道’。

在后端模式下,格式字符串中的一些字段具有不同的含义。最值得注意的是,字节计数格式化器(%b、%i、%O)将Varnish视为客户端。

可以保持两个varnishncsa实例运行,一个处于后端模式,另一个处于客户端模式,记录到不同的文件。

FORMAT

指定要使用的日志格式。如果未指定格式,则使用默认日志格式::

%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i"

Escape sequences \n and \t are supported.

支持的格式化程序包括:

%b

在客户端模式下,响应的大小(以字节为单位),不包括HTTP标头。在后端模式下,从后端接收的字节数,不包括HTTP标头。CLF格式,即未发送字节时为‘-’而不是0。

%D

在客户端模式下,处理请求所用的时间,以微秒为单位。在后端模式中,从请求发送到整个正文的时间已收到。这相当于%{us}T。

%H

请求协议。如果未知,则默认为HTTP/1.0。

%h

远程主机。如果未知,则默认为‘-’。在后端模式下,这是后端服务器的IP。

%i

在客户端模式下,从客户端接收的总字节数。在后端模式下,发送到后端的总字节数。

%{X}i

请求标头X的内容。如果标头在单个事务中多次出现,则使用最后出现的那个。

%L

远程登录名。总是用‘-’。

%m

请求方法。如果未知,则默认为‘-’。

%{X}o

响应标头X的内容。如果标头在单个事务中多次出现,则使用最后出现的那个。

%O

在客户端模式下,发送到客户端的总字节数。在后端模式下,从后端接收的总字节数。

%Q

查询字符串。如果不存在,则默认为空字符串。

%r

请求的第一行。从其他领域合成,因此它可能不是逐字请求。请参阅备注部分。

%S

已发送到客户端的状态。在后端模式下,从后端接收的状态。

%t

在客户端模式下,接收请求的时间,以HTTP日期/时间格式表示。在后端模式中,发送请求的时间。

%{X}t

在客户端模式中,以X指定的格式接收请求的时间。在后端模式中,发送请求的时间。时间规范格式与strftime(3)相同,具有以下扩展名:

  • %{sec} :自纪元起的秒数

  • %{msec} :自纪元起的毫秒数

  • %{usec} :自纪元起的毫秒数

  • %{msec_frac} :毫秒分数

  • %{usec_frac} :微秒分数

扩展不能相互组合,也不能在同一规范中组合strftime(3)。使用多个 %{X}t 取而代之的是规格。

%T

在客户端模式下,服务请求所用的时间,以秒为单位。在后端模式中,从请求发送到整个正文的时间已收到。这相当于%{S}T。

%{X}T

在客户端模式中,以X指定的格式为请求提供服务所用的时间。在后端模式中,从请求发送到整个正文的时间已被接收。时间规范格式可以是以下之一:S(同%T)、ms或us(同%D)。

%U

不带查询字符串的请求URL。如果未知,则默认为‘-’。

%u

来自身份验证的远程用户。

%{X}x

扩展变量。支持的变量包括:

Varnish:time_first stbyte

从请求处理开始到向客户端发送第一个字节的时间,以秒为单位。对于后端模式:从请求发送到后端到整个标头都已收到的时间。

Varnish:未命中

在客户端模式下,根据请求是高速缓存命中还是未命中,为‘命中’或‘未命中’字符串之一。PIPE、PASS和SYNTH被认为是失误。在后端模式下,此字段为空。

Varnish:处理

在客户端模式下,‘Hit’、‘Misse’、‘Pass’、‘PIPE’或‘Synth’字符串之一,指示请求的处理方式。在后端模式下,此字段为空。

Varnish:侧面

后端或客户端。两个值之一‘b’或‘c’,具体取决于请求发出的位置。在纯后端或客户端模式下,此字段将为常量。

Varnish:vxid

Varnish交易记录的VXID。

VCL_Log:密钥

VCL中std.log(“key:Value”)设置的值。

VSL:TAG:Record-Prefix [field]

给定标记记录前缀字段组合的VSL条目的值。标签是必填的,其他组件是可选的。

记录前缀将匹配限制到将该前缀作为记录内容的第一部分并后跟冒号的那些记录。

如果存在该字段,则会将日志记录视为以空格分隔的字段列表,并且只对记录的第n部分进行匹配。字段从1开始计数,直到255。

当看不到标记、记录前缀不匹配或字段超出范围时,默认为‘-’。如果一个标记在单个事务中出现多次,则使用第一个出现的标记。

SIGNALS

  • SIGHUP

    在守护程序模式下旋转日志文件(请参见-w选项),中止循环并在前台运行时优雅地退出。

  • 标志1

    刷新所有未完成的交易。

NOTES

%r格式化程序等效于“%m http://%{Host}i%U%q%H”。这与Apache%r行为不同,相当于“%m%U%q%H”。此外,在使用%r格式化程序时,如果主机标头在单个事务中多次出现,则使用第一个出现的。

EXAMPLE

记录开始记录的第二个字段,对应于父事务的VXID::

varnishncsa -F "%{VSL:Begin[2]}x"

记录与处理长度关联的整个时间戳记录::

varnishncsa -F "%{VSL:Timestamp:Process}x"

登录JSON,使用-j标志确保输出对于所有输入都有效:

varnishncsa -j -F '{"size": %b, "time": "%t", "ua": "%{User-Agent}i"}'

另请参阅

华而不实 Varnishlog Varnish状态 VSL-查询 VSL

HISTORY

Varnishncsa实用程序由Pul-Henning Kamp与Verdens Gang AS和Varnish Software AS合作开发。本手册最初由Dag-Erling Smørgrav<des@des.no>撰写,后来由Martin Blix Grydeland和PóL Hermunn Johansen更新。