25#include <unordered_map>
126class metrics_provider;
189 auto name() const -> std::string_view
override {
return "power"; }
190 auto collect() -> std::vector<metric>
override;
191 auto interval() const -> std::chrono::milliseconds
override {
return std::chrono::seconds(10); }
198 .description =
"Power consumption metrics from various sources",
202 .requires_platform_support =
true
239 const std::string& unit =
"")
const;
Pure virtual interface for metric collector plugins.
Power consumption monitoring collector implementing collector_plugin interface.
power_collector(power_collector &&)=delete
auto name() const -> std::string_view override
Get the unique name of this plugin.
std::vector< power_reading > last_readings_
auto get_metadata() const -> plugin_metadata override
Get plugin metadata.
auto get_statistics() const -> stats_map override
Get plugin statistics.
auto collect() -> std::vector< metric > override
Collect current metrics from this plugin.
std::unique_ptr< power_info_collector > collector_
auto is_available() const -> bool override
Check if this plugin is available on the current system.
~power_collector() override=default
std::atomic< size_t > collection_count_
auto initialize(const config_map &config) -> bool override
Initialize plugin with configuration.
void add_source_metrics(std::vector< metric > &metrics, const power_reading &reading)
power_collector & operator=(const power_collector &)=delete
std::atomic< size_t > sources_found_
bool is_power_available() const
metric create_metric(const std::string &name, double value, const power_reading &reading, const std::string &unit="") const
std::vector< power_reading > get_last_readings() const
power_collector & operator=(power_collector &&)=delete
power_collector(const power_collector &)=delete
std::atomic< size_t > collection_errors_
void shutdown() override
Shutdown plugin and release resources.
auto get_metric_types() const -> std::vector< std::string > override
Get supported metric types.
auto interval() const -> std::chrono::milliseconds override
Get the collection interval for this plugin.
Power data collector using platform abstraction layer.
power_info_collector & operator=(power_info_collector &&)=delete
std::vector< power_reading > read_all_power()
power_info_collector(power_info_collector &&)=delete
power_info_collector(const power_info_collector &)=delete
bool is_power_available() const
std::unique_ptr< platform::metrics_provider > provider_
std::vector< power_source_info > enumerate_sources()
power_info_collector & operator=(const power_info_collector &)=delete
Plugin interface for metric collectors.
Adapter for metric types to support interface definitions.
std::unordered_map< std::string, double > stats_map
Type alias for statistics map.
@ hardware
Hardware sensors (GPU, temperature, battery, power)
std::string power_source_type_to_string(power_source_type type)
Convert power_source_type to string representation.
std::unordered_map< std::string, std::string > config_map
Type alias for configuration map.
power_source_type
Type of power source.
@ battery
Battery power source.
@ platform
Platform/system power domain.
@ wireless
Wireless charging.
@ other
Other power source type.
@ unknown
Unknown power source type.
@ memory
Memory/DRAM power domain (RAPL)
@ cpu
CPU power domain (RAPL)
@ ac
AC adapter / mains power.
@ package
Processor package power domain (RAPL)
Basic metric structure for interface compatibility.
A single power reading from a source.
bool is_full
True if battery is fully charged.
bool power_available
Whether power metrics are available.
bool is_discharging
True if battery is discharging.
double battery_percent
Battery charge percentage (0-100)
double voltage_volts
Current voltage in Volts.
bool is_charging
True if battery is charging.
double power_limit_watts
Power limit/TDP in Watts (if available)
power_source_info source
Power source information.
double battery_charge_rate
Charging/discharging rate in Watts.
double energy_joules
Cumulative energy consumed in Joules.
double power_watts
Current power consumption in Watts.
std::chrono::system_clock::time_point timestamp
Reading timestamp.
bool limits_available
Whether power limit info is available.
bool battery_available
Whether battery metrics are available.
double battery_capacity_wh
Battery capacity in Watt-hours.
Information about a power source.
power_source_type type
Power source type classification.
std::string id
Unique source identifier.
std::string path
Platform-specific path (e.g., /sys/class/power_supply/BAT0)
std::string name
Human-readable source name.