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 +1 -1
- data/bin/riemann-babbler +1 -0
- data/lib/riemann/babbler/plugin.rb +32 -10
- data/lib/riemann/babbler/version.rb +1 -1
- metadata +3 -3
data/Gemfile.lock
CHANGED
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
|
33
|
-
@storage
|
34
|
-
@
|
35
|
-
@
|
36
|
-
@
|
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
|
-
|
92
|
-
|
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}"
|
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.
|
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-
|
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: -
|
290
|
+
hash: -1211602378390530689
|
291
291
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
292
292
|
none: false
|
293
293
|
requirements:
|