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

FreeBSD Manual Pages

  
 
  

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

NAME
       vnstatd - daemon	based database updating	for vnStat

SYNOPSIS
       vnstatd	[-Ddnpstv?]   [--alwaysadd  [mode]] [--config file] [--daemon]
       [--debug] [-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
       gathering data to the database that vnstat(1) uses. The availability of
       each  interface is automatically	tracked	which removes the need for ad-
       ditional	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 ter-
       minal.  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
       automatic 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 in-
       terfaces	are discovered during startup and the database contains	no in-
       terfaces.

       The daemon will proceed to track	the availability of  monitored	inter-
       faces, process the interface traffic statistics and write new values to
       the  database 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 environ-
       ment when the configuration option isn't	enabled. Any  changes  in  the
       system  clock  or the system timezone configuration will	result in data
       being inserted according	to the new local time without  any  recalcula-
       tion being done for already 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	direc-
       tion.  If  a  system clock or system timezone change or daylight	saving
       time observation	ending results in an already seen time period  to  re-
       peat  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 created for new interfaces seen	while  the  daemon  is
	      running.	Pseudo interfaces lo, lo0 and sit0 are always excluded
	      from getting added.  Using the option without  mode  defined  or
	      with  mode  set  to 1 will enable	the feature. Setting mode to 0
	      will disable the feature.	This command line option overrides the
	      AlwaysAddNewInterfaces configuration option when used.

       --config	file
	      Use file as configuration	file instead of	using  automatic  con-
	      figuration 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
	      either  the  name	of the group or	a numerical group id. This op-
	      tion 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	 veri-
	      fied. The	daemon will not	stay running when this option is used.
	      This option cannot be used in combination	with -d, --daemon, -n,
	      --nodaemon or --startempty.

       --noadd
	      When  used  in  combination with -d, --daemon or -n, --nodaemon,
	      disable the automatic creation of	new database entries  for  all
	      currently	 available  interfaces when the	daemon is started with
	      no existing database or with a database containing  zero	inter-
	      faces.  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
	      database if one doesn't already  exist  without  importing  data
	      from possible 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 an-
	      other instance of	the daemon cannot be started if	the same  file
	      is  specified.  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
	      interfaces to be added to	the database or	found  if  --alwaysadd
	      option  has also been used. This option cannot be	used in	combi-
	      nation with --initdb.

       -s, --sync
	      Synchronize internal counters in	the  database  with  interface
	      counters	for  all  available interfaces before starting traffic
	      monitoring.  Use this option if the traffic between the previous
	      shutdown and the current startup of the daemon needs to  be  ig-
	      nored. This option isn't required	in normal use because the dae-
	      mon will automatically 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 ter-
	      minal after having been started with the -n, --nodaemon option.

       -u, --user user
	      Set daemon process user to user during startup.  user can	be ei-
	      ther 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 configura-
       tion keywords UpdateInterval, PollInterval and SaveInterval in the con-
       figuration file.

       UpdateInterval defines in seconds  how  often  the  interface  data  is
       fetched	and updated.  This is similar to the run interval for alterna-
       tive 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	inter-
       faces is	checked	for possible changes. The minimum value	is  2  seconds
       and  the	 maximum 60 seconds.  PollInterval also	defines	the resolution
       for other intervals.

       SaveInterval defines in minutes how  often  cached  interface  data  is
       written	to disk.  A write can only occur during	the updating of	inter-
       face 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 PollInter-
       val 5 are usually suitable for most systems and provide a  similar  be-
       haviour	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
       possible.   In  such  cases  if	the  interfaces	 are mostly static the
       PollInterval can	be increased to	around 10-30 seconds and  UpdateInter-
       val  set	to 60 seconds. 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  configuration  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 informa-
	      tion.

       /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 back-
	      ground process and if no other file is specified in the configu-
	      ration file or using the command line parameter.

RESTRICTIONS
       Updates need to be executed at least as often as	it is possible for the
       interface 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 depends 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
       interfaces 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+14.3.quarterly>

home | help