onering-report-plugins 0.0.53 → 0.0.54
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.
- metadata +1 -3
- data/lib/reporter/default/stats_disk_49.rb +0 -126
- data/lib/reporter/default/stats_disk_52.rb +0 -191
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.54
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -36,7 +36,6 @@ extra_rdoc_files: []
|
|
36
36
|
files:
|
37
37
|
- lib/reporter/default/properties_facter.rb
|
38
38
|
- lib/reporter/default/stats_virident.rb
|
39
|
-
- lib/reporter/default/stats_disk_52.rb
|
40
39
|
- lib/reporter/default/stats_disk.rb
|
41
40
|
- lib/reporter/default/properties_xen.rb
|
42
41
|
- lib/reporter/default/properties_openvz.rb
|
@@ -44,7 +43,6 @@ files:
|
|
44
43
|
- lib/reporter/default/properties_network.rb
|
45
44
|
- lib/reporter/default/properties_physical.rb
|
46
45
|
- lib/reporter/default/properties_ohai.rb
|
47
|
-
- lib/reporter/default/stats_disk_49.rb
|
48
46
|
- lib/reporter/default/stats_zfs.rb
|
49
47
|
- lib/reporter/default/stats_base.rb
|
50
48
|
- lib/reporter/default/properties_services.rb
|
@@ -1,126 +0,0 @@
|
|
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
|
-
uuids = Hash[Dir["/dev/disk/by-uuid/*"].collect{|i|
|
13
|
-
[File.expand_path(File.readlink(i), File.dirname(i)), File.basename(i)]
|
14
|
-
}]
|
15
|
-
|
16
|
-
File.read("/etc/mtab").lines.each do |line|
|
17
|
-
dev,mount,fstype,flags,dump,pass = line.split(/\s+/)
|
18
|
-
|
19
|
-
mounts[dev] = {
|
20
|
-
:mount => mount,
|
21
|
-
:device => dev,
|
22
|
-
:filesystem => fstype,
|
23
|
-
:flags => flags.split(/\s*,\s*/),
|
24
|
-
:uuid => uuids[dev]
|
25
|
-
}.compact
|
26
|
-
end
|
27
|
-
|
28
|
-
# logical space utilization
|
29
|
-
Facter::Util::Resolution.exec("df 2> /dev/null").to_s.lines.each do |line|
|
30
|
-
next if line =~ /^Filesystem/
|
31
|
-
parts = line.split(/\s+/)
|
32
|
-
|
33
|
-
if parts.length == 1
|
34
|
-
current_dev = parts.first
|
35
|
-
next
|
36
|
-
|
37
|
-
else
|
38
|
-
dev,kblk,used,free,percent,mount = parts
|
39
|
-
dev = current_dev if dev.empty?
|
40
|
-
next unless mounts[dev] and mounts[dev].is_a?(Hash)
|
41
|
-
|
42
|
-
mounts[dev][:used] = (used.to_i * 1024)
|
43
|
-
mounts[dev][:available] = (free.to_i * 1024)
|
44
|
-
mounts[dev][:total] = (mounts[dev][:available] + mounts[dev][:used])
|
45
|
-
mounts[dev][:percent_used] = percent.delete('%').to_i
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
|
50
|
-
# ------------------------------------------------------------------------------
|
51
|
-
# LVM
|
52
|
-
#
|
53
|
-
vg = {}
|
54
|
-
|
55
|
-
# volume groups
|
56
|
-
Facter::Util::Resolution.exec("vgdisplay -c 2> /dev/null").to_s.lines.each do |line|
|
57
|
-
line = line.strip.chomp.split(':')
|
58
|
-
|
59
|
-
vg[line[0]] = {
|
60
|
-
:name => line[0],
|
61
|
-
:uuid => line[16],
|
62
|
-
:size => (line[11].to_i*1024),
|
63
|
-
:extents => {
|
64
|
-
:size => (line[12].to_i * 1024),
|
65
|
-
:total => line[13].to_i,
|
66
|
-
:allocated => line[14].to_i,
|
67
|
-
:free => line[15].to_i
|
68
|
-
},
|
69
|
-
:volumes => [],
|
70
|
-
:disks => []
|
71
|
-
}
|
72
|
-
end
|
73
|
-
|
74
|
-
# logical volumes
|
75
|
-
Facter::Util::Resolution.exec("lvdisplay -c 2> /dev/null").to_s.lines.each do |line|
|
76
|
-
line = line.strip.chomp.split(':')
|
77
|
-
|
78
|
-
unless vg[line[1]].nil?
|
79
|
-
vg[line[1]][:volumes] << {
|
80
|
-
:name => line[0],
|
81
|
-
:sectors => line[6].to_i,
|
82
|
-
:extents => line[7].to_i,
|
83
|
-
:size => (vg[line[1]][:extents][:size] * line[7].to_i)
|
84
|
-
}
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
|
89
|
-
# physical volumes
|
90
|
-
Facter::Util::Resolution.exec("pvdisplay -c 2> /dev/null").to_s.lines.each do |line|
|
91
|
-
line = line.strip.chomp.split(':')
|
92
|
-
|
93
|
-
unless vg[line[1]].nil?
|
94
|
-
vg[line[1]][:disks] << {
|
95
|
-
:name => line[0],
|
96
|
-
:uuid => line[11],
|
97
|
-
:size => (line[8].to_i * (line[7].to_i * 1024)), # See Note 1 below
|
98
|
-
:extents => {
|
99
|
-
:size => (line[7].to_i * 1024),
|
100
|
-
:total => line[8].to_i,
|
101
|
-
:allocated => line[10].to_i,
|
102
|
-
:free => line[9].to_i
|
103
|
-
}
|
104
|
-
}
|
105
|
-
|
106
|
-
# the output of certain versions of pvdisplay -c reports a blatantly incorrect
|
107
|
-
# physical volume total size. the workaround is to calculate the actual total size
|
108
|
-
# via (total extents * extent size)
|
109
|
-
#
|
110
|
-
# this may or may not be GPT related
|
111
|
-
#
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
|
116
|
-
d = {}
|
117
|
-
|
118
|
-
d[:@mounts] = (Hash[mounts.select{|k,v| k =~ /^\/dev\/((h|s|xv|v)d|mapper|vgc)/ }].values rescue nil)
|
119
|
-
d[:lvm] = {
|
120
|
-
:@groups => vg.values
|
121
|
-
} unless vg.values.empty?
|
122
|
-
|
123
|
-
d[:@smart] = Facter.value('smart')
|
124
|
-
|
125
|
-
stat :disk, d.compact
|
126
|
-
end
|
@@ -1,191 +0,0 @@
|
|
1
|
-
# Onering Collector - Disk Statistics plugin
|
2
|
-
# provides data on disks, mounts, and RAID configuration
|
3
|
-
#
|
4
|
-
|
5
|
-
report do
|
6
|
-
# ------------------------------------------------------------------------------
|
7
|
-
# block devices
|
8
|
-
#
|
9
|
-
blocks = []
|
10
|
-
|
11
|
-
Facter.value('blockdevices').split(/\W+/).each do |dev|
|
12
|
-
|
13
|
-
block = {
|
14
|
-
:name => dev,
|
15
|
-
:device => (File.exists?("/dev/#{dev}") ? "/dev/#{dev}" : nil),
|
16
|
-
:vendor => Facter.value("blockdevice_#{dev}_vendor"),
|
17
|
-
:model => Facter.value("blockdevice_#{dev}_model"),
|
18
|
-
:size => (Integer(Facter.value("blockdevice_#{dev}_size")) rescue nil)
|
19
|
-
}
|
20
|
-
|
21
|
-
if File.directory?("/sys/block/#{dev}")
|
22
|
-
block[:removable] = (File.read("/sys/block/#{dev}/removable").to_s.chomp.strip == '1' rescue nil)
|
23
|
-
block[:readonly] = (File.read("/sys/block/#{dev}/ro").to_s.chomp.strip == '1' rescue nil)
|
24
|
-
block[:solidstate] = (File.read("/sys/block/#{dev}/queue/rotational").to_s.chomp.strip == '0' rescue nil)
|
25
|
-
block[:sectorsize] = {}
|
26
|
-
|
27
|
-
%w{
|
28
|
-
logical
|
29
|
-
physical
|
30
|
-
}.each do |s|
|
31
|
-
block[:sectorsize][s.to_sym] = (Integer(File.read("/sys/block/#{dev}/queue/#{s}_block_size").chomp.strip) rescue nil)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
blocks << block.compact
|
36
|
-
end
|
37
|
-
|
38
|
-
# ------------------------------------------------------------------------------
|
39
|
-
# partitions
|
40
|
-
#
|
41
|
-
# partitions = []
|
42
|
-
|
43
|
-
# begin
|
44
|
-
# File.read("/proc/partitions").lines.each do |line|
|
45
|
-
# next if line == line.first
|
46
|
-
# line = line.chomp.strip
|
47
|
-
# next if line.empty?
|
48
|
-
|
49
|
-
# line = line.split(/\s+/)
|
50
|
-
|
51
|
-
# # for the moment, just interested in sd devices
|
52
|
-
# # numbers sources from /proc/devices
|
53
|
-
# #
|
54
|
-
# next unless [
|
55
|
-
# 8,65,66,67,68,69,70,71,128,129,130,131,132,133,134,135
|
56
|
-
# ].include?(line[0].to_i)
|
57
|
-
|
58
|
-
# # only get numbered partitions (not whole-device entries)
|
59
|
-
# next unless line[-1] =~ /^\D+\d+$/
|
60
|
-
|
61
|
-
# partition = {
|
62
|
-
# :name => line[-1],
|
63
|
-
# }
|
64
|
-
# end
|
65
|
-
# rescue
|
66
|
-
# nil
|
67
|
-
# end
|
68
|
-
|
69
|
-
# ------------------------------------------------------------------------------
|
70
|
-
# mounts
|
71
|
-
#
|
72
|
-
mounts = {}
|
73
|
-
current_dev = nil
|
74
|
-
|
75
|
-
uuids = Hash[Dir["/dev/disk/by-uuid/*"].collect{|i|
|
76
|
-
[File.expand_path(File.readlink(i), File.dirname(i)), File.basename(i)]
|
77
|
-
}]
|
78
|
-
|
79
|
-
File.read("/etc/mtab").lines.each do |line|
|
80
|
-
dev,mount,fstype,flags,dump,pass = line.split(/\s+/)
|
81
|
-
|
82
|
-
mounts[dev] = {
|
83
|
-
:mount => mount,
|
84
|
-
:device => dev,
|
85
|
-
:filesystem => fstype,
|
86
|
-
:flags => flags.split(/\s*,\s*/),
|
87
|
-
:uuid => uuids[dev]
|
88
|
-
}.compact
|
89
|
-
end
|
90
|
-
|
91
|
-
# logical space utilization
|
92
|
-
Facter::Util::Resolution.exec("df 2> /dev/null").to_s.lines.each do |line|
|
93
|
-
next if line =~ /^Filesystem/
|
94
|
-
parts = line.split(/\s+/)
|
95
|
-
|
96
|
-
if parts.length == 1
|
97
|
-
current_dev = parts.first
|
98
|
-
next
|
99
|
-
|
100
|
-
else
|
101
|
-
dev,kblk,used,free,percent,mount = parts
|
102
|
-
dev = current_dev if dev.empty?
|
103
|
-
next unless mounts[dev] and mounts[dev].is_a?(Hash)
|
104
|
-
|
105
|
-
mounts[dev][:used] = (used.to_i * 1024)
|
106
|
-
mounts[dev][:available] = (free.to_i * 1024)
|
107
|
-
mounts[dev][:total] = (mounts[dev][:available] + mounts[dev][:used])
|
108
|
-
mounts[dev][:percent_used] = percent.delete('%').to_i
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
|
113
|
-
# ------------------------------------------------------------------------------
|
114
|
-
# LVM
|
115
|
-
#
|
116
|
-
vg = {}
|
117
|
-
|
118
|
-
# volume groups
|
119
|
-
Facter::Util::Resolution.exec("vgdisplay -c 2> /dev/null").to_s.lines.each do |line|
|
120
|
-
line = line.strip.chomp.split(':')
|
121
|
-
|
122
|
-
vg[line[0]] = {
|
123
|
-
:name => line[0],
|
124
|
-
:uuid => line[16],
|
125
|
-
:size => (line[11].to_i*1024),
|
126
|
-
:extents => {
|
127
|
-
:size => (line[12].to_i * 1024),
|
128
|
-
:total => line[13].to_i,
|
129
|
-
:allocated => line[14].to_i,
|
130
|
-
:free => line[15].to_i
|
131
|
-
},
|
132
|
-
:volumes => [],
|
133
|
-
:disks => []
|
134
|
-
}
|
135
|
-
end
|
136
|
-
|
137
|
-
# logical volumes
|
138
|
-
Facter::Util::Resolution.exec("lvdisplay -c 2> /dev/null").to_s.lines.each do |line|
|
139
|
-
line = line.strip.chomp.split(':')
|
140
|
-
|
141
|
-
unless vg[line[1]].nil?
|
142
|
-
vg[line[1]][:volumes] << {
|
143
|
-
:name => line[0],
|
144
|
-
:sectors => line[6].to_i,
|
145
|
-
:extents => line[7].to_i,
|
146
|
-
:size => (vg[line[1]][:extents][:size] * line[7].to_i)
|
147
|
-
}
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
|
152
|
-
# physical volumes
|
153
|
-
Facter::Util::Resolution.exec("pvdisplay -c 2> /dev/null").to_s.lines.each do |line|
|
154
|
-
line = line.strip.chomp.split(':')
|
155
|
-
|
156
|
-
unless vg[line[1]].nil?
|
157
|
-
vg[line[1]][:disks] << {
|
158
|
-
:name => line[0],
|
159
|
-
:uuid => line[11],
|
160
|
-
:size => (line[8].to_i * (line[7].to_i * 1024)), # See Note 1 below
|
161
|
-
:extents => {
|
162
|
-
:size => (line[7].to_i * 1024),
|
163
|
-
:total => line[8].to_i,
|
164
|
-
:allocated => line[10].to_i,
|
165
|
-
:free => line[9].to_i
|
166
|
-
}
|
167
|
-
}
|
168
|
-
|
169
|
-
# the output of certain versions of pvdisplay -c reports a blatantly incorrect
|
170
|
-
# physical volume total size. the workaround is to calculate the actual total size
|
171
|
-
# via (total extents * extent size)
|
172
|
-
#
|
173
|
-
# this may or may not be GPT related
|
174
|
-
#
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
|
179
|
-
d = {}
|
180
|
-
|
181
|
-
d[:@mounts] = (Hash[mounts.select{|k,v| k =~ /^\/dev\/((h|s|xv|v)d|mapper|vgc)/ }].values rescue nil)
|
182
|
-
d[:lvm] = {
|
183
|
-
:@groups => vg.values
|
184
|
-
} unless vg.values.empty?
|
185
|
-
|
186
|
-
d[:@smart] = Facter.value('smart')
|
187
|
-
|
188
|
-
d[:@block] = blocks unless blocks.empty?
|
189
|
-
|
190
|
-
stat :disk, d.compact
|
191
|
-
end
|