vnstatd (1)
NAME
vnstatd - daemon based database updating for vnStat
SYNOPSIS
vnstatd [ -Ddnpsv? ] [ --alwaysadd ] [ --config file ] [ --daemon ] [ --debug ] [ -g group ] [ --group group ] [ --help ] [ --noadd ] [ --nodaemon ] [ --pidfile file ] [ --sync ] [ --u user ] [ --user user ] [ --version ]
DESCRIPTION
The purpose of vnstatd is to provide a more flexible and robust way for updating vnstat(1) databases than what using cron for updating can provide. The daemon makes possible updating databases more often but at the same time causes less disk access since data can be cached and written only later to disk at a user configurable interval. The availability of each interface 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 to a user selectable file or using syslog.
Once started, the daemon will read vnstat.conf(5) if available and then check if there are any databases present in the database directory that has been specified in the configuration file. By default, if no databases are found, new databases will be created during startup for all available interfaces excluding pseudo interfaces lo, lo0 and sit0. This automatic database addition behaviour can be disabled using the --noadd option. Alternatively, it is possible to allow the daemon to create new databases whenever previously unseen interfaces become visible using the --alwaysadd option.
The daemon will
proceed to track the availability of monitored interfaces, process the
interface traffic statistics and write new values to databases
at a configured interval. As a result, the daemon ends up spending most
of the time sleeping between updates.
OPTIONS
- --alwaysadd
-
Enable automatic creation of new databases for previously unseen interfaces
even if the database directory already contains databases when the daemon
is started. New databases will also get created for new interfaces seen while
the daemon is running. Pseudo interfaces lo, lo0 and sit0 are excluded from
getting added.
- --config file
-
Use
file
as configuration file instead of using normal configuration 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 option
can only be used when the process is started as root.
- --noadd
-
Disable automatic creation of new databases for all available interfaces
if the daemon is started with zero database found. Pseudo interfaces
lo, lo0 and sit0 are excluded from getting added.
- -n, --nodaemon
-
Stay in foreground attached to the current terminal and start the update
process.
- -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 specified.
- -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 ignored. This option
isn't required in normal use because the daemon will automatically synchronize
the internal counters after a system reboot, if enought time has passed
since the daemon was previously running or if the internal counters are
clearly out of sync.
- -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 intervals.
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 possible.
In such cases if the interfaces are mostly static the
PollInterval
can be increased to around 10-30 seconds and
UpdateInterval
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. Files are named according to the monitored interfaces.
- /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.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.pid
-
File used for storing the process id if no other file is specified in the
configuration file or using the command line parameter.
RESTRICTIONS
Updates needs 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. This isn't an issue for 64-bit kernels but at least one update every hour is always required in order to provide proper input. With 32-bit kernels, the maximum time between two updates depends on how fast the interface can transfer 4 GiB. Calculated theoretical times are:
-
10 Mbit: 54 minutes 100 Mbit: 5 minutes 1000 Mbit: 30 seconds
However, for 1000 Mbit interfaces updating once every minute is usually a usable solution if faster updates can't be used.
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)