Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
VARNISHNCSA(1)		    General Commands Manual		VARNISHNCSA(1)

NAME
       varnishncsa - Display Varnish logs in Apache / NCSA combined log	format

SYNOPSIS
       varnishncsa  [-a] [-b] [-c] [-C]	[-d] [-D] [-E] [-F <format>] [-f <for-
       matfile>] [-g <request|vxid>] [-h] [-j] [-k  <num>]  [-L	 <limit>]  [-n
       <workdir>]  [-P	<file>]	 [-Q  <file>] [-q <query>] [-r <filename>] [-R
       <limit[/duration]>] [-t <seconds|off>] [-V] [-w <filename>]

DESCRIPTION
       The varnishncsa	utility	 reads	varnishd(1)  shared  memory  logs  and
       presents	them in	the Apache / NCSA "combined" log format.

       Each  log  line	produced is based on a single Request type transaction
       gathered	from the shared	memory log. The	Request	 transaction  is  then
       scanned for the relevant	parts in order to output one log line. To fil-
       ter  the	 log  lines produced, use the query language to	select the ap-
       plicable	transactions. Non-request transactions are ignored.

       The following options are available:

       -a     When writing output to a file, append to it  rather  than	 over-
	      write it.	This option has	no effect without the -w option.

       -b     Log  backend requests. If	-c is not specified, then only backend
	      requests will trigger log	lines.

       -c     Log client requests. This	is the default.	If  -b	is  specified,
	      then -c is needed	to also	log client requests

       -C     Do all regular expression	and string matching caseless.

       -d     Process log records at the head of the log and exit.

       -D     Daemonize.

       -E     Show ESI requests, implies client	mode.

       -F <format>
	      Set the output log format	string.

       -f <formatfile>
	      Read output format from a	file. Will read	a single line from the
	      specified	file, and use that line	as the format.

       -g <request|vxid>
	      The  grouping  of	 the  log  records. The	default	is to group by
	      vxid.

       -h     Print program usage and exit

       -j     Make format-specifier replacements JSON-compatible. When	escap-
	      ing  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>
	      Process this number of matching log transactions before exiting.

       -L <limit>
	      Sets the upper limit of incomplete transactions kept before  the
	      oldest  transaction is force completed. A	warning	record is syn-
	      thesized when this happens. This setting keeps an	upper bound on
	      the memory usage of running queries. Defaults to	1000  transac-
	      tions.

       -n <workdir>
	      Specify  the varnish working directory of	the instance to	attach
	      to. See varnishd(1) -n option documentation for  additional  in-
	      formation	and defaults.

       -P <file>
	      Write the	process' PID to	the specified file.

       -Q <file>
	      Specifies	 the file containing the VSL query to use. When	multi-
	      ple -Q or	-q options are specified, all queries  are  considered
	      as if the	'or' operator was used to combine them.

       -q <query>
	      Specifies	 the  VSL query	to use.	When multiple -q or -Q options
	      are specified, all queries are considered	as if the 'or'	opera-
	      tor was used to combine them.

       -r <filename>
	      Read  log	 in binary file	format from this file. The file	can be
	      created with varnishlog -w filename. If the filename is -,  logs
	      are read from the	standard input.	and cannot work	as a daemon.

       -R <limit[/duration]>
	      Restrict the output to the specified limit. Transactions exceed-
	      ing  the limit will be suppressed. The limit is specified	as the
	      maximum number of	 transactions  (with  respect  to  the	chosen
	      grouping	method)	and an optional	time period. If	no duration is
	      specified, a default of s	is used. The  duration	field  can  be
	      formatted	 as  in	VCL (e.g. -R 10/2m) or as a simple time	period
	      without the prefix (e.g. -R 5/m).	When in	-g raw grouping	 mode,
	      this  setting can	not be used alongside -i, -I, -x or -X,	and we
	      advise using -q instead.

       -t <seconds|off>
	      Timeout before returning error on	initial	VSM connection.	If set
	      the VSM connection is retried every 0.5 seconds  for  this  many
	      seconds.	If zero	the connection is attempted only once and will
	      fail immediately if unsuccessful.	If set to "off",  the  connec-
	      tion  will  not fail, allowing the utility to start and wait in-
	      definitely for the Varnish instance to appear.   Defaults	 to  5
	      seconds.

       -V     Print version information	and exit.

       -w <filename>
	      Redirect output to file. The file	will be	overwritten unless the
	      -a option	was specified. If the application receives a SIGHUP in
	      daemon mode the file will	be reopened allowing the old one to be
	      rotated  away.  This  option  is required	when running in	daemon
	      mode. If the filename is -, varnishncsa writes to	 the  standard
	      output and cannot	work as	a daemon.

       --optstring
	      Print the	optstring parameter to getopt(3) to help writing wrap-
	      per scripts.

