Class: Metrix::Diskstats

Inherits:
Base
  • Object
show all
Defined in:
lib/metrix/diskstats.rb

Constant Summary collapse

MAPPING =
{
  reads_completed: 0,
  reads_merged: 1,
  sectors_read: 2,
  milliseconds_rea: 3,
  writes_completed: 4,
  writes_merged: 5,
  sectors_written: 6,
  milliseconds_written: 7,
  ios_in_progress: 8,
  milliseconds_io: 9,
  weighted_milliseconds_io: 10,
}

Instance Attribute Summary

Attributes inherited from Base

#attributes, #time

Instance Method Summary collapse

Methods inherited from Base

#cast_int, ignore, #ignore_metric?, ignore_metrics, inherited, known_metrics, prefix, #prefix, set_known_metrics, set_prefix, subclasses, #tagged_metrics, #tags, #unfiltered_metrics

Constructor Details

#initialize(data) ⇒ Diskstats

Returns a new instance of Diskstats.



19
20
21
22
# File 'lib/metrix/diskstats.rb', line 19

def initialize(data)
  @data = data
  @time = Time.now
end

Instance Method Details

#metricsObject



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/metrix/diskstats.rb', line 24

def metrics
  @data.scan(/^\s*(\d+)\s*(\d+)\s*(.*?) (.*)/).map do |(_, _, disk, rest)|
    next if disk.start_with?("loop") || disk.start_with?("ram")
    chunks = rest.split(" ").map(&:to_i)
    metrics = []
    MAPPING.keys.each_with_index do |m, i|
      value = chunks.at(i)
      metrics << Metric.new("#{prefix}.#{m}", value, @time, disk: disk)
    end
    metrics
  end.flatten.compact
end