bmon is a monitoring and debugging tool to capture networking related statistics and prepare them visually in a human friendly way. It features various output methods including an interactive curses user interface and a programmable text output for scripting.
If your server hasn’t git, follow guide: How to install Git on Centos Linux
I install bmon on CentOS 7 64bits.
Step 1:
git clone https://github.com/tgraf/bmon.git
[root@tutorialspots ~]# git clone https://github.com/tgraf/bmon.git Cloning into 'bmon'... remote: Counting objects: 683, done. remote: Total 683 (delta 0), reused 1 (delta 0), pack-reused 682 Receiving objects: 100% (683/683), 855.84 KiB | 62.00 KiB/s, done. Resolving deltas: 100% (379/379), done.
Step 2:
cd bmon
Step 3:
yum install make libconfuse-devel libnl3-devel libnl-route3-devel ncurses-devel
[root@tutorialspots bmon]# yum install make libconfuse-devel libnl3-devel libnl-route3-d evel ncurses-devel Loaded plugins: fastestmirror Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast base | 3.6 kB 00:00 epel/x86_64/metalink | 10 kB 00:03 epel | 4.3 kB 00:00 extras | 3.4 kB 00:00 mariadb | 2.9 kB 00:00 nodesource | 2.5 kB 00:00 remi-safe | 2.9 kB 00:00 updates | 3.4 kB 00:00 (1/10): base/7/x86_64/group_gz | 156 kB 00:04 (2/10): epel/x86_64/group_gz | 170 kB 00:05 (3/10): epel/x86_64/updateinfo | 833 kB 00:21 (4/10): nodesource/x86_64/primary_db | 44 kB 00:00 (5/10): mariadb/primary_db | 21 kB 00:01 (6/10): remi-safe/primary_db | 1.1 MB 00:02 (7/10): extras/7/x86_64/primary_db | 112 kB 00:03 (8/10): updates/7/x86_64/primary_db | 2.7 MB 00:47 (9/10): epel/x86_64/primary_db | 4.8 MB 01:21 (10/10): base/7/x86_64/primary_db | 5.7 MB 03:03 Determining fastest mirrors * base: mirrors.greenmountainaccess.net * epel: mirror.math.princeton.edu * extras: mirrors.greenmountainaccess.net * remi-safe: remi.mirror.wearetriple.com * updates: mirrors.greenmountainaccess.net Package 1:make-3.82-23.el7.x86_64 already installed and latest version No package libnl-route3-devel available. Resolving Dependencies --> Running transaction check ---> Package libconfuse-devel.x86_64 0:2.7-7.el7 will be installed --> Processing Dependency: libconfuse = 2.7-7.el7 for package: libconfuse-devel- 2.7-7.el7.x86_64 --> Processing Dependency: libconfuse.so.0()(64bit) for package: libconfuse-deve l-2.7-7.el7.x86_64 ---> Package libnl3-devel.x86_64 0:3.2.28-4.el7 will be installed --> Processing Dependency: libnl3-cli = 3.2.28-4.el7 for package: libnl3-devel-3 .2.28-4.el7.x86_64 --> Processing Dependency: libnl3 = 3.2.28-4.el7 for package: libnl3-devel-3.2.2 8-4.el7.x86_64 ---> Package ncurses-devel.x86_64 0:5.9-13.20130511.el7 will be updated ---> Package ncurses-devel.x86_64 0:5.9-14.20130511.el7_4 will be an update --> Processing Dependency: ncurses-libs(x86-64) = 5.9-14.20130511.el7_4 for pack age: ncurses-devel-5.9-14.20130511.el7_4.x86_64 --> Running transaction check ---> Package libconfuse.x86_64 0:2.7-7.el7 will be installed ---> Package libnl3.x86_64 0:3.2.28-3.el7_3 will be updated ---> Package libnl3.x86_64 0:3.2.28-4.el7 will be an update ---> Package libnl3-cli.x86_64 0:3.2.28-3.el7_3 will be updated ---> Package libnl3-cli.x86_64 0:3.2.28-4.el7 will be an update ---> Package ncurses-libs.x86_64 0:5.9-13.20130511.el7 will be updated --> Processing Dependency: ncurses-libs(x86-64) = 5.9-13.20130511.el7 for packag e: ncurses-5.9-13.20130511.el7.x86_64 ---> Package ncurses-libs.x86_64 0:5.9-14.20130511.el7_4 will be an update --> Processing Dependency: ncurses-base = 5.9-14.20130511.el7_4 for package: ncu rses-libs-5.9-14.20130511.el7_4.x86_64 --> Running transaction check ---> Package ncurses.x86_64 0:5.9-13.20130511.el7 will be updated ---> Package ncurses.x86_64 0:5.9-14.20130511.el7_4 will be an update ---> Package ncurses-base.noarch 0:5.9-13.20130511.el7 will be updated ---> Package ncurses-base.noarch 0:5.9-14.20130511.el7_4 will be an update --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: libconfuse-devel x86_64 2.7-7.el7 epel 17 k libnl3-devel x86_64 3.2.28-4.el7 base 71 k Updating: ncurses-devel x86_64 5.9-14.20130511.el7_4 updates 712 k Installing for dependencies: libconfuse x86_64 2.7-7.el7 epel 80 k Updating for dependencies: libnl3 x86_64 3.2.28-4.el7 base 278 k libnl3-cli x86_64 3.2.28-4.el7 base 160 k ncurses x86_64 5.9-14.20130511.el7_4 updates 304 k ncurses-base noarch 5.9-14.20130511.el7_4 updates 68 k ncurses-libs x86_64 5.9-14.20130511.el7_4 updates 316 k Transaction Summary ================================================================================ Install 2 Packages (+1 Dependent package) Upgrade 1 Package (+5 Dependent packages) Total download size: 2.0 M Is this ok [y/d/N]: y Downloading packages: No Presto metadata available for base updates/7/x86_64/prestodelta | 265 kB 00:15 Delta RPMs reduced 1.4 M of updates to 346 k (75% saved) (1/9): libconfuse-2.7-7.el7.x86_64.rpm | 80 kB 00:01 (2/9): libconfuse-devel-2.7-7.el7.x86_64.rpm | 17 kB 00:00 (3/9): ncurses-base-5.9-13.20130511.el7_5.9-14.20130511.el | 43 kB 00:02 /usr/share/doc/ncurses-base-5.9/README: No such file or directory cannot reconstruct rpm from disk files (4/9): ncurses-devel-5.9-13.20130511.el7_5.9-14.20130511.e | 137 kB 00:03 (5/9): ncurses-libs-5.9-13.20130511.el7_5.9-14.20130511.el | 77 kB 00:05 (6/9): ncurses-5.9-13.20130511.el7_5.9-14.20130511.el7_4.x | 89 kB 00:06 /usr/share/doc/ncurses-5.9/ANNOUNCE: No such file or directory cannot reconstruct rpm from disk files (7/9): libnl3-devel-3.2.28-4.el7.x86_64.rpm | 71 kB 00:03 (8/9): libnl3-cli-3.2.28-4.el7.x86_64.rpm | 160 kB 00:07 (9/9): libnl3-3.2.28-4.el7.x86_64.rpm | 278 kB 00:16 Some delta RPMs failed to download or rebuild. Retrying.. (1/2): ncurses-base-5.9-14.20130511.el7_4.noarch.rpm | 68 kB 00:04 (2/2): ncurses-5.9-14.20130511.el7_4.x86_64.rpm | 304 kB 00:26 -------------------------------------------------------------------------------- Total 29 kB/s | 1.3 MB 00:45 Running transaction check Running transaction test Transaction test succeeded Running transaction Updating : libnl3-3.2.28-4.el7.x86_64 1/15 Updating : libnl3-cli-3.2.28-4.el7.x86_64 2/15 Updating : ncurses-base-5.9-14.20130511.el7_4.noarch 3/15 Updating : ncurses-libs-5.9-14.20130511.el7_4.x86_64 4/15 Installing : libconfuse-2.7-7.el7.x86_64 5/15 Installing : libconfuse-devel-2.7-7.el7.x86_64 6/15 Updating : ncurses-5.9-14.20130511.el7_4.x86_64 7/15 Updating : ncurses-devel-5.9-14.20130511.el7_4.x86_64 8/15 Installing : libnl3-devel-3.2.28-4.el7.x86_64 9/15 Cleanup : ncurses-devel-5.9-13.20130511.el7.x86_64 10/15 Cleanup : libnl3-cli-3.2.28-3.el7_3.x86_64 11/15 Cleanup : ncurses-5.9-13.20130511.el7.x86_64 12/15 Cleanup : ncurses-libs-5.9-13.20130511.el7.x86_64 13/15 Cleanup : ncurses-base-5.9-13.20130511.el7.noarch 14/15 Cleanup : libnl3-3.2.28-3.el7_3.x86_64 15/15 Verifying : ncurses-5.9-14.20130511.el7_4.x86_64 1/15 Verifying : libnl3-devel-3.2.28-4.el7.x86_64 2/15 Verifying : libconfuse-devel-2.7-7.el7.x86_64 3/15 Verifying : ncurses-devel-5.9-14.20130511.el7_4.x86_64 4/15 Verifying : ncurses-libs-5.9-14.20130511.el7_4.x86_64 5/15 Verifying : libnl3-3.2.28-4.el7.x86_64 6/15 Verifying : libnl3-cli-3.2.28-4.el7.x86_64 7/15 Verifying : libconfuse-2.7-7.el7.x86_64 8/15 Verifying : ncurses-base-5.9-14.20130511.el7_4.noarch 9/15 Verifying : ncurses-devel-5.9-13.20130511.el7.x86_64 10/15 Verifying : ncurses-5.9-13.20130511.el7.x86_64 11/15 Verifying : libnl3-cli-3.2.28-3.el7_3.x86_64 12/15 Verifying : ncurses-libs-5.9-13.20130511.el7.x86_64 13/15 Verifying : libnl3-3.2.28-3.el7_3.x86_64 14/15 Verifying : ncurses-base-5.9-13.20130511.el7.noarch 15/15 Installed: libconfuse-devel.x86_64 0:2.7-7.el7 libnl3-devel.x86_64 0:3.2.28-4.el7 Dependency Installed: libconfuse.x86_64 0:2.7-7.el7 Updated: ncurses-devel.x86_64 0:5.9-14.20130511.el7_4 Dependency Updated: libnl3.x86_64 0:3.2.28-4.el7 libnl3-cli.x86_64 0:3.2.28-4.el7 ncurses.x86_64 0:5.9-14.20130511.el7_4 ncurses-base.noarch 0:5.9-14.20130511.el7_4 ncurses-libs.x86_64 0:5.9-14.20130511.el7_4 Complete!
Step 4:
./autogen.sh
[root@tutorialspots bmon]# ./autogen.sh configure.ac:29: installing 'build-aux/config.guess' configure.ac:29: installing 'build-aux/config.sub' configure.ac:32: installing 'build-aux/install-sh' configure.ac:32: installing 'build-aux/missing' src/Makefile.am: installing 'build-aux/depcomp'
Step 5:
./configure
[root@vultr bmon]# ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking for style of include used by make... GNU checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for library containing strerror... none required checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking for gcc option to accept ISO C99... -std=gnu99 checking for gcc -std=gnu99 option to accept ISO Standard C... (cached) -std=gnu 99 checking how to run the C preprocessor... gcc -std=gnu99 -E checking whether make sets $(MAKE)... (cached) yes checking for an ANSI C-conforming const... yes checking for inline... inline checking whether time.h and sys/time.h may both be included... yes checking for dirent.h that defines DIR... yes checking for library containing opendir... none required checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for size_t... yes checking return type of signal handlers... void checking for pid_t... yes checking vfork.h usability... no checking vfork.h presence... no checking for vfork.h... no checking for fork... yes checking for vfork... yes checking for working fork... yes checking for working vfork... (cached) yes checking getopt.h usability... yes checking getopt.h presence... yes checking for getopt.h... yes checking ncurses/ncurses.h usability... yes checking ncurses/ncurses.h presence... yes checking for ncurses/ncurses.h... yes checking ncurses.h usability... yes checking ncurses.h presence... yes checking for ncurses.h... yes checking curses.h usability... yes checking curses.h presence... yes checking for curses.h... yes checking dirent.h usability... yes checking dirent.h presence... yes checking for dirent.h... yes checking sys/utsname.h usability... yes checking sys/utsname.h presence... yes checking for sys/utsname.h... yes checking sys/sockio.h usability... no checking sys/sockio.h presence... no checking for sys/sockio.h... no checking netinet6/in6.h usability... no checking netinet6/in6.h presence... no checking for netinet6/in6.h... no checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking netdb.h usability... yes checking netdb.h presence... yes checking for netdb.h... yes checking netinet/in.h usability... yes checking netinet/in.h presence... yes checking for netinet/in.h... yes checking sysctl/ioctl.h usability... no checking sysctl/ioctl.h presence... no checking for sysctl/ioctl.h... no checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking for suseconds_t... yes checking for atexit... yes checking for clock_gettime... yes checking for memset... yes checking for pow... no checking for socket... yes checking for strcasecmp... yes checking for strchr... yes checking for strdup... yes checking for strerror... yes checking for strncasecmp... yes checking for strstr... yes checking for strtol... yes checking for uname... yes checking for getdate... yes checking for pkg-config... /usr/bin/pkg-config checking for NcursesW wide-character library... yes checking for working ncursesw/curses.h... yes checking for working ncursesw.h... no checking for working ncurses.h... yes checking pkg-config is at least version 0.9.0... yes checking for CONFUSE... yes checking for LIBNL... yes checking for LIBNL_ROUTE... yes checking for pow in -lm... yes checking for clock_gettime in -lrt... yes checking for initscr in -lncurses... yes checking for redrawwin in -lncurses... yes checking for use_default_colors in -lncurses... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating man/Makefile config.status: creating examples/Makefile config.status: creating include/bmon/defs.h config.status: executing depfiles commands
Step 6:
make
[root@tutorialspots bmon]# make Making all in src make[1]: Entering directory `/root/bmon/src' CC bmon-utils.o CC bmon-unit.o CC bmon-conf.o CC bmon-input.o CC bmon-output.o CC bmon-group.o CC bmon-element.o CC bmon-attr.o CC bmon-element_cfg.o CC bmon-history.o CC bmon-graph.o CC bmon-bmon.o CC bmon-module.o CC bmon-in_netlink.o CC bmon-in_null.o CC bmon-in_dummy.o CC bmon-in_proc.o CC bmon-in_sysctl.o CC bmon-out_null.o CC bmon-out_format.o CC bmon-out_ascii.o CC bmon-out_curses.o CCLD bmon make[1]: Leaving directory `/root/bmon/src' Making all in man make[1]: Entering directory `/root/bmon/man' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/root/bmon/man' Making all in include make[1]: Entering directory `/root/bmon/include' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/root/bmon/include' Making all in examples make[1]: Entering directory `/root/bmon/examples' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/root/bmon/examples' make[1]: Entering directory `/root/bmon' make[1]: Nothing to be done for `all-am'. make[1]: Leaving directory `/root/bmon'
Step 7
make install
[root@vultrtutorialspots bmon]# make install Making install in src make[1]: Entering directory `/root/bmon/src' make[2]: Entering directory `/root/bmon/src' /usr/bin/mkdir -p '/usr/local/bin' /usr/bin/install -c bmon '/usr/local/bin' make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/root/bmon/src' make[1]: Leaving directory `/root/bmon/src' Making install in man make[1]: Entering directory `/root/bmon/man' make[2]: Entering directory `/root/bmon/man' make[2]: Nothing to be done for `install-exec-am'. /usr/bin/mkdir -p '/usr/local/share/man/man8' /usr/bin/install -c -m 644 bmon.8 '/usr/local/share/man/man8' make[2]: Leaving directory `/root/bmon/man' make[1]: Leaving directory `/root/bmon/man' Making install in include make[1]: Entering directory `/root/bmon/include' make[2]: Entering directory `/root/bmon/include' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/root/bmon/include' make[1]: Leaving directory `/root/bmon/include' Making install in examples make[1]: Entering directory `/root/bmon/examples' make[2]: Entering directory `/root/bmon/examples' make[2]: Nothing to be done for `install-exec-am'. /usr/bin/mkdir -p '/usr/local/share/doc/bmon/examples' /usr/bin/install -c -m 644 bmon.conf '/usr/local/share/doc/bmon/examples' make[2]: Leaving directory `/root/bmon/examples' make[1]: Leaving directory `/root/bmon/examples' make[1]: Entering directory `/root/bmon' make[2]: Entering directory `/root/bmon' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/root/bmon' make[1]: Leaving directory `/root/bmon'
Now we can use bmon:
bmon