VPP stats segment FUSE filesystem
The statfs binary allows to create a FUSE filesystem to expose and to browse the stats segment. It relies on the Go-FUSE library and requires Go-VPP stats bindings to work.
The binary mounts a filesystem on the local machine with the data from the stats segments. The counters can be opened and read as files (e.g. in a Unix shell). Note that the value of a counter is determined when the corresponding file is opened (as for /proc/interrupts).
Directories update their contents on epoch changes so that new counters get added to the filesystem.
The script install.sh
is responsible for building and installing
the filesystem.
Usage
The local Makefile contains targets for all the possible interactions with the stats_f binary.
Help
A basic help menu
make help
Install
Building the binary
make install
Start
Starts the filesystem. Requires a running VPP instance using the default socket /run/vpp/stats.sock.
May require a privileged user (sudo)
make start
Stop
Stops and unmounts the filesystem if it is not busy.
May require a privileged user (sudo)
make stop
Force unmount
Forces the unmount of the filesystem even if it is busy.
May require a privileged user (sudo)
make force-unmount
Cleanup
Cleaning stats_fs binary.
May require a privileged user (sudo).
make clean
Browsing the filesystem
The default mountpoint is /run/vpp/stats_fs_dir. You can browse the filesystem as a regular user. Example:
cd /run/vpp/stats_fs_dir
cd sys/node
ls -al
cat names
Building and mounting the filesystem manually
For more modularity, you can build and mount the filesystem manually.
Building
Inside the local directory, you can build the go binary:
go build
Mounting
Then, you can mount the filesystem with the local binary.
May require a privileged user (sudo).
The basic usage is:
./stats_fs <MOUNT_POINT>
Options: - debug <true|false> (default is false) - socket <statSocket> (default is /run/vpp/stats.sock) : VPP socket for stats
Unmounting the file system
You can unmount the filesystem with the fusermount command.
May require a privileged user (sudo)
fusermount -u /path/to/mountpoint
To force the unmount even if the resource is busy, add the -z option:
fusermount -uz /path/to/mountpoint