  | 
 
 
 
 |  
 |  | 
 
  
    | VARNISHNCSA(1) | 
    FreeBSD General Commands Manual | 
    VARNISHNCSA(1) | 
   
 
varnishncsa - Display Varnish logs in Apache / NCSA combined log
    format 
varnishncsa [-a] [-b] [-c] [-C] [-d] [-D] [-E] [-F <format>]
    [-f <formatfile>] [-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>] 
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
    filter the log lines produced, use the query language to select the
    applicable transactions. 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 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 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>
 
  - 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 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 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 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 immediately 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.
 
 
 
 
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)
    considers 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. 
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, 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 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 backend 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 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 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', 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 prefix-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 appears multiple
        times in a single transaction, the first occurrence is used. 
   
 
 
 
 
  - 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. 
   
 
 
 
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. 
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"}'
 
 
 
varnishd(1) varnishlog(1) varnishstat(1)
    vsl-query(7) vsl(7) 
The varnishncsa utility was developed by Poul-Henning Kamp in
    cooperation with Verdens Gang AS and Varnish Software AS. This manual page
    was initially written by Dag-Erling Smørgrav < <des@des.no>
    >, and later updated by Martin Blix Grydeland and Pål Hermunn
    Johansen. 
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
 
 
 
 
 
 
  Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc.
  |