MODES
       The  default  mode  of varnishncsa is "client mode".  In	this mode, the
       log will	be similar to what a web server	would produce in  the  absence
       of varnish.  Client mode	can be explicitly selected by using -c.

       If  the	-b  switch  is specified, varnishncsa will operate in "backend
       mode".  In this mode, requests generated	by  varnish  to	 the  backends
       will  be	logged.	 Unless	-c is also specified, client requests received
       by varnish will be ignored.

       When running varnishncsa	 in  both  backend  and	 client	 mode,	it  is
       strongly	 advised  to  include the format specifier %{Varnish:side}x to
       distinguish between backend and client requests.

       Client requests that results in a pipe (ie. return(pipe)	in vcl),  will
       not  generate  logging  in backend mode.	This is	because	varnish	is not
       generating requests, but	blindly	passes on bytes	 in  both  directions.
       However,	 a  varnishncsa	 instance  running in normal mode can see this
       case by using the formatter %{Varnish:handling}x, which will be 'pipe'.

       In backend mode,	some of	the fields in the format string	get  different
       meanings.  Most notably,	the byte counting formatters (%b, %I, %O) con-
       siders varnish to be the	client.

       It  is possible to keep two varnishncsa instances running, one in back-
       end mode, and one in client mode, logging to different files.

