riemann-babbler 2.0.0pre10 → 2.0.0pre11

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- riemann-babbler (2.0.0pre10)
4
+ riemann-babbler (2.0.0pre11)
5
5
  configatron
6
6
  docile
7
7
  file-tail
data/bin/riemann-babbler CHANGED
@@ -32,6 +32,7 @@ where [options] are:
32
32
  #todo: opt :log_format, 'Log format', :default => '%Y-%m-%d %H:%M:%S'
33
33
  opt :plugins_directory, 'Directory for plugins', :default => '/usr/share/riemann-babbler/plugins'
34
34
  opt :tcp, 'Use TCP transport instead of UDP (improves reliability, slight overhead.', :default => true
35
+ opt :minimize_event_count, 'Minimize count of sent messages', :default => true
35
36
  opt :responder_port, 'Port to bind responder', :default => 55755
36
37
  end
37
38
 
@@ -29,11 +29,13 @@ module Riemann
29
29
  attr_reader :riemann, :plugin_name, :plugin, :errors
30
30
 
31
31
  def initialize(riemann)
32
- @riemann = riemann
33
- @storage = Hash.new
34
- @plugin_name = name_to_underscore(self.class.name)
35
- @plugin = opts.plugins.send(plugin_name)
36
- @errors = opts.errors.send(plugin_name)
32
+ @riemann = riemann
33
+ @storage = Hash.new
34
+ @storage['last_state'] = Hash.new
35
+ @storage['last_metric'] = Hash.new
36
+ @plugin_name = name_to_underscore(self.class.name)
37
+ @plugin = opts.plugins.send(plugin_name)
38
+ @errors = opts.errors.send(plugin_name)
37
39
  set_default
38
40
  init
39
41
  end
@@ -71,25 +73,29 @@ module Riemann
71
73
  report_with_diff(event) and return if event[:as_diff]
72
74
  event[:metric] = event[:metric].round(2) if event[:metric].kind_of? Float
73
75
  event[:state] = get_state(event)
74
- riemann << event
76
+ riemann << event if not_minimize_sent_event(event)
77
+ set_last_event(event)
75
78
  end
76
79
 
80
+
81
+ ### Helper for reports ###
82
+
77
83
  def report_with_diff(event)
78
84
  current_metric = event[:metric]
79
- old_metric = @storage[event[:service]]
85
+ old_metric = @storage['last_metric'][event[:service]]
80
86
  if old_metric && current_metric + old_metric < 2**64
81
87
  event[:metric] = current_metric - old_metric
82
88
  event.delete(:as_diff)
83
89
  report(event)
84
90
  end
85
- @storage[event[:service]] = current_metric
91
+ @storage['last_metric'][event[:service]] = current_metric
86
92
  end
87
93
 
88
94
  #@return state
89
95
  def get_state(event)
90
96
  return event[:state] if event[:state]
91
- metric = event[:metric].to_f
92
- return State::CRITICAL if metric.nil? #todo: неправильно здесь возврашать nil, это ошибка плагина!!!
97
+ return event[:state] if event[:metric].nil?
98
+ metric = event[:metric].to_f
93
99
  warning = plugin.states.warning.nil? ? nil : plugin.states.warning
94
100
  critical = plugin.states.critical.nil? ? nil : plugin.states.critical
95
101
  return State::OK if (warning || critical).nil?
@@ -111,6 +117,22 @@ module Riemann
111
117
  end
112
118
  end
113
119
 
120
+ #@return true if event may be sended
121
+ def not_minimize_sent_event(event)
122
+ return true if !opts.riemann.minimize_event_count # нет задачи минизировать
123
+ return true if event[:metric] # если есть метрика - надо отослать graphite
124
+ return true if event[:state] != State::OK # все предупреждения отсылаем
125
+ return true if @storage['last_state'][event[:service]] != State::OK
126
+ log :debug, "Skip send event #{event}"
127
+ false
128
+ end
129
+
130
+ def set_last_event(event)
131
+ # тут пока только last_state
132
+ @storage['last_state'][event[:service]] = event[:state] if opts.riemann.minimize_event_count
133
+ end
134
+
135
+ ### Errors ###
114
136
  def plugin_error!(msg)
115
137
  errors.count += 1
116
138
  log :error, "#{plugin.service} error num #{errors.count}:\n #{msg}"
@@ -1,5 +1,5 @@
1
1
  module Riemann
2
2
  module Babbler
3
- VERSION = '2.0.0pre10'
3
+ VERSION = '2.0.0pre11'
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: 2.0.0pre10
4
+ version: 2.0.0pre11
5
5
  prerelease: 5
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-30 00:00:00.000000000 Z
12
+ date: 2013-10-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: riemann-client
@@ -287,7 +287,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
287
287
  version: '0'
288
288
  segments:
289
289
  - 0
290
- hash: -2904417507755726452
290
+ hash: -1211602378390530689
291
291
  required_rubygems_version: !ruby/object:Gem::Requirement
292
292
  none: false
293
293
  requirements: