Sha256: 85b787b7c48057d292064e11f18fb5e0f9b97b230bef10b034988aa6d6967f3e

Contents?: true

Size: 1.5 KB

Versions: 4

Compression:

Stored size: 1.5 KB

Contents

require 'rubygems'
require 'rrd'
require 'pp'
require 'chronic_duration'



if ARGV.size != 1
  puts "Usage: #{File.basename($0)} <rrd_file>"
  puts "This tool will extract data from the RRD and display it"
  exit(1)
end


# FILE="/Users/schmurfy/Dev/personal/rrd-faces/preprod_data/cpu-idle.rrd"
# FILE="/Users/schmurfy/Dev/personal/rrd-grapher/specs/data/test.rrd"
# FILE="/Users/schmurfy/Dev/personal/rrd-grapher/specs/myrouter.rrd"
# FILE="/Users/schmurfy/Dev/personal/rrd-grapher/specs/data/subdata.rrd"
FILE = ARGV[0]

rrd = RRD::Base.new(FILE)
raw_infos = rrd.info
infos = {
  :filename => raw_infos.delete("filename"),
  :rrd_version => raw_infos.delete("rrd_version"),
  # data will be added in this rrd every <step> seconds
  :step => raw_infos.delete("step"),
  :last_update => raw_infos.delete("last_update"),
  :header_size => raw_infos.delete("header_size"),
  :ds => {},
  :rra => []
}

# pp raw_infos

raw_infos.each do |key, val|
  case key
  when %r{^ds\[([a-zA-Z_]+)\]\.([a-zA-Z_]+)}
    infos[:ds][$1] ||= {}
    infos[:ds][$1][$2] = val
  
  when %r{^rra\[([0-9]+)\]\.([a-zA-Z_]+)}
    infos[:rra][$1.to_i] ||= {}
    infos[:rra][$1.to_i][$2] = val
  end
end

# pp infos

# base interval
step = infos[:step]
puts ""
infos[:rra].each do |data|
  print "#{data['cf'].rjust(10)}: "
  
  time_point = ChronicDuration.output(data['pdp_per_row'] * step)
  print "a point every #{time_point} "
  
  time_store = ChronicDuration.output(data['rows'] * (data['pdp_per_row'] * step))
  puts "stored for #{time_store}"
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rrd-grapher-1.0.3 tests/analyze_rrd.rb
rrd-grapher-1.0.2 tests/analyze_rrd.rb
rrd-grapher-1.0.1 tests/analyze_rrd.rb
rrd-grapher-1.0.0 tests/analyze_rrd.rb