NAME¶
vnstatd - daemon based database updating for vnStat
SYNOPSIS¶
vnstatd [
-Ddnpsv? ] [
--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 available in the database directory that has
been specified in the configuration file. New databases will be created for
all available interfaces excluding pseudo interfaces lo, lo0 and sit0 if no
databases are found during startup. This behaviour can be disabled if needed.
The daemon will then 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¶
- --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
useable 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)