riemann-babbler 2.0.0pre10 → 2.0.0pre11

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/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: