class Fluent::Plugin::NodeExporter::CpufreqMetricsCollector

Public Class Methods

new(config={}) click to toggle source
# File lib/fluent/plugin/node_exporter/cpufreq_collector.rb, line 25
def initialize(config={})
  super(config)

  if Fluent.linux?
    @frequency_hertz = CMetrics::Gauge.new
    @frequency_hertz.create("node", "cpu", "frequency_hertz",
                            "Current cpu thread frequency in hertz.", ["cpu"])

    @frequency_max_hertz = CMetrics::Gauge.new
    @frequency_max_hertz.create("node", "cpu", "frequency_max_hertz",
                               "Maximum cpu thread frequency in hertz.", ["cpu"])

    @frequency_min_hertz = CMetrics::Gauge.new
    @frequency_min_hertz.create("node", "cpu", "frequency_min_hertz",
                               "Minimum cpu thread frequency in hertz.", ["cpu"])

    @scaling_frequency_hertz = CMetrics::Gauge.new
    @scaling_frequency_hertz.create("node", "cpu", "scaling_frequency_hertz",
                                    "Current scaled CPU thread frequency in hertz.", ["cpu"])

    @scaling_frequency_max_hertz = CMetrics::Gauge.new
    @scaling_frequency_max_hertz.create("node", "cpu", "scaling_frequency_max_hertz",
                               "Maximum scaled CPU thread frequency in hertz.", ["cpu"])

    @scaling_frequency_min_hertz = CMetrics::Gauge.new
    @scaling_frequency_min_hertz.create("node", "cpu", "scaling_frequency_min_hertz",
                               "Minimum scaled CPU thread frequency in hertz.", ["cpu"])
  end
end

Public Instance Methods

cmetrics() click to toggle source
# File lib/fluent/plugin/node_exporter/cpufreq_collector.rb, line 84
def cmetrics
  {
    frequency_hertz: @frequency_hertz,
    frequency_max_hertz: @frequency_max_hertz,
    frequency_min_hertz: @frequency_min_hertz,
    scaling_frequency_hertz: @scaling_frequency_hertz,
    scaling_frequency_max_hertz: @scaling_frequency_max_hertz,
    scaling_frequency_min_hertz: @scaling_frequency_min_hertz
  }
end
cpufreq_update() click to toggle source
# File lib/fluent/plugin/node_exporter/cpufreq_collector.rb, line 64
def cpufreq_update
  scan_sysfs_path("devices/system/cpu/cpu[0-9]*").each do |path|
    next unless Dir.exist?(File.join(path, "cpufreq"))

    cpuinfo_cur_freq_path = File.join(path, "cpufreq", "cpuinfo_cur_freq")
    cpuinfo_max_freq_path = File.join(path, "cpufreq", "cpuinfo_max_freq")
    cpuinfo_min_freq_path = File.join(path, "cpufreq", "cpuinfo_min_freq")
    scaling_cur_freq_path = File.join(path, "cpufreq", "scaling_cur_freq")
    scaling_max_freq_path = File.join(path, "cpufreq", "scaling_max_freq")
    scaling_min_freq_path = File.join(path, "cpufreq", "scaling_min_freq")
    cpu_id = File.basename(path).sub(/cpu(\d+)/, "\\1")
    @frequency_hertz.set(File.read(cpuinfo_cur_freq_path).to_f, [cpu_id]) if File.exist?(cpuinfo_cur_freq_path)
    @frequency_max_hertz.set(File.read(cpuinfo_max_freq_path).to_f, [cpu_id]) if File.exist?(cpuinfo_max_freq_path)
    @frequency_min_hertz.set(File.read(cpuinfo_min_freq_path).to_f, [cpu_id]) if File.exist?(cpuinfo_min_freq_path)
    @scaling_frequency_hertz.set(File.read(scaling_cur_freq_path).to_f, [cpu_id]) if File.exist?(scaling_cur_freq_path)
    @scaling_frequency_max_hertz.set(File.read(scaling_max_freq_path).to_f, [cpu_id]) if File.exist?(scaling_max_freq_path)
    @scaling_frequency_min_hertz.set(File.read(scaling_min_freq_path).to_f, [cpu_id]) if File.exist?(scaling_min_freq_path)
  end
end
cpuinfo_cur_freq_exist?() click to toggle source
# File lib/fluent/plugin/node_exporter/cpufreq_collector.rb, line 59
def cpuinfo_cur_freq_exist?
  path = File.join(@sysfs_path, "devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq")
  File.exist?(path)
end
run() click to toggle source
# File lib/fluent/plugin/node_exporter/cpufreq_collector.rb, line 55
def run
  cpufreq_update
end