FORMAT
       Specify the log format to use. If no format is  specified  the  default
       log format is used:

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

       Escape sequences	\n and \t are supported.

       Supported formatters are:

       %b     In  client mode, size of response	in bytes, excluding HTTP head-
	      ers.  In backend mode, the number	of  bytes  received  from  the
	      backend,	excluding  HTTP	 headers.   In	CLF format, i.e. a '-'
	      rather than a 0 when no bytes are	sent.

       %D     In client	mode, time taken to serve the  request,	 in  microsec-
	      onds.   In  backend  mode, time from the request was sent	to the
	      entire body had been received. This is equivalent	to %{us}T.

       %H     The request protocol. Defaults to	HTTP/1.0 if not	known.

       %h     Remote host. Defaults to '-' if not known.  In backend mode this
	      is the IP	of the backend server.

       %I     In client	mode, total bytes received from	 client.   In  backend
	      mode, total bytes	sent to	the backend.

       %{X}i  The contents of request header X.	If the header appears multiple
	      times in a single	transaction, the last occurrence is used.

       %l     Remote logname. Always '-'.

       %m     Request method. Defaults to '-' if not known.

       %{X}o  The  contents of response	header X. If the header	appears	multi-
	      ple times	in a single transaction, the last occurrence is	used.

       %O     In client	mode, total bytes sent to client.   In	backend	 mode,
	      total bytes received from	the backend.

       %q     The query	string.	Defaults to an empty string if not present.

       %r     The first	line of	the request. Synthesized from other fields, so
	      it may not be the	request	verbatim. See the NOTES	section.

       %s     Status  sent  to	the  client.  In backend mode, status received
	      from the backend.

       %t     In client	mode, time when	the  request  was  received,  in  HTTP
	      date/time	 format.   In  backend mode, time when the request was
	      sent.

       %{X}t  In client	mode, time when	the request was	received, in the  for-
	      mat  specified by	X.  In backend mode, time when the request was
	      sent.  The time specification format is the same	as  for	 strf-
	      time(3) with these extensions:

	      	%{sec}:	number of seconds since	the Epoch

	      	%{msec}: number	of milliseconds	since the Epoch

	      	%{usec}: number	of milliseconds	since the Epoch

	      	%{msec_frac}: millisecond fraction

	      	%{usec_frac}: microsecond fraction

	      The extensions cannot be combined	with each other	or strftime(3)
	      in the same specification. Use multiple %{X}t specifications in-
	      stead.

       %T     In client	mode, time taken to serve the request, in seconds.  In
	      backend  mode, time from the request was sent to the entire body
	      had been received. This is equivalent to %{s}T.

       %{X}T  In client	mode, time taken to serve the request, in  the	format
	      specified	by X.  In backend mode,	time from the request was sent
	      to  the  entire  body  had been received.	The time specification
	      format can be one	of the following: s (same as  %T),  ms	or  us
	      (same as %D).

       %U     The request URL without the query	string.	Defaults to '-'	if not
	      known.

       %u     Remote user from auth.

       %{X}x  Extended variables.  Supported variables are:

	      Varnish:default_format
		     The  log  format  used when neither -f nor	-F options are
		     specified.	 Useful	for  appending/prepending  with	 other
		     formatters.

	      Varnish:time_firstbyte
		     Time  from	 when  the request processing starts until the
		     first byte	is sent	to the client, in seconds.  For	 back-
		     end  mode:	 Time from the request was sent	to the backend
		     to	the entire header had been received.

	      Varnish:hitmiss
		     In	client mode, one of the	'hit' or 'miss'	 strings,  de-
		     pending  on  whether the request was a cache hit or miss.
		     Pipe, pass	and synth are considered  misses.  In  backend
		     mode, this	field is blank.

	      Varnish:handling
		     In	 client	mode, one of the 'hit',	'miss',	'pass',	'pipe'
		     or	'synth'	strings	indicating how the  request  was  han-
		     dled. In backend mode, this field is blank.

	      Varnish:side
		     Backend  or  client  side.	One of two values, 'b' or 'c',
		     depending on where	the request was	made. In pure  backend
		     or	client mode, this field	will be	constant.

	      Varnish:vxid
		     The VXID of the varnish transaction.

	      VCL_Log:key
		     The value set by std.log("key:value") in VCL.

	      VSL:tag:record-prefix[field]
		     The  value	of the VSL entry for the given tag-record pre-
		     fix-field combination. Tag	is mandatory, the other	compo-
		     nents are optional.

		     The record	prefix will limit the matches to those records
		     that have this prefix as the first	 part  of  the	record
		     content followed by a colon.

		     The  field	 will,	if  present, treat the log record as a
		     white space separated list	of fields, and	only  the  nth
		     part  of the record will be matched against. Fields start
		     counting at 1 and run up to 255.

		     Defaults to '-' when the tag is not seen, the record pre-
		     fix does not match	or the field is	out of	bounds.	 If  a
		     tag  appears  multiple times in a single transaction, the
		     first occurrence is used.

SIGNALS
        SIGHUP

	 Rotate	the log	file (see -w option) in	daemon mode,  abort  the  loop
	 and die gracefully when running in the	foreground.

        SIGUSR1

	 Flush any outstanding transactions.

NOTES
       The %r formatter	is equivalent to "%m  <http:/> /%{Host}i%U%q %H". This
       differs	from  apache's	%r behavior, equivalent	to "%m %U%q %H".  Fur-
       thermore, when using the	%r formatter, if the Host header appears  mul-
       tiple times in a	single transaction, the	first occurrence is used.

EXAMPLE
       Log  the	second field of	the Begin record, corresponding	to the VXID of
       the parent transaction:

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

       Log the entire Timestamp	record associated with the processing length:

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

       Log in JSON, using the -j flag to ensure	that the output	is valid  JSON
       for all inputs:

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

SEE ALSO
       varnishd(1) varnishlog(1) varnishstat(1)	vsl-query(7) vsl(7)

HISTORY
       The  varnishncsa	utility	was developed by Poul-Henning Kamp in coopera-
       tion with Verdens Gang AS and Varnish Software AS. This manual page was
       initially written by Dag-Erling Smrgrav < <des@des.no> >, and later up-
       dated by	Martin Blix Grydeland and Pl Hermunn Johansen.

COPYRIGHT
       This document is	licensed under the same	licence	as Varnish itself. See
       LICENCE for details.

        Copyright (c) 2006 Verdens Gang AS

        Copyright (c) 2006-2016 Varnish Software AS

								VARNISHNCSA(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=varnishncsa&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help