riemann-babbler 0.0.9 → 0.1.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.
@@ -5,6 +5,8 @@ module Riemann
5
5
  module Babbler
6
6
 
7
7
  require 'riemann/client'
8
+ require 'open3'
9
+ require 'timeout'
8
10
 
9
11
  def self.included(base)
10
12
  base.instance_eval do
@@ -56,10 +58,10 @@ module Riemann
56
58
  begin
57
59
  tick
58
60
  rescue => e
61
+ #report({:service => plugin.service, :status => 'critical'})
59
62
  $stderr.puts "#{e.class} #{e}\n#{e.backtrace.join "\n"}"
60
63
  end
61
64
 
62
- # Sleep.
63
65
  sleep(plugin.interval - ((Time.now - t0) % plugin.interval))
64
66
  end
65
67
  end
@@ -72,15 +74,42 @@ module Riemann
72
74
  def plugin
73
75
  end
74
76
 
77
+ # хэлпер для парса stdout+stderr и exit status
78
+ def shell(*cmd)
79
+ exit_status=nil
80
+ err=nil
81
+ out=nil
82
+ Timeout::timeout(5) {
83
+ Open3.popen3(*cmd) do |stdin, stdout, stderr, wait_thread|
84
+ err = stderr.gets(nil)
85
+ out = stdout.gets(nil)
86
+ [stdin, stdout, stderr].each{|stream| stream.send('close')}
87
+ exit_status = wait_thread.value
88
+ end
89
+ }
90
+ if exit_status.to_i > 0
91
+ err = err.chomp if err
92
+ raise err
93
+ elsif out
94
+ return out.chomp
95
+ else
96
+ return true
97
+ end
98
+ end
99
+
75
100
  # хелпер, описание статуса
76
101
  def state(my_state)
77
- case
78
- when my_state.between?(plugin.states.warning, plugin.states.critical)
79
- 'warning'
80
- when my_state > plugin.states.warning
81
- 'critical'
102
+ unless plugin.states.warning.nil?
103
+ case
104
+ when my_state.between?(plugin.states.warning, plugin.states.critical)
105
+ 'warning'
106
+ when my_state > plugin.states.warning
107
+ 'critical'
108
+ else
109
+ 'ok'
110
+ end
82
111
  else
83
- 'ok'
112
+ my_state >= plugin.states.critical ? 'critical' : 'ok'
84
113
  end
85
114
  end
86
115
 
@@ -1,5 +1,5 @@
1
1
  module Riemann
2
2
  module Babbler
3
- VERSION = '0.0.9'
3
+ VERSION = '0.1.0'
4
4
  end
5
5
  end
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.0.9
4
+ version: 0.1.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-04 00:00:00.000000000 Z
12
+ date: 2013-04-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: riemann-client
@@ -131,7 +131,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
131
  version: '0'
132
132
  segments:
133
133
  - 0
134
- hash: -1814683079144820390
134
+ hash: -1531376658486460902
135
135
  required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  none: false
137
137
  requirements: