Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
kcenon::monitoring::plugins::container_plugin Class Reference

Container monitoring plugin aggregating Docker, Kubernetes, and cgroup collectors. More...

#include <container_plugin.h>

Inheritance diagram for kcenon::monitoring::plugins::container_plugin:
Inheritance graph
Collaboration diagram for kcenon::monitoring::plugins::container_plugin:
Collaboration graph

Public Member Functions

 ~container_plugin () override
 
 container_plugin (const container_plugin &)=delete
 
container_pluginoperator= (const container_plugin &)=delete
 
bool initialize (const std::unordered_map< std::string, std::string > &config) override
 
std::vector< metriccollect () override
 
std::string get_name () const override
 
std::vector< std::string > get_metric_types () const override
 
bool is_healthy () const override
 
std::unordered_map< std::string, double > get_statistics () const override
 
bool is_docker_available () const
 
bool is_kubernetes_available () const
 
bool is_cgroup_available () const
 
container_plugin_config get_config () const
 
- Public Member Functions inherited from kcenon::monitoring::metric_collector_plugin
virtual ~metric_collector_plugin ()=default
 

Static Public Member Functions

static std::unique_ptr< container_plugincreate (const container_plugin_config &config={})
 
static bool is_running_in_container ()
 
static bool is_kubernetes_environment ()
 
static container_runtime detect_runtime ()
 

Private Member Functions

 container_plugin (const container_plugin_config &config)
 
void initialize_collectors ()
 

Private Attributes

std::unique_ptr< container_collectorcontainer_collector_
 
container_plugin_config config_
 
bool initialized_ {false}
 
std::mutex stats_mutex_
 
std::atomic< size_t > total_collections_ {0}
 
std::atomic< size_t > collection_errors_ {0}
 
std::atomic< size_t > containers_found_ {0}
 

Detailed Description

Container monitoring plugin aggregating Docker, Kubernetes, and cgroup collectors.

This plugin provides container-specific metrics collection for containerized deployments. For bare-metal deployments, this plugin should not be loaded to reduce binary size and avoid unnecessary collection overhead.

Metrics provided:

  • Docker: container CPU/memory/network/I/O, running containers count
  • Kubernetes: pod count, restarts, deployment replicas, node resources
  • cgroup: CPU time, memory usage/limits, I/O bytes

Definition at line 116 of file container_plugin.h.

Constructor & Destructor Documentation

◆ ~container_plugin()

kcenon::monitoring::plugins::container_plugin::~container_plugin ( )
override

◆ container_plugin() [1/2]

kcenon::monitoring::plugins::container_plugin::container_plugin ( const container_plugin & )
delete

◆ container_plugin() [2/2]

kcenon::monitoring::plugins::container_plugin::container_plugin ( const container_plugin_config & config)
explicitprivate

Member Function Documentation

◆ collect()

std::vector< metric > kcenon::monitoring::plugins::container_plugin::collect ( )
overridevirtual

Collect metrics from the data source

Returns
Collection of metrics

Implements kcenon::monitoring::metric_collector_plugin.

◆ create()

static std::unique_ptr< container_plugin > kcenon::monitoring::plugins::container_plugin::create ( const container_plugin_config & config = {})
static

Create a container plugin instance with configuration

Parameters
configPlugin configuration options
Returns
Unique pointer to container_plugin instance

◆ detect_runtime()

static container_runtime kcenon::monitoring::plugins::container_plugin::detect_runtime ( )
static

Detect the container runtime in use

Returns
Detected container runtime type

◆ get_config()

container_plugin_config kcenon::monitoring::plugins::container_plugin::get_config ( ) const

Get the current configuration

Returns
Copy of current configuration

◆ get_metric_types()

std::vector< std::string > kcenon::monitoring::plugins::container_plugin::get_metric_types ( ) const
overridevirtual

Get supported metric types

Returns
Vector of supported metric type names

Implements kcenon::monitoring::metric_collector_plugin.

◆ get_name()

std::string kcenon::monitoring::plugins::container_plugin::get_name ( ) const
overridevirtual

Get the name of this plugin

Returns
Plugin name

Implements kcenon::monitoring::metric_collector_plugin.

◆ get_statistics()

std::unordered_map< std::string, double > kcenon::monitoring::plugins::container_plugin::get_statistics ( ) const
overridevirtual

Get plugin-specific statistics

Returns
Map of statistic name to value

Implements kcenon::monitoring::metric_collector_plugin.

◆ initialize()

bool kcenon::monitoring::plugins::container_plugin::initialize ( const std::unordered_map< std::string, std::string > & config)
overridevirtual

Initialize the plugin with configuration

Parameters
configPlugin-specific configuration
Returns
true if initialization successful

Implements kcenon::monitoring::metric_collector_plugin.

◆ initialize_collectors()

void kcenon::monitoring::plugins::container_plugin::initialize_collectors ( )
private

◆ is_cgroup_available()

bool kcenon::monitoring::plugins::container_plugin::is_cgroup_available ( ) const

Check if cgroup metrics are available

Returns
True if cgroup filesystem is accessible

◆ is_docker_available()

bool kcenon::monitoring::plugins::container_plugin::is_docker_available ( ) const

Check if Docker metrics are available

Returns
True if Docker daemon is accessible

◆ is_healthy()

bool kcenon::monitoring::plugins::container_plugin::is_healthy ( ) const
overridevirtual

Check if the plugin is healthy

Returns
true if plugin is operational

Implements kcenon::monitoring::metric_collector_plugin.

◆ is_kubernetes_available()

bool kcenon::monitoring::plugins::container_plugin::is_kubernetes_available ( ) const

Check if Kubernetes metrics are available

Returns
True if Kubernetes API is accessible

◆ is_kubernetes_environment()

static bool kcenon::monitoring::plugins::container_plugin::is_kubernetes_environment ( )
static

Check if running in a Kubernetes environment

Returns
True if Kubernetes environment variables are detected

◆ is_running_in_container()

static bool kcenon::monitoring::plugins::container_plugin::is_running_in_container ( )
static

Check if running inside a container

Returns
True if the current process is running inside a container

◆ operator=()

container_plugin & kcenon::monitoring::plugins::container_plugin::operator= ( const container_plugin & )
delete

Member Data Documentation

◆ collection_errors_

std::atomic<size_t> kcenon::monitoring::plugins::container_plugin::collection_errors_ {0}
private

Definition at line 194 of file container_plugin.h.

194{0};

◆ config_

container_plugin_config kcenon::monitoring::plugins::container_plugin::config_
private

Definition at line 188 of file container_plugin.h.

◆ container_collector_

std::unique_ptr<container_collector> kcenon::monitoring::plugins::container_plugin::container_collector_
private

Definition at line 185 of file container_plugin.h.

◆ containers_found_

std::atomic<size_t> kcenon::monitoring::plugins::container_plugin::containers_found_ {0}
private

Definition at line 195 of file container_plugin.h.

195{0};

◆ initialized_

bool kcenon::monitoring::plugins::container_plugin::initialized_ {false}
private

Definition at line 189 of file container_plugin.h.

189{false};

◆ stats_mutex_

std::mutex kcenon::monitoring::plugins::container_plugin::stats_mutex_
mutableprivate

Definition at line 192 of file container_plugin.h.

◆ total_collections_

std::atomic<size_t> kcenon::monitoring::plugins::container_plugin::total_collections_ {0}
private

Definition at line 193 of file container_plugin.h.

193{0};

The documentation for this class was generated from the following file: