onering-report-plugins 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/reporter/default/stats_base.rb +3 -43
- data/lib/reporter/default/stats_disk.rb +110 -0
- metadata +4 -3
@@ -3,46 +3,6 @@
|
|
3
3
|
#
|
4
4
|
|
5
5
|
report do
|
6
|
-
# ------------------------------------------------------------------------------
|
7
|
-
# filesystem
|
8
|
-
#
|
9
|
-
stats_fs = {}
|
10
|
-
current_dev = nil
|
11
|
-
|
12
|
-
# logical mounts
|
13
|
-
File.open("/etc/mtab").each do |line|
|
14
|
-
dev,mount,fstype,flags,dump,pass = line.split(/\s+/)
|
15
|
-
|
16
|
-
stats_fs[dev] = {
|
17
|
-
:mount => mount,
|
18
|
-
:device => dev,
|
19
|
-
:filesystem => fstype,
|
20
|
-
:flags => flags.split(/\s*,\s*/)
|
21
|
-
}
|
22
|
-
end
|
23
|
-
|
24
|
-
# logical space utilization
|
25
|
-
IO.popen("df").lines.each do |line|
|
26
|
-
next if line =~ /^Filesystem/
|
27
|
-
parts = line.split(/\s+/)
|
28
|
-
|
29
|
-
if parts.length == 1
|
30
|
-
current_dev = parts.first
|
31
|
-
next
|
32
|
-
|
33
|
-
else
|
34
|
-
dev,kblk,used,free,percent,mount = parts
|
35
|
-
dev = current_dev if dev.empty?
|
36
|
-
next unless stats_fs[dev] and stats_fs[dev].is_a?(Hash)
|
37
|
-
|
38
|
-
stats_fs[dev][:used] = (used.to_i * 1024)
|
39
|
-
stats_fs[dev][:available] = (free.to_i * 1024)
|
40
|
-
stats_fs[dev][:total] = (stats_fs[dev][:available] + stats_fs[dev][:used])
|
41
|
-
stats_fs[dev][:percent_used] = percent.delete('%').to_i
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
|
46
6
|
# ------------------------------------------------------------------------------
|
47
7
|
# memory
|
48
8
|
#
|
@@ -85,10 +45,10 @@ report do
|
|
85
45
|
# ------------------------------------------------------------------------------
|
86
46
|
# set stat properties
|
87
47
|
#
|
88
|
-
stat :disk, stats_fs.select{|k,v| k =~ /^\/dev\/((h|s|xv|v)d|mapper)/ }.values rescue []
|
89
48
|
stat :memory, stats_mem
|
90
49
|
stat :cpu, ({
|
91
|
-
'count'
|
92
|
-
'
|
50
|
+
'count' => Facter.value('processorcount'),
|
51
|
+
'physical' => Facter.value('physicalprocessorcount'),
|
52
|
+
'speed' => stats_cpu[:processors].collect{|i| i[:speed] }.compact.uniq.sort{|a,b| a.to_f <=> b.to_f }.last.to_f
|
93
53
|
} rescue nil)
|
94
54
|
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# Onering Collector - Disk Statistics plugin
|
2
|
+
# provides data on disks, mounts, and RAID configuration
|
3
|
+
#
|
4
|
+
|
5
|
+
report do
|
6
|
+
# ------------------------------------------------------------------------------
|
7
|
+
# mounts
|
8
|
+
#
|
9
|
+
mounts = {}
|
10
|
+
current_dev = nil
|
11
|
+
|
12
|
+
File.open("/etc/mtab").each do |line|
|
13
|
+
dev,mount,fstype,flags,dump,pass = line.split(/\s+/)
|
14
|
+
|
15
|
+
mounts[dev] = {
|
16
|
+
:mount => mount,
|
17
|
+
:device => dev,
|
18
|
+
:filesystem => fstype,
|
19
|
+
:flags => flags.split(/\s*,\s*/)
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
# logical space utilization
|
24
|
+
IO.popen("df").lines.each do |line|
|
25
|
+
next if line =~ /^Filesystem/
|
26
|
+
parts = line.split(/\s+/)
|
27
|
+
|
28
|
+
if parts.length == 1
|
29
|
+
current_dev = parts.first
|
30
|
+
next
|
31
|
+
|
32
|
+
else
|
33
|
+
dev,kblk,used,free,percent,mount = parts
|
34
|
+
dev = current_dev if dev.empty?
|
35
|
+
next unless mounts[dev] and mounts[dev].is_a?(Hash)
|
36
|
+
|
37
|
+
mounts[dev][:used] = (used.to_i * 1024)
|
38
|
+
mounts[dev][:available] = (free.to_i * 1024)
|
39
|
+
mounts[dev][:total] = (mounts[dev][:available] + mounts[dev][:used])
|
40
|
+
mounts[dev][:percent_used] = percent.delete('%').to_i
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
# ------------------------------------------------------------------------------
|
46
|
+
# LVM
|
47
|
+
#
|
48
|
+
vg = {}
|
49
|
+
|
50
|
+
# volume groups
|
51
|
+
IO.popen("vgdisplay -c").lines.each do |line|
|
52
|
+
line = line.strip.chomp.split(':')
|
53
|
+
|
54
|
+
vg[line[0]] = {
|
55
|
+
:name => line[0],
|
56
|
+
:uuid => line[16],
|
57
|
+
:size => (line[11].to_i*1024),
|
58
|
+
:extents => {
|
59
|
+
:size => (line[12].to_i * 1024),
|
60
|
+
:total => line[13].to_i,
|
61
|
+
:allocated => line[14].to_i,
|
62
|
+
:free => line[15].to_i
|
63
|
+
},
|
64
|
+
:volumes => [],
|
65
|
+
:disks => []
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
# logical volumes
|
70
|
+
IO.popen("lvdisplay -c").lines.each do |line|
|
71
|
+
line = line.strip.chomp.split(':')
|
72
|
+
|
73
|
+
unless vg[line[1]].nil?
|
74
|
+
vg[line[1]][:volumes] << {
|
75
|
+
:name => line[0],
|
76
|
+
:sectors => line[6].to_i,
|
77
|
+
:extents => line[7].to_i,
|
78
|
+
:size => (vg[line[1]][:extents][:size] * line[7].to_i)
|
79
|
+
}
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
# physical volumes
|
85
|
+
IO.popen("pvdisplay -c").lines.each do |line|
|
86
|
+
line = line.strip.chomp.split(':')
|
87
|
+
|
88
|
+
unless vg[line[1]].nil?
|
89
|
+
vg[line[1]][:disks] << {
|
90
|
+
:name => line[0],
|
91
|
+
:uuid => line[11].to_i,
|
92
|
+
:size => (line[2].to_i * 1024),
|
93
|
+
:extents => {
|
94
|
+
:size => (line[7].to_i * 1024),
|
95
|
+
:total => line[8].to_i,
|
96
|
+
:allocated => line[10].to_i,
|
97
|
+
:free => line[9].to_i
|
98
|
+
}
|
99
|
+
}
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
stat :disk, {
|
105
|
+
:mounts => (Hash[mounts.select{|k,v| k =~ /^\/dev\/((h|s|xv|v)d|mapper)/ }].values rescue nil),
|
106
|
+
:lvm => {
|
107
|
+
:groups => vg.values
|
108
|
+
}
|
109
|
+
}
|
110
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onering-report-plugins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-04-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: onering-client
|
16
|
-
requirement: &
|
16
|
+
requirement: &19860780 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *19860780
|
25
25
|
description: Base plugins for providing system information via the Onering client
|
26
26
|
utility
|
27
27
|
email: ghetzel@outbrain.com
|
@@ -38,6 +38,7 @@ files:
|
|
38
38
|
- lib/facter/onering_properties_xen.rb
|
39
39
|
- lib/reporter/default/properties_physical.rb
|
40
40
|
- lib/reporter/default/properties_facter.rb
|
41
|
+
- lib/reporter/default/stats_disk.rb
|
41
42
|
- lib/reporter/default/properties_xen.rb
|
42
43
|
- lib/reporter/default/properties_chef.rb
|
43
44
|
- lib/reporter/default/stats_network.rb
|