class Fluent::Plugin::NodeExporter::MeminfoMetricsCollector

Public Class Methods

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

  @metrics = {}
  meminfo_path = File.join(@procfs_path, "meminfo")
  File.readlines(meminfo_path).each do |line|
    metric_name, name, _ = parse_meminfo_line(line)
    @gauge = CMetrics::Gauge.new
    @gauge.create("node", "memory", name, "Memory information field #{metric_name}.")
    @metrics[metric_name.intern] = @gauge
  end
end

Public Instance Methods

cmetrics() click to toggle source
# File lib/fluent/plugin/node_exporter/meminfo_collector.rb, line 63
def cmetrics
  @metrics
end
meminfo_update() click to toggle source
# File lib/fluent/plugin/node_exporter/meminfo_collector.rb, line 55
def meminfo_update
  meminfo_path = File.join(@procfs_path, "meminfo")
  File.readlines(meminfo_path).each do |line|
    metric_name, _, value = parse_meminfo_line(line)
    @metrics[metric_name.intern].set(value.to_f)
  end
end
parse_meminfo_line(line) click to toggle source
# File lib/fluent/plugin/node_exporter/meminfo_collector.rb, line 42
def parse_meminfo_line(line)
  name, value, unit = line.split
  name.delete!(":")
  if name.end_with?("(anon)") or name.end_with?("(file)")
    name.sub!(/\((anon)\)|\((file)\)/, "_\\1\\2")
  end
  if unit
    name << "_bytes"
    value = value.to_f * 1024
  end
  ["node_memory_#{name}", name, value]
end
run() click to toggle source
# File lib/fluent/plugin/node_exporter/meminfo_collector.rb, line 38
def run
  meminfo_update
end