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 <format-
     file>] [-g <request|vxid>] [-h] [-j] [-k <num>] [-L <limit>] [-n <workdir>]
     [-P <file>] [-Q <file>] [-q  <query>]  [-r  <filename>]  [-R  <limit[/dura-
     tion]>] [-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  gath-
     ered  from  the  shared memory log. The Request transaction is then scanned
     for the relevant parts in order to output one log line. To filter	the  log
     lines  produced,  use  the query language to select the applicable transac-
     tions. Non-request transactions are ignored.

     The following options are available:

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

     -b     Log  backend requests. If -c is not specified, then only backend re-
	    quests 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	escaping
	    characters,  use  JSON-style  \uXXXX  escape  sequences  instead  of
	    C-style \xXX sequences. Empty strings will be replaced with  ""  in-
	    stead  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 old-
	    est transaction is force completed. A warning record is  synthesized
	    when  this	happens. This setting keeps an upper bound on the memory
	    usage of running queries. Defaults to 1000 transactions.

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

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

     -Q <file>
	    Specifies the file containing the VSL query to use. When multiple -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'  operator  was
	    used to combine them.

     -r <filename>
	    Read  log in binary file format from this file. The file can be cre-
	    ated 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 exceeding
	    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 immedi-
	    ately if unsuccessful. If set to  "off",  the  connection  will  not
	    fail,  allowing  the  utility to start and wait indefinitely 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  wrapper
	    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  var-
     nish.  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 be-
     tween 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 var-
     nishncsa 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)  consid-
     ers varnish to be the client.

     It  is  possible  to keep two varnishncsa instances running, one in backend
     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 headers.
	    In backend mode, the number of bytes received from the backend,  ex-
	    cluding  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  microseconds.
	    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 in back-
	    end mode and the first one in client mode.

     %l     Remote logname. Always '-'.

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

     %{X}o  The contents of response header X. If the  header  appears	multiple
	    times in a single transaction, the last occurrence is used in client
	    mode and the first one in backend mode.

     %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 format
	    specified by X.  In backend mode, time when the  request  was  sent.
	    The  time  specification  format is the same as for strftime(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 instead.

     %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 spec-
	    ified  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 speci-
		   fied.  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 backend 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, depending
		   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', 'hitmiss', 'hitpass',
		   'miss', 'pass', 'pipe' or 'synth' strings indicating how  the
		   request was handled. In backend mode, this field is blank.

	    Varnish:side
		   Backend  or	client	side. One of two values, 'b' or 'c', de-
		   pending 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 components
		   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  prefix
		   does  not  match  or the field is out of bounds. If a tag ap-
		   pears multiple times in a single transaction, the  first  oc-
		   currence 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 the Apache HTTP Server %r behavior, equivalent to %m %U%q %H.

     Note  that  request  fields  are collected on a first match basis in client
     mode and last match basis in backend mode. Similarly, response  fields  are
     collected	on  a  first match basis in backend mode and last match basis in
     client mode.

     In other words, request headers are logged as they were received  from  the
     client  and  as  they  were sent to the backend, while response headers are
     logged as they were sent to the client and as they were received  from  the
     backend.

     Furthermore,  these rules also apply to items that appear multiple times in
     a transaction. For example, if a header appears multiple times in a  client
     request,  the  first  occurrence is logged in client mode, while in backend
     mode the last occurrence is logged.

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  cooperation
     with  Verdens  Gang  AS  and Varnish Software AS. This manual page was ini-
     tially written by Dag-Erling SmA,rgrav < <des@des.no> >, and later  updated
     by Martin Blix Grydeland and PAYl Hermunn Johansen.

COPYRIGHT
     This document is licensed under the same licence as Varnish itself. See LI-
     CENCE 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+15.1.quarterly>

home | help