riemann-tools 1.2.0 → 1.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fa8ed5841e8d5c02ee08180af284269ca1382e174a2dfd98b28de23227a44f61
4
- data.tar.gz: 3ec31579be24a493017091aaa928b6cbd091c2d578a7d577d868ac2857e7be3d
3
+ metadata.gz: f5a792bfad2f53aed8b440a4077dfe9cb062fa93634ca2a89d6a1ee0d95b9d58
4
+ data.tar.gz: 3a66ce44d7ce2c1c092e2730d7648fb2175dc3c145d227a1800dc67d1d9aec8d
5
5
  SHA512:
6
- metadata.gz: a5554c62f5ce95494f5ed677ccd6933224121c9d227bc9318ec54bed380e0635f1140fbfc5cf8cd3e2ecc919fc267c12f8fb8c47da58345925c69c6d19c82a51
7
- data.tar.gz: a1e3a370c5a325eb6acd59c1ad23fb3efcde20f8ff467d75a84c1e52e1f7cd2cd3102d5045bb11bfd43a43f12b01c0823c2b08f6fa75fd1e33ae50818ffa0e02
6
+ metadata.gz: 70e5dd74454d5306a10ced4e20428b900e8ef94d8b1c245db5d10be2460342e1b8b9de10de789091a87c06b2e9131dfb427824353ac25ca1435d84b0b15dd99a
7
+ data.tar.gz: 38c2b16254f90c75badf6f0d44cd99d7b5cf880dbabe4e985248d58a90f2c34ac87cd4da470b915d459a53bae7bcfd0628464c917893a4cdac6d578987d85af3
data/.gitignore CHANGED
@@ -5,4 +5,4 @@ pkg/
5
5
  .DS_Store
6
6
  .*.swp
7
7
  *.log
8
- lib/riemann/tools/uptime_parser.tab.rb
8
+ lib/riemann/tools/*_parser.tab.rb
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  AllCops:
3
3
  Exclude:
4
- - lib/riemann/tools/uptime_parser.tab.rb
4
+ - lib/riemann/tools/*_parser.tab.rb
5
5
  - vendor/bundle/**/*
6
6
  Gemspec/RequiredRubyVersion:
7
7
  Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## [v1.3.0](https://github.com/riemann/riemann-tools/tree/v1.3.0) (2022-08-29)
