collectors/iostat/iostat in panoptimon-0.2.0 vs collectors/iostat/iostat in panoptimon-0.3.0
- old
+ new
@@ -14,11 +14,11 @@
[1,2].each { x = p.readline until x == "\n" } # header + first sample
puts '{}' # beep
-def prep l
+def parse_header l
want = {
'kb_read/s' => 'rkB/s',
'kb_write/s' => 'wkB/s',
'rrqm/s' => 'rrqm/s',
'wrqm/s' => 'wrqm/s',
@@ -31,20 +31,22 @@
'w_await' => 'w_await',
'util' => '%util',
}
head = l.chomp.split(/\s+/)
head = Hash[*head.zip(0..(head.length-1)).flatten]
- raise "oops" unless head.values_at(*want.values).length == want.values.length
- o = {}; want.each {|k,v| o[k] = head[v]}
+ want.values.find_all{|x| not(head[x])}.tap {|missed|
+ warn "missing headers: "+ missed.join(', ') if missed.length > 0
+ }
+ o = {}; want.each {|k,v| o[k] = head[v] if head[v]}
return o
end
omap = nil
group = {}
until p.eof?
l = p.readline("\n\n").split(/\n/)
- omap ||= prep(l[0])
+ omap ||= parse_header(l[0])
puts JSON::generate(Hash[*l.drop(1).map {|x|
r = x.split(/\s+/)
[r[0], # device name
Hash[*omap.keys.map {|k| [k, r[omap[k]].to_f]}.flatten]]
}.flatten])