Skip to content

Fast and efficient system metrics aggregator for subsecond time series analytics

License

Notifications You must be signed in to change notification settings

Maxime999/MetroCollect

Repository files navigation

MetroCollect

Build Status

This project aims to collect and process various system metrics (such as CPU, memory and network usage) very efficiently, so that they can be retrieved multiple times per second (for instance, every 50ms). It is designed to work with Snap Telemetry.

This repo is organized as the following:

  • Two C++ libraries, CircularArray and MetroCollect
  • Three standalone interfaces using the aforementioned libraries: MetroCollectValues (which collects and prints values), MetroCollectStats (which collects, compute stats and print them) and MetroCollectFile (which collects and write values into CSV format)
  • The Snap plugin interface, MetroCollectSnap, which can collect values, compute stats and send either of them to the Snap daemon. It works with a fork of the C++ Snap plugin library

Refer to USAGE.md for more information on how to use these programs.

MetroCollect's documentation is available on GitHub pages.

Readme Contents

Getting started

Operating systems

All OSs currently supported by plugin:

  • Linux/amd64

System Requirements

A C++ 17 compiler such as GCC 7 is required.

The libraries and standalone interfaces do not have additional dependencies. The Snap plugin interface requires the C++ Snap plugin library and its dependencies, which should be installed on the system first. MetroCollect uses static linking of those libraries for the programs to be portable.

Refer to the DEPENDENCIES.md file for more information.

Compiling

If the Snap and its dependencies are built in the /usr/local/lib, execute ldconfig /usr/local/lib/ to allow the ld linker to look for installed libraries there.

Then you can compile with CMake:

cd MetroCollect
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
make install

Other build configured types are Debug, Release, and RelWithDebInfo (to profile with Linux Perf or GPerfTools).

Compiling dependencies

The buildall.sh script can be used to build MetroCollect Snap Plugin library and its dependencies automatically. It can either download the dependencies from GitHub or use local ones in the third_party folder.

Configuration and Usage

Refer to USAGE.md

Documentation

The documentation can be built with Doxygen from the build directory. It is installed in doc/html.

cd MetroCollect
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make doc
make install

Community Support

This repository is one of many plugins in Snap, a powerful telemetry framework. The full project is at http://github.com/intelsdi-x/snap. To reach out on other use cases, visit Slack.

License

Snap, along with this plugin, is an Open Source software released under the Apache 2.0 License.

Acknowledgements

About

Fast and efficient system metrics aggregator for subsecond time series analytics

Resources

License

Stars

Watchers

Forks

Packages

No packages published