riemann-tools 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/riemann-proc +48 -0
- metadata +4 -2
data/bin/riemann-proc
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Reports running process count to riemann.
|
4
|
+
|
5
|
+
require File.expand_path('../../lib/riemann/tools', __FILE__)
|
6
|
+
|
7
|
+
class Riemann::Tools::Proc
|
8
|
+
include Riemann::Tools
|
9
|
+
|
10
|
+
opt :proc_regex, "regular expression that matches the process to be monitored", type: :string
|
11
|
+
opt :proc_min_critical, "running process count minimum", :default => 1
|
12
|
+
opt :proc_max_critical, "running process count maximum", :default => 1
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
@limits = { :critical => { :min => opts[:proc_min_critical], :max => opts[:proc_max_critical] } }
|
16
|
+
|
17
|
+
abort "FATAL: specify a process regular expression, see --help for usage" unless opts[:proc_regex]
|
18
|
+
|
19
|
+
ostype = `uname -s`.chomp.downcase
|
20
|
+
puts "WARNING: OS '#{ostype}' not explicitly supported. Falling back to Linux" unless ostype == "linux"
|
21
|
+
@check = method :linux_proc
|
22
|
+
end
|
23
|
+
|
24
|
+
def alert(service, state, metric, description)
|
25
|
+
report(
|
26
|
+
:service => service.to_s,
|
27
|
+
:state => state.to_s,
|
28
|
+
:metric => metric.to_f,
|
29
|
+
:description => description
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
def linux_proc
|
34
|
+
process = opts[:proc_regex]
|
35
|
+
running = Integer(`ps axo args | grep #{process} | grep -v grep | grep -v riemann-proc | wc -l`)
|
36
|
+
if running > @limits[:critical][:max] or running < @limits[:critical][:min]
|
37
|
+
alert "proc #{process}", :critical, running, "process #{process} is running #{running} instances"
|
38
|
+
else
|
39
|
+
alert "proc #{process}", :ok, running, "process #{process} is running #{running} instances"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def tick
|
44
|
+
@check.call
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
Riemann::Tools::Proc.run
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riemann-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
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-10-
|
12
|
+
date: 2013-10-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: riemann-client
|
@@ -147,6 +147,7 @@ executables:
|
|
147
147
|
- riemann-resmon
|
148
148
|
- riemann-redis-slowlog
|
149
149
|
- riemann-bench
|
150
|
+
- riemann-proc
|
150
151
|
- riemann-freeswitch
|
151
152
|
- riemann-elb-metrics
|
152
153
|
- riemann-riak
|
@@ -183,6 +184,7 @@ files:
|
|
183
184
|
- bin/riemann-munin
|
184
185
|
- bin/riemann-net
|
185
186
|
- bin/riemann-nginx-status
|
187
|
+
- bin/riemann-proc
|
186
188
|
- bin/riemann-rabbitmq
|
187
189
|
- bin/riemann-redis
|
188
190
|
- bin/riemann-redis-slowlog
|