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

  
 
  

home | help
VNSTATD(8)			  User Manuals			      VNSTATD(8)

NAME
     vnstatd - daemon based database updating for vnStat

SYNOPSIS
     vnstatd [-Ddnpstv?]  [--alwaysadd [mode]] [--config file] [--daemon] [--de-
     bug]  [-g group] [--group group] [--help] [--initdb] [--noadd] [--nodaemon]
     [--noremove] [--pidfile file] [--startempty]  [--sync]  [--timestamp]  [--u
     user] [--user user] [--version]

DESCRIPTION
     The  purpose of vnstatd is to provide a flexible and robust way for gather-
     ing data to the database that vnstat(1) uses. The availability of each  in-
     terface  is  automatically  tracked  which  removes the need for additional
     scripts to be implemented and called when an interface comes online or goes
     offline.

     vnstatd is the command for starting the daemon. The daemon can either  fork
     itself to run as a background process or stay attached to the terminal.  It
     supports  logging	directly to terminal, to a user selectable file or using
     syslog.

     Once started, the daemon will read vnstat.conf(5)	if  available  and  then
     check  if	there  is  a database present in the database directory that has
     been specified in the configuration file. By default,  if	no  database  is
     found,  a	database  will	be  created  during startup with entries for all
     available interfaces excluding pseudo interfaces lo, lo0 and sit0. This au-
     tomatic database entry creation behaviour can be disabled using the --noadd
     option. Alternatively, the --alwaysadd option can be used to  instruct  the
     daemon  to create new database entries whenever interfaces not currently in
     the databases become visible. By default, unless the --startempty option is
     used, the daemon will not stay running if no interfaces are discovered dur-
     ing startup and the database contains no interfaces.

     The daemon will proceed to track the availability of monitored  interfaces,
     process  the interface traffic statistics and write new values to the data-
     base at a configured interval. As a result, the  daemon  ends  up	spending
     most  of  the  time  sleeping  between updates. New interfaces added to the
     database will be automatically picked up for monitoring without the  daemon
     needing to be notified.

     When  the	UseUTC configuration option isn't enabled, data is stored in the
     database using local time based on the daemon's execution environment  when
     the  configuration option isn't enabled. Any changes in the system clock or
     the system timezone configuration will result in data  being  inserted  ac-
     cording  to the new local time without any recalculation being done for al-
     ready stored data. The daemon and the database in essence aren't  aware  of
     the used timezone or possible daylight saving time and cannot be configured
     to  offset  the  timestamps  to  any direction. If a system clock or system
     timezone change or daylight saving time observation ending  results  in  an
     already  seen  time  period to repeat then the existing database values get
     incremented with the new data.

OPTIONS
     --alwaysadd [mode]
	    Enable automatic creation of new database entries for interfaces not
	    currently in the database even if the database file  already  exists
	    when  the daemon is started. New database entries will also get cre-
	    ated for new interfaces seen while the daemon is running. Pseudo in-
	    terfaces lo, lo0 and sit0 are always excluded  from  getting  added.
	    Using the option without mode defined or with mode set to 1 will en-
	    able  the  feature. Setting mode to 0 will disable the feature. This
	    command line option overrides the AlwaysAddNewInterfaces  configura-
	    tion option when used.

     --config file
	    Use file as configuration file instead of using automatic configura-
	    tion file search functionality.

     -d, --daemon
	    Fork process to background and run as a daemon.

     -D, --debug
	    Provide  additional output for debug purposes. The process will stay
	    attached to the terminal for output.

     -g, --group group
	    Set daemon process group to group during startup.  group can be  ei-
	    ther  the name of the group or a numerical group id. This option can
	    only be used when the process is started as root.

     --initdb
	    Create a new database, import data from found  legacy  databases  if
	    --noadd option isn't used and exit without creating database entries
	    for  available  interfaces	if  no	legacy data was imported. If the
	    database already exists then access to it is only verified. The dae-
	    mon will not stay running when this option is used. This option can-
	    not be used in combination with  -d,  --daemon,  -n,  --nodaemon  or
	    --startempty.

     --noadd
	    When  used	in combination with -d, --daemon or -n, --nodaemon, dis-
	    able the automatic creation of new database  entries  for  all  cur-
	    rently  available  interfaces when the daemon is started with no ex-
	    isting database or with a database containing zero	interfaces.  The
	    daemon  will  still  create an empty database if one doesn't already
	    exist. Pseudo interfaces lo, lo0 and sit0 are always  excluded  from
	    getting added regardless of this option.

	    When  used	in combination with --initdb, create only an empty data-
	    base if one doesn't already exist without importing data from possi-
	    ble legacy databases and exit.

     -n, --nodaemon
	    Stay in foreground attached to the current terminal  and  start  the
	    update process.

     --noremove
	    Disable  automatic	removal  of interfaces from database that aren't
	    currently visible and haven't seen any traffic.

     -p, --pidfile file
	    Write the process id to file and use it for locking so that  another
	    instance  of the daemon cannot be started if the same file is speci-
	    fied. This option has no effect if	used  in  combination  with  -n,
	    --nodaemon.

     --startempty
	    Start  even  when  no interfaces were discovered and the database is
	    empty. Results in the daemon staying running and waiting for  inter-
	    faces to be added to the database or found if --alwaysadd option has
	    also  been	used.  This  option  cannot  be used in combination with
	    --initdb.

     -s, --sync
	    Synchronize internal counters in the database with	interface  coun-
	    ters  for  all available interfaces before starting traffic monitor-
	    ing.  Use this option if the traffic between the  previous	shutdown
	    and  the current startup of the daemon needs to be ignored. This op-
	    tion isn't required in normal use because the daemon will  automati-
	    cally  synchronize	the  internal counters after a system reboot, if
	    enough time has passed since the daemon was previously running or if
	    the internal counters are clearly out of sync.

     -t, --timestamp
	    Add a timestamp to the beginning of every print from the daemon when
	    the process is running in the foreground attached to a terminal  af-
	    ter having been started with the -n, --nodaemon option.

     -u, --user user
	    Set  daemon process user to user during startup.  user can be either
	    the login of the user or a numerical user id. This option  can  only
	    be used when the process is started as root.

     -v, --version
	    Show current version of the daemon executable.

     -?, --help
	    Show a command option summary.

CONFIGURATION
     The  behaviour  of  the daemon is configured mainly using the configuration
     keywords UpdateInterval, PollInterval and SaveInterval in the configuration
     file.

     UpdateInterval defines in seconds how often the interface data  is  fetched
     and  updated.   This  is  similar	to the run interval for alternative cron
     based updating.  However, the difference is that the data doesn't	directly
     get written to disk during updates.

     PollInterval  defines in seconds how often the list of available interfaces
     is checked for possible changes. The minimum value is  2  seconds	and  the
     maximum 60 seconds.  PollInterval also defines the resolution for other in-
     tervals.

     SaveInterval  defines in minutes how often cached interface data is written
     to disk.  A write can only occur during the  updating  of	interface  data.
     Therefore,  the value should be a multiple of UpdateInterval with a maximum
     value of 60 minutes.

     The default values of UpdateInterval 30, SaveInterval 5 and PollInterval  5
     are  usually  suitable  for most systems and provide a similar behaviour as
     cron based updating does but with a better resolution for interface changes
     and fast interfaces.

     For embedded and/or low power systems more tuned configurations are  possi-
     ble.   In	such  cases if the interfaces are mostly static the PollInterval
     can be increased to around 10-30 seconds and UpdateInterval set to 60  sec-
     onds.  Higher  values up to 300 seconds are possible if the interface speed
     is 10 Mbit or less.  SaveInterval can be increased for example to 15, 30 or
     even 60 minutes depending on how often the data needs to be viewed.

SIGNALS
     The daemon is listening to signals SIGHUP, SIGINT and SIGTERM.  Sending the
     SIGHUP signal to the daemon will cause cached data to be written to disk, a
     rescan of the database directory and a reload of settings from the configu-
     ration file. However, the pid file location will not  be  changed	even  if
     it's configuration setting has been modified.

     SIGTERM  and  SIGINT signals will cause the daemon to write all cached data
     to disk and then exit.

FILES
     /var/lib/vnstat/
	    Default database directory.

     /etc/vnstat.conf
	    Config file that will be used unless $HOME/.vnstatrc exists. See the
	    configuration chapter and vnstat.conf(5) for more information.

     /var/log/vnstat/vnstat.log
	    Log file that will be used if logging to file is enable and no other
	    file is specified in the config file.

     /var/run/vnstat/vnstat.pid
	    File used for storing the process id when running  as  a  background
	    process  and if no other file is specified in the configuration file
	    or using the command line parameter.

RESTRICTIONS
     Updates need to be executed at least as often as it is possible for the in-
     terface to generate enough traffic to overflow the kernel interface traffic
     counter. Otherwise, it is possible that some traffic won't  be  seen.  With
     32-bit interface traffic counters, the maximum time between two updates de-
     pends  on how fast the interface can transfer 4 GiB.  Note that there is no
     guarantee that a 64-bit kernel has 64-bit interface  traffic  counters  for
     all interfaces. Calculated theoretical times are:
	    10 Mbit:	    54 minutes
	    100 Mbit:	     5 minutes
	    1000 Mbit:	    30 seconds
     Virtual  and  aliased  interfaces	cannot	be  monitored because the kernel
     doesn't provide traffic information for that type of interfaces.  Such  in-
     terfaces  are  usually  named eth0:0, eth0:1, eth0:2 etc. where eth0 is the
     actual interface being aliased.

AUTHOR
     Teemu Toivola <tst at iki dot fi>

SEE ALSO
     vnstat(1), vnstati(1), vnstat.conf(5), signal(7)

version 2.13			  FEBRUARY 2025 		      VNSTATD(8)

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

home | help