riemann-babbler 0.4.9 → 0.5.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.
- data/config.yml +2 -2
- data/lib/riemann/babbler/plugin.rb +2 -37
- data/lib/riemann/babbler/plugin_helpers.rb +52 -0
- data/lib/riemann/babbler/plugins/cpu.rb +29 -18
- data/lib/riemann/babbler/plugins/memory.rb +4 -3
- data/lib/riemann/version.rb +1 -1
- metadata +4 -3
data/config.yml
CHANGED
@@ -7,6 +7,8 @@ logger:
|
|
7
7
|
|
8
8
|
plugins:
|
9
9
|
|
10
|
+
interval: 60
|
11
|
+
|
10
12
|
dummy:
|
11
13
|
service: keep alive
|
12
14
|
interval: 1
|
@@ -35,8 +37,6 @@ plugins:
|
|
35
37
|
memory:
|
36
38
|
service: memory
|
37
39
|
interval: 1
|
38
|
-
report_free: true
|
39
|
-
report_total: true
|
40
40
|
states:
|
41
41
|
warning: 0.6
|
42
42
|
critical: 0.8
|
@@ -1,5 +1,7 @@
|
|
1
1
|
#encoding: utf-8
|
2
2
|
|
3
|
+
require File.expand_path('../plugin_helpers', __FILE__)
|
4
|
+
|
3
5
|
# Базовое описание плагина
|
4
6
|
module Riemann
|
5
7
|
class Babbler
|
@@ -126,42 +128,5 @@ module Riemann
|
|
126
128
|
end
|
127
129
|
end
|
128
130
|
|
129
|
-
# хэлпер для парса stdout+stderr и exit status
|
130
|
-
def shell(*cmd)
|
131
|
-
exit_status=nil
|
132
|
-
err=nil
|
133
|
-
out=nil
|
134
|
-
Timeout::timeout(5) {
|
135
|
-
Open3.popen3(*cmd) do |stdin, stdout, stderr, wait_thread|
|
136
|
-
err = stderr.gets(nil)
|
137
|
-
out = stdout.gets(nil)
|
138
|
-
[stdin, stdout, stderr].each{|stream| stream.send('close')}
|
139
|
-
exit_status = wait_thread.value
|
140
|
-
end
|
141
|
-
}
|
142
|
-
if exit_status.to_i > 0
|
143
|
-
err = err.chomp if err
|
144
|
-
raise err
|
145
|
-
elsif out
|
146
|
-
return out.chomp
|
147
|
-
else
|
148
|
-
# статус 0, вывода stdout нет
|
149
|
-
return ""
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
# http rest
|
154
|
-
def rest_get(url)
|
155
|
-
begin
|
156
|
-
RestClient.get url
|
157
|
-
rescue
|
158
|
-
report({
|
159
|
-
:service => plugin.service,
|
160
|
-
:state => 'critical',
|
161
|
-
:description => "Response from #{url}"
|
162
|
-
})
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
131
|
end
|
167
132
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
|
3
|
+
module Riemann
|
4
|
+
class Babbler
|
5
|
+
|
6
|
+
def helper_error(msg = "Unknown helper error")
|
7
|
+
report({
|
8
|
+
:service => plugin.service,
|
9
|
+
:state => 'critical',
|
10
|
+
:description => msg
|
11
|
+
})
|
12
|
+
end
|
13
|
+
|
14
|
+
# хэлпер для парса stdout+stderr и exit status
|
15
|
+
def shell(*cmd)
|
16
|
+
exit_status=nil
|
17
|
+
err=nil
|
18
|
+
out=nil
|
19
|
+
begin
|
20
|
+
Timeout::timeout(5) {
|
21
|
+
Open3.popen3(*cmd) do |stdin, stdout, stderr, wait_thread|
|
22
|
+
err = stderr.gets(nil)
|
23
|
+
out = stdout.gets(nil)
|
24
|
+
[stdin, stdout, stderr].each{|stream| stream.send('close')}
|
25
|
+
exit_status = wait_thread.value
|
26
|
+
end
|
27
|
+
}
|
28
|
+
rescue => e
|
29
|
+
helper_error "#{e.class} #{e}\n#{e.backtrace.join "\n"}"
|
30
|
+
end
|
31
|
+
if exit_status.to_i > 0
|
32
|
+
err = err.chomp if err
|
33
|
+
helper_error(err)
|
34
|
+
elsif out
|
35
|
+
return out.chomp
|
36
|
+
else
|
37
|
+
# статус 0, вывода stdout нет
|
38
|
+
return ""
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# http rest
|
43
|
+
def rest_get(url)
|
44
|
+
begin
|
45
|
+
RestClient.get url
|
46
|
+
rescue
|
47
|
+
helper_error("Get from url: #{url}")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -1,27 +1,38 @@
|
|
1
1
|
class Riemann::Babbler::Cpu < Riemann::Babbler
|
2
2
|
|
3
|
+
def desc
|
4
|
+
"usage\n\n#{shell('ps -eo pcpu,pid,cmd | sort -nrb -k1 | head -10').chomp}"
|
5
|
+
end
|
6
|
+
|
7
|
+
def init
|
8
|
+
@old_cpu = Hash.new
|
9
|
+
end
|
10
|
+
|
3
11
|
def collect
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
if @old_cpu
|
9
|
-
u1, n1, s1, i1 = @old_cpu
|
10
|
-
used = (u2+n2+s2) - (u1+n1+s1)
|
11
|
-
total = used + i2-i1
|
12
|
-
fraction = used.to_f / total
|
13
|
-
end
|
12
|
+
array = Array.new
|
13
|
+
description = desc
|
14
|
+
File.read('/proc/stat').split("\n").each do |cpu_line|
|
14
15
|
|
15
|
-
|
16
|
+
# проверяем есть строчка /cpu\d+/ или /cpu / и сграбливаем это в переменную
|
17
|
+
cpu_number = cpu_line.scan(/cpu(\d+|\s)\s+/)
|
18
|
+
next if cpu_number.empty?
|
19
|
+
cpu_number = cpu_number[0][0] == " " ? "_total" : cpu_number[0][0]
|
16
20
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
{ :service => plugin.service, :metric => fraction, :description => desc }
|
21
|
-
else
|
22
|
-
{ :service => plugin.service, :state => 'ok' }
|
23
|
-
end
|
21
|
+
# работаем со строкой
|
22
|
+
cpu_line[/cpu(\d+|\s)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/]
|
23
|
+
_, u2, n2, s2, i2 = [$1, $2, $3, $4, $5].map { |e| e.to_i }
|
24
24
|
|
25
|
+
unless @old_cpu[cpu_number].nil?
|
26
|
+
u1, n1, s1, i1 = @old_cpu[cpu_number]
|
27
|
+
used = (u2+n2+s2) - (u1+n1+s1)
|
28
|
+
total = used + i2-i1
|
29
|
+
fraction = used.to_f / total
|
30
|
+
end
|
31
|
+
|
32
|
+
@old_cpu[cpu_number] = [u2, n2, s2, i2]
|
33
|
+
array << { :service => plugin.service + " cpu#{cpu_number}", :metric => fraction, :description => description } if fraction
|
34
|
+
end
|
35
|
+
array
|
25
36
|
end
|
26
37
|
|
27
38
|
end
|
@@ -13,9 +13,10 @@ class Riemann::Babbler::Memory < Riemann::Babbler
|
|
13
13
|
desc = "usage\n\n#{shell('ps -eo pmem,pid,cmd | sort -nrb -k1 | head -10').chomp}"
|
14
14
|
|
15
15
|
[
|
16
|
-
{ :service => plugin.service, :metric => fraction },
|
17
|
-
{ :service => plugin.service + "
|
18
|
-
{ :service => plugin.service + "
|
16
|
+
{ :service => plugin.service + " free_%+Buffers+Cached", :metric => fraction },
|
17
|
+
{ :service => plugin.service + " swap_%", :metric => (m['SwapTotal'] - m['SwapFree']).to_f/m['SwapTotal'] },
|
18
|
+
{ :service => plugin.service + " free", :metric => free.to_i, :state => 'ok', :description => desc },
|
19
|
+
{ :service => plugin.service + " total", :metric => total.to_i, :state => 'ok', :description => desc }
|
19
20
|
]
|
20
21
|
end
|
21
22
|
|
data/lib/riemann/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riemann-babbler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: riemann-client
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- config.yml
|
125
125
|
- lib/deep_merge.rb
|
126
126
|
- lib/riemann/babbler/plugin.rb
|
127
|
+
- lib/riemann/babbler/plugin_helpers.rb
|
127
128
|
- lib/riemann/babbler/plugins/cpu.rb
|
128
129
|
- lib/riemann/babbler/plugins/disk.rb
|
129
130
|
- lib/riemann/babbler/plugins/dummy.rb
|
@@ -147,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
148
|
version: '0'
|
148
149
|
segments:
|
149
150
|
- 0
|
150
|
-
hash: -
|
151
|
+
hash: -2856052346844510337
|
151
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
153
|
none: false
|
153
154
|
requirements:
|