Skip to content

sebt3/watched.agent

Repository files navigation

watched.agent

Status

Overview

Watched aim to become a performance analysis and a monitoring tool. This is the plugin-based agent written in C++. It provide a REST api to the data that the backend consume. Plugins can be written in c++ or in lua

Dependencies

This project is based on the following projects :

  • jsoncpp
  • SimpleWebServer (itself based on Boost::asio)
  • Selene to provide lua integration
  • Lua Version 5.2 or 5.3
  • Boost version >= 1.54
  • C++11 compatible compiler (gcc >=4.9, clang >=3.3)
  • Linux

Other componants

build instruction

mkdir build
cd build
cmake ..
make
sudo make install

Complete instructions here.

Current features

  • Very lightweight
  • Forward the collected data to the backend over a REST service
  • C++ and lua plugins framework for services management and system metrics
  • Detect network services and monitor them
  • Service performance data
  • Service classification
  • Service log monitoring
  • Can be secured using SSL (tls1.2)
  • Offer a web micro frontend (might be used to monitor a single host)
  • Plugins for :
    • systemd services detection
    • Service CPU, memory and IO metrics
    • System CPU, memory, uptime, disk, IO, and network metrics

Planned

  • Plugins for :
    • systemd log monitoring
    • docker services detection, enhencement
    • libvirt
    • pacemaker
    • and more
  • More than one listen adress

TODO

  • Remove service missing for more than 15mn
  • LogSource support (services.h:76)
  • Add support for controlGroup (services.h:100)
  • Add the ability to create service in LuaDetector (luacollectors.cpp:226)
  • Fix the lua collector memory growth (have c++ collector in the mean time)
  • SubProcess cleanup (services.cpp:668)
  • Improve service matching (services.cpp:770)
  • Improve service updating (services.cpp:853)
  • Add support for service dependencies (servicesManager.cpp:628)
  • add support for sigusr1 which reload configs et reopen log
  • More usage of pidRessource in plugins and lua too