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