4
+
5
+ [Full Changelog](https://github.com/riemann/riemann-tools/compare/v1.2.0...v1.3.0)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - Add support for configuration file to riemann-wrapper [\#235](https://github.com/riemann/riemann-tools/pull/235) ([smortex](https://github.com/smortex))
10
+ - Add `riemann-md` to monitor Linux RAID/md health [\#232](https://github.com/riemann/riemann-tools/pull/232) ([smortex](https://github.com/smortex))
11
+ - Add `riemann-zpool` to monitor zpool health [\#231](https://github.com/riemann/riemann-tools/pull/231) ([smortex](https://github.com/smortex))
12
+
13
+ **Fixed bugs:**
14
+
15
+ - Fix race condition in riemann-wrapper [\#233](https://github.com/riemann/riemann-tools/pull/233) ([smortex](https://github.com/smortex))
16
+
17
+ **Closed issues:**
18
+
19
+ - There is some kind of race condition in riemann-wrapper [\#230](https://github.com/riemann/riemann-tools/issues/230)
20
+
21
+ **Merged pull requests:**
22
+
23
+ - Stop riemann-wrapper if a tool raise an error [\#234](https://github.com/riemann/riemann-tools/pull/234) ([smortex](https://github.com/smortex))
24
+
3
25
  ## [v1.2.0](https://github.com/riemann/riemann-tools/tree/v1.2.0) (2022-08-17)
4
26
 
5
27
  [Full Changelog](https://github.com/riemann/riemann-tools/compare/v1.1.1...v1.2.0)
data/Rakefile CHANGED
@@ -22,8 +22,15 @@ end
22
22
 
23
23
  task build: :gen_parser
24
24
 
25
- desc 'Generate the uptime parser'
26
- task gen_parser: 'lib/riemann/tools/uptime_parser.tab.rb'
25
+ desc 'Generate parsers'
26
+ task gen_parser: [
27
+ 'lib/riemann/tools/mdstat_parser.tab.rb',
28
+ 'lib/riemann/tools/uptime_parser.tab.rb',
29
+ ]
30
+
31
+ file 'lib/riemann/tools/mdstat_parser.tab.rb' => 'lib/riemann/tools/mdstat_parser.y' do
32
+ sh 'racc -S lib/riemann/tools/mdstat_parser.y'
33
+ end
27
34
 
28
35
  file 'lib/riemann/tools/uptime_parser.tab.rb' => 'lib/riemann/tools/uptime_parser.y' do
29
36
  sh 'racc -S lib/riemann/tools/uptime_parser.y'
data/bin/riemann-md ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ Process.setproctitle($PROGRAM_NAME)
5
+
6
+ require 'riemann/tools/md'
7
+
8
+ Riemann::Tools::Md.run
data/bin/riemann-wrapper CHANGED
@@ -27,9 +27,10 @@ def read_flags(argv)
27
27
  res
28
28
  end
29
29
 
30
- if ARGV.empty?
30
+ def usage
31
31
  warn <<~USAGE
32
32
  usage: riemann-wrapper [common options] -- tool1 [tool1 options] [-- tool2 [tool2 options] ...]
33
+ riemann-wrapper /path/to/configuration/file.yml
33
34
 
34
35
  Run multiple Riemann tools in a single process. A single connection to
35
36
  riemann is maintained and shared for all tools, the connection flags should
@@ -47,16 +48,53 @@ if ARGV.empty?
47
48
  fd --tag=fd -- \\
48
49
  health --tag=health -- \\
49
50
  ntp --tag=ntp
51
+
52
+ 3. Same as above example, but using a configuration file (more verbose but
53
+ easier to handle when running riemann-wrapper manually of managing it
54
+ with a Configuration Management system):
55
+
56
+ cat > config.yml << EOT
57
+ ---
58
+ options: --host riemann.example.com --tcp
59
+ tools:
60
+ - name: fd
61
+ options: --tag=fd
62
+ - name: health
63
+ options: --tag=health
64
+ - name: ntp
65
+ options: --tag=ntp
66
+ EOT
67
+ riemann-wrapper config.yml
50
68
  USAGE
51
69
  exit 1
52
70
  end
53
71
 
72
+ usage if ARGV.empty?
73
+
74
+ if ARGV.size == 1
75
+ unless File.readable?(ARGV[0])
76
+ warn "Cannot open file for reading: #{ARGV[0]}"
77
+ usage
78
+ end
79
+
80
+ require 'yaml'
81
+ config = YAML.safe_load(File.read(ARGV[0]))
82
+
83
+ commandline = config['options']
84
+ config['tools'].each { |tool| commandline << " -- #{tool['name']} #{tool['options']}" }
85
+
86
+ ARGV.replace(commandline.split)
87
+ end
88
+
54
89
  argv = ARGV.dup
55
90
 
56
91
  common_argv = read_flags(argv)
57
92
 
58
93
  threads = []
59
94
 
95
+ # Terminate the whole process is some thread fail
96
+ Thread.abort_on_exception = true
97
+
60
98
  while argv.any?
61
99
  tool = argv.shift
62
100
  tool_argv = read_flags(argv)
@@ -69,7 +107,7 @@ while argv.any?
69
107
  # Force evaluation of options. This rely on ARGV and needs to be done before
70
108
  # we launch multiple threads which compete to read information from there.
71
109
  instance.options
72
- threads << Thread.new { instance.run }
110
+ threads << Thread.new(instance, &:run)
73
111
  end
74
112
 
75
113
  threads.each(&:join)
data/bin/riemann-zpool ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ Process.setproctitle($PROGRAM_NAME)
5
+
6
+ require 'riemann/tools/zpool'
7
+
8
+ Riemann::Tools::Zpool.run
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'riemann/tools'
4
+ require 'riemann/tools/mdstat_parser.tab'
5
+
6
+ module Riemann
7
+ module Tools
8
+ class Md
9
+ include Riemann::Tools
10
+
11
+ def mdstat_parser
12
+ @mdstat_parser ||= MdstatParser.new
13
+ end
14
+
15
+ def tick
16
+ status = File.read('/proc/mdstat')
17
+ res = mdstat_parser.parse(status)
18
+
19
+ state = res.values.all? { |value| value =~ /\AU+\z/ } ? 'ok' : 'critical'
20
+
21
+ report(
22
+ service: 'mdstat',
23
+ message: status,
24
+ state: state,
25
+ )
26
+ rescue Errno::ENOENT => e
27
+ report(
28
+ service: 'mdstat',
29
+ message: e.message,
30
+ state: 'critical',
31
+ )
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,340 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by Racc 1.6.0
4
+ # from Racc grammar file "".
5
+ #
6
+
7
+ require 'racc/parser.rb'
8
+
9
+
10
+ require 'strscan'
11
+
12
+ module Riemann
13
+ module Tools
14
+ class MdstatParser < Racc::Parser
15
+
16
+ module_eval(<<'...end mdstat_parser.y/module_eval...', 'mdstat_parser.y', 42)
17
+
18
+ def parse(text)
19
+ s = StringScanner.new(text)
20
+ @tokens = []
21
+
22
+ until s.eos? do
23
+ case
24
+ when s.scan(/\n/) then # ignore
25
+ when s.scan(/\s+/) then # ignore
26
+
27
+ when s.scan(/\[=*>.*\]/) then @tokens << [:PROGRESS, s.matched]
28
+ when s.scan(/%/) then @tokens << ['%', s.matched]
29
+ when s.scan(/,/) then @tokens << [',', s.matched]
30
+ when s.scan(/:/) then @tokens << [':', s.matched]
31
+ when s.scan(/</) then @tokens << ['<', s.matched]
32
+ when s.scan(/=/) then @tokens << ['=', s.matched]
33
+ when s.scan(/>/) then @tokens << ['>', s.matched]
34
+ when s.scan(/\(/) then @tokens << ['(', s.matched]
35
+ when s.scan(/\)/) then @tokens << [')', s.matched]
36
+ when s.scan(/\./) then @tokens << ['.', s.matched]
37
+ when s.scan(/\//) then @tokens << ['/', s.matched]
38
+ when s.scan(/\[/) then @tokens << ['[', s.matched]
39
+ when s.scan(/]/) then @tokens << [']', s.matched]
40
+ when s.scan(/algorithm/) then @tokens << [:ALGORITHM, s.matched]
41
+ when s.scan(/bitmap/) then @tokens << [:BITMAP, s.matched]
42
+ when s.scan(/blocks/) then @tokens << [:BLOCKS, s.matched]
43
+ when s.scan(/chunk/) then @tokens << [:CHUNK, s.matched]
44
+ when s.scan(/finish/) then @tokens << [:FINISH, s.matched]
45
+ when s.scan(/level/) then @tokens << [:LEVEL, s.matched]
46
+ when s.scan(/min/) then @tokens << [:MIN, s.matched]
47
+ when s.scan(/pages/) then @tokens << [:PAGES, s.matched]
48
+ when s.scan(/(raid([014-6]|10)|linear|multipath|faulty)\b/) then @tokens << [:PERSONALITY, s.matched]
49
+ when s.scan(/Personalities/) then @tokens << [:PERSONALITIES, s.matched]
50
+ when s.scan(/recovery/) then @tokens << [:RECOVERY, s.matched]
51
+ when s.scan(/speed/) then @tokens << [:SPEED, s.matched]
52
+ when s.scan(/super/) then @tokens << [:SUPER, s.matched]
53
+ when s.scan(/unused devices/) then @tokens << [:UNUSED_DEVICES, s.matched]
54
+ when s.scan(/K\/sec/) then @tokens << [:SPEED_UNIT, s.matched.to_i]
55
+ when s.scan(/KB/) then @tokens << [:BYTE_UNIT, s.matched.to_i]
56
+ when s.scan(/k/) then @tokens << [:UNIT, s.matched.to_i]
57
+ when s.scan(/\d+\.\d+/) then @tokens << [:FLOAT, s.matched.to_i]
58
+ when s.scan(/\d+/) then @tokens << [:INTEGER, s.matched.to_i]
59
+ when s.scan(/F\b/) then @tokens << [:FAILED, s.matched.to_i]
60
+ when s.scan(/\w+/) then @tokens << [:IDENTIFIER, s.matched]
61
+ else
62
+ raise s.rest
63
+ end
64
+ end
65
+
66
+ do_parse
67
+ end
68
+
69
+ def next_token
70
+ @tokens.shift
71
+ end
72
+ ...end mdstat_parser.y/module_eval...
73
+ ##### State transition tables begin ###
74
+
75
+ racc_action_table = [
76
+ 10, 13, 14, 10, 29, 3, 4, 6, 7, 15,
77
+ 16, 17, 18, 11, 19, 20, 21, 22, 23, 24,
78
+ 10, 27, 28, 31, 32, 33, 35, 37, 38, 39,
79
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
80
+ 50, 51, 52, 53, 54, 56, 58, 59, 60, 61,
81
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
82
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
83
+ 82, 83, 84, 85, 86, 87, 88 ]
84
+
85
+ racc_action_check = [
86
+ 5, 10, 10, 25, 25, 0, 1, 3, 4, 11,
87
+ 12, 13, 14, 5, 15, 16, 17, 18, 19, 20,
88
+ 21, 22, 23, 27, 29, 31, 32, 34, 35, 36,
89
+ 37, 39, 40, 41, 42, 43, 44, 45, 46, 47,
90
+ 48, 49, 50, 51, 52, 53, 55, 56, 58, 59,
91
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
92
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
93
+ 80, 81, 82, 84, 85, 86, 87 ]
94
+
95
+ racc_action_pointer = [
96
+ -10, 6, nil, -17, 8, -10, nil, nil, nil, nil,
97
+ -23, -15, -15, 1, 1, -19, -1, 0, -9, 8,
98
+ -7, 10, -7, -12, nil, -7, nil, 16, nil, 20,
99
+ nil, -4, 5, nil, 15, 19, 4, 19, nil, 20,
100
+ 2, 6, 23, 24, 14, 11, 32, 14, 10, 31,
101
+ 40, 17, 33, 42, nil, 29, 23, nil, 30, 38,
102
+ 19, 24, 43, 42, 22, 41, 28, 32, 47, 48,
103
+ 33, 56, 51, 37, 35, 35, 58, 56, 37, 64,
104
+ 61, 65, 59, nil, 54, 43, 64, 56, nil ]
105
+
106
+ racc_action_default = [
107
+ -21, -21, -6, -21, -21, -21, -4, 89, -1, -5,
108
+ -21, -21, -2, -21, -21, -21, -21, -21, -21, -21,
109
+ -21, -21, -11, -21, -3, -21, -9, -21, -20, -21,
110
+ -8, -21, -13, -10, -15, -21, -21, -21, -12, -21,
111
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
112
+ -21, -21, -21, -17, -14, -19, -21, -7, -21, -21,
113
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
114
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
115
+ -21, -21, -21, -16, -21, -21, -21, -21, -18 ]
116
+
117
+ racc_goto_table = [
118
+ 9, 1, 2, 5, 8, 12, 25, 34, 36, 55,
119
+ 57, nil, nil, nil, nil, nil, 26, nil, nil, nil,
120
+ 30 ]
121
+
122
+ racc_goto_check = [
123
+ 6, 1, 2, 3, 4, 5, 7, 8, 9, 10,
124
+ 11, nil, nil, nil, nil, nil, 6, nil, nil, nil,
125
+ 6 ]
126
+
127
+ racc_goto_pointer = [
128
+ nil, 1, 2, 1, -1, -1, -5, -15, -25, -26,
129
+ -44, -45 ]
130
+
131
+ racc_goto_default = [
132
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
133
+ nil, nil ]
134
+
135
+ racc_reduce_table = [
136
+ 0, 0, :racc_error,
137
+ 3, 36, :_reduce_1,
138
+ 3, 37, :_reduce_none,
139
+ 4, 40, :_reduce_none,
140
+ 0, 40, :_reduce_none,
141
+ 2, 38, :_reduce_5,
142
+ 0, 38, :_reduce_6,
143
+ 19, 41, :_reduce_7,
144
+ 2, 42, :_reduce_none,
145
+ 1, 42, :_reduce_none,
146
+ 7, 41, :_reduce_none,
147
+ 4, 41, :_reduce_none,
148
+ 2, 43, :_reduce_none,
149
+ 0, 43, :_reduce_none,
150
+ 9, 44, :_reduce_none,
151
+ 0, 44, :_reduce_none,
152
+ 14, 45, :_reduce_none,
153
+ 0, 45, :_reduce_none,
154
+ 18, 46, :_reduce_none,
155
+ 0, 46, :_reduce_none,
156
+ 5, 39, :_reduce_none ]
157
+
158
+ racc_reduce_n = 21
159
+
160
+ racc_shift_n = 89
161
+
162
+ racc_token_table = {
163
+ false => 0,
164
+ :error => 1,
165
+ :ALGORITHM => 2,
166
+ :BITMAP => 3,
167
+ :BLOCKS => 4,
168
+ :BYTE_UNIT => 5,
169
+ :CHUNK => 6,
170
+ :FAILED => 7,
171
+ :FINISH => 8,
172
+ :FLOAT => 9,
173
+ :IDENTIFIER => 10,
174
+ :INTEGER => 11,
175
+ :LEVEL => 12,
176
+ :MIN => 13,
177
+ :PAGES => 14,
178
+ :PERSONALITIES => 15,
179
+ :PERSONALITY => 16,
180
+ :PROGRESS => 17,
181
+ :RECOVERY => 18,
182
+ :SPEED => 19,
183
+ :SPEED_UNIT => 20,
184
+ :SUPER => 21,
185
+ :UNIT => 22,
186
+ :UNUSED_DEVICES => 23,
187
+ ":" => 24,
188
+ "[" => 25,
189
+ "]" => 26,
190
+ "/" => 27,
191
+ "(" => 28,
192
+ ")" => 29,
193
+ "," => 30,
194
+ "=" => 31,
195
+ "%" => 32,
196
+ "<" => 33,
197
+ ">" => 34 }
198
+
199
+ racc_nt_base = 35
200
+
201
+ racc_use_result_var = true
202
+
203
+ Racc_arg = [
204
+ racc_action_table,
205
+ racc_action_check,
206
+ racc_action_default,
207
+ racc_action_pointer,
208
+ racc_goto_table,
209
+ racc_goto_check,
210
+ racc_goto_default,
211
+ racc_goto_pointer,
212
+ racc_nt_base,
213
+ racc_reduce_table,
214
+ racc_token_table,
215
+ racc_shift_n,
216
+ racc_reduce_n,
217
+ racc_use_result_var ]
218
+
219
+ Racc_token_to_s_table = [
220
+ "$end",
221
+ "error",
222
+ "ALGORITHM",
223
+ "BITMAP",
224
+ "BLOCKS",
225
+ "BYTE_UNIT",
226
+ "CHUNK",
227
+ "FAILED",
228
+ "FINISH",
229
+ "FLOAT",
230
+ "IDENTIFIER",
231
+ "INTEGER",
232
+ "LEVEL",
233
+ "MIN",
234
+ "PAGES",
235
+ "PERSONALITIES",
236
+ "PERSONALITY",
237
+ "PROGRESS",
238
+ "RECOVERY",
239
+ "SPEED",
240
+ "SPEED_UNIT",
241
+ "SUPER",
242
+ "UNIT",
243
+ "UNUSED_DEVICES",
244
+ "\":\"",
245
+ "\"[\"",
246
+ "\"]\"",
247
+ "\"/\"",
248
+ "\"(\"",
249
+ "\")\"",
250
+ "\",\"",
251
+ "\"=\"",
252
+ "\"%\"",
253
+ "\"<\"",
254
+ "\">\"",
255
+ "$start",
256
+ "target",
257
+ "personalities",
258
+ "devices",
259
+ "unused_devices",
260
+ "list_of_personalities",
261
+ "device",
262
+ "list_of_devices",
263
+ "super",
264
+ "level",
265
+ "bitmap",
266
+ "restore_progress" ]
267
+
268
+ Racc_debug_parser = false
269
+
270
+ ##### State transition tables end #####
271
+
272
+ # reduce 0 omitted
273
+
274
+ module_eval(<<'.,.,', 'mdstat_parser.y', 3)
275
+ def _reduce_1(val, _values, result)
276
+ result = val[1]
277
+ result
278
+ end
279
+ .,.,
280
+
281
+ # reduce 2 omitted
282
+
283
+ # reduce 3 omitted
284
+
285
+ # reduce 4 omitted
286
+
287
+ module_eval(<<'.,.,', 'mdstat_parser.y', 10)
288
+ def _reduce_5(val, _values, result)
289
+ result = val[0].merge(val[1])
290
+ result
291
+ end
292
+ .,.,
293
+
294
+ module_eval(<<'.,.,', 'mdstat_parser.y', 11)
295
+ def _reduce_6(val, _values, result)
296
+ result = {}
297
+ result
298
+ end
299
+ .,.,
300
+
301
+ module_eval(<<'.,.,', 'mdstat_parser.y', 13)
302
+ def _reduce_7(val, _values, result)
303
+ result = { val[0] => val[15] }
304
+ result
305
+ end
306
+ .,.,
307
+
308
+ # reduce 8 omitted
309
+
310
+ # reduce 9 omitted
311
+
312
+ # reduce 10 omitted
313
+
314
+ # reduce 11 omitted
315
+
316
+ # reduce 12 omitted
317
+
318
+ # reduce 13 omitted
319
+
320
+ # reduce 14 omitted
321
+
322
+ # reduce 15 omitted
323
+
324
+ # reduce 16 omitted
325
+
326
+ # reduce 17 omitted
327
+
328
+ # reduce 18 omitted
329
+
330
+ # reduce 19 omitted
331
+
332
+ # reduce 20 omitted
333
+
334
+ def _reduce_none(val, _values, result)
335
+ val[0]
336
+ end
337
+
338
+ end # class MdstatParser
339
+ end # module Tools
340
+ end # module Riemann
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Riemann
4
4
  module Tools # :nodoc:
5
- VERSION = '1.2.0'
5
+ VERSION = '1.3.0'
6
6
  end
7
7
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'open3'
4
+
5
+ require 'riemann/tools'
6
+
7
+ module Riemann
8
+ module Tools
9
+ class Zpool
10
+ include Riemann::Tools
11
+
12
+ def tick
13
+ output, status = Open3.capture2e('zpool status -x')
14
+
15
+ report(
16
+ service: 'zpool health',
17
+ message: output,
18
+ state: status.success? ? 'ok' : 'critical',
19
+ )
20
+ rescue Errno::ENOENT => e
21
+ report(
22
+ service: 'zpool health',
23
+ message: e.message,
24
+ state: 'critical',
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
@@ -24,8 +24,14 @@ Gem::Specification.new do |spec|
24
24
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
25
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
26
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } -
27
- ['lib/riemann/tools/uptime_parser.y'] +
28
- ['lib/riemann/tools/uptime_parser.tab.rb']
27
+ [
28
+ 'lib/riemann/tools/mdstat_parser.y',
29
+ 'lib/riemann/tools/uptime_parser.y',
30
+ ] +
31
+ [
32
+ 'lib/riemann/tools/mdstat_parser.tab.rb',
33
+ 'lib/riemann/tools/uptime_parser.tab.rb',
34
+ ]
29
35
  end
30
36
  spec.bindir = 'bin'
31
37
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riemann-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Kingsbury
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-17 00:00:00.000000000 Z
11
+ date: 2022-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -172,6 +172,7 @@ executables:
172
172
  - riemann-haproxy
173
173
  - riemann-health
174
174
  - riemann-kvminstance
175
+ - riemann-md
175
176
  - riemann-memcached
176
177
  - riemann-net
177
178
  - riemann-nginx-status
@@ -181,6 +182,7 @@ executables:
181
182
  - riemann-varnish
182
183
  - riemann-wrapper
183
184
  - riemann-zookeeper
185
+ - riemann-zpool
184
186
  extensions: []
185
187
  extra_rdoc_files: []
186
188
  files:
@@ -212,6 +214,7 @@ files:
212
214
  - bin/riemann-haproxy
213
215
  - bin/riemann-health
214
216
  - bin/riemann-kvminstance
217
+ - bin/riemann-md
215
218
  - bin/riemann-memcached
216
219
  - bin/riemann-net
217
220
  - bin/riemann-nginx-status
@@ -221,6 +224,7 @@ files:
221
224
  - bin/riemann-varnish
222
225
  - bin/riemann-wrapper
223
226
  - bin/riemann-zookeeper
227
+ - bin/riemann-zpool
224
228
  - lib/riemann/tools.rb
225
229
  - lib/riemann/tools/apache_status.rb
226
230
  - lib/riemann/tools/bench.rb
@@ -234,6 +238,8 @@ files:
234
238
  - lib/riemann/tools/haproxy.rb
235
239
  - lib/riemann/tools/health.rb
236
240
  - lib/riemann/tools/kvm.rb
241
+ - lib/riemann/tools/md.rb
242
+ - lib/riemann/tools/mdstat_parser.tab.rb
237
243
  - lib/riemann/tools/memcached.rb
238
244
  - lib/riemann/tools/net.rb
239
245
  - lib/riemann/tools/nginx_status.rb
@@ -246,6 +252,7 @@ files:
246
252
  - lib/riemann/tools/varnish.rb
247
253
  - lib/riemann/tools/version.rb
248
254
  - lib/riemann/tools/zookeeper.rb
255
+ - lib/riemann/tools/zpool.rb
249
256
  - riemann-tools.gemspec
250
257
  - tools/riemann-aws/LICENSE
251
258
  - tools/riemann-aws/README.md
@@ -314,7 +321,7 @@ metadata:
314
321
  homepage_uri: https://github.com/aphyr/riemann-tools
315
322
  source_code_uri: https://github.com/aphyr/riemann-tools
316
323
  changelog_uri: https://github.com/aphyr/riemann-tools
317
- post_install_message:
324
+ post_install_message:
318
325
  rdoc_options: []
319
326
  require_paths:
320
327
  - lib
@@ -329,8 +336,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
329
336
  - !ruby/object:Gem::Version
330
337
  version: '0'
331
338
  requirements: []
332
- rubygems_version: 3.2.5
333
- signing_key:
339
+ rubygems_version: 3.3.19
340
+ signing_key:
334
341
  specification_version: 4
335
342
  summary: Utilities which submit events to Riemann.
336
343
  test_files: []