ffwd 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 647ed80926a63a5df7f6c20d4be87b237244189d
4
- data.tar.gz: d143ffb328b1bb2720c0c5c6f91872168529e758
3
+ metadata.gz: 7b83d6d295f24ccd855c350f96f7b51ae087c89a
4
+ data.tar.gz: 43069839db9dcad2026337c4865d23e4bf03f74b
5
5
  SHA512:
6
- metadata.gz: b763d815a4154cab969ab6e580b23b9755c371e51517f40d2df40830f43ce7178838a2e2e369ce8af44f39f750c899c596f43c6b10808058958d1dacf15e448a
7
- data.tar.gz: 97a504bc1c44ff2ebe913b64427eb86a9ca08fac87159eb70f25f09cabbf6aa3150a1c7393c410473bbd226b6b105a9b44be29799e5e9ceded7c73dfbf9c8fe7
6
+ metadata.gz: d2a66bf892b67f376013ea6b1ab9426d241e20ebeb830fb5850ff520c0edd6b20f09296d999e7d839e54bc23f8aecad249a65ba8a04e75cdda0362156ca292d9
7
+ data.tar.gz: b66d163452d86cf43c44bfbd7696e4b3c5e91dd3bd26a35a05203cf15dfb9b204025c24259cad8f6e14e903a97d1b0d37d08b862ce91373e6a86a23efe6cde6b
@@ -71,13 +71,13 @@ module FFWD::TCP
71
71
 
72
72
  unless ignored.include? :events
73
73
  event_consumer = setup_consumer(
74
- @event_buffer, forced_flush_factor, event_limit, :dropped_events)
74
+ @event_buffer, event_limit, forced_flush_factor, :dropped_events)
75
75
  @subs << core.output.event_subscribe(&event_consumer)
76
76
  end
77
77
 
78
78
  unless ignored.include? :metrics
79
79
  metric_consumer = setup_consumer(
80
- @metric_buffer, forced_flush_factor, metric_limit, :dropped_metrics)
80
+ @metric_buffer, metric_limit, forced_flush_factor, :dropped_metrics)
81
81
  @subs << core.output.metric_subscribe(&metric_consumer)
82
82
  end
83
83
  end
@@ -130,9 +130,8 @@ module FFWD::TCP
130
130
 
131
131
  private
132
132
 
133
- def setup_consumer buffer, drop, flush, statistics_key
134
- drop_limit = drop
135
- forced_flush_limit = drop * flush
133
+ def setup_consumer buffer, drop_limit, forced_flush_factor, statistics_key
134
+ forced_flush_limit = drop_limit * forced_flush_factor
136
135
 
137
136
  proc do |e|
138
137
  if buffer.size >= drop_limit
data/lib/ffwd/version.rb CHANGED
@@ -14,5 +14,5 @@
14
14
  # the License.
15
15
 
16
16
  module FFWD
17
- VERSION = "0.2.1"
17
+ VERSION = "0.2.2"
18
18
  end
data/lib/fwc.rb CHANGED
@@ -61,7 +61,9 @@ module FWC
61
61
  :summary => false,
62
62
  :raw => false,
63
63
  :raw_threshold => 100,
64
- :report_interval => 10
64
+ :report_interval => 10,
65
+ :key => nil,
66
+ :tags => nil
65
67
  }
66
68
  end
67
69
 
@@ -88,6 +90,15 @@ module FWC
88
90
  o.on "-i", "--report-interval", "Interval in seconds to generate report" do |d|
89
91
  opts[:report_interval] = d.to_i
90
92
  end
93
+
94
+ o.on "--key <key>", "Only handle events and metrics matching the specified key" do |d|
95
+ opts[:key] = d
96
+ end
97
+
98
+ o.on "--tag <tag>", "Only handle event and metrics which matches the specified tag" do |d|
99
+ opts[:tags] ||= []
100
+ opts[:tags] << d
101
+ end
91
102
  end
92
103
  end
93
104
 
@@ -96,7 +107,8 @@ module FWC
96
107
  end
97
108
 
98
109
  class Summary
99
- def initialize
110
+ def initialize matcher
111
+ @matcher = matcher
100
112
  @groups = {}
101
113
  end
102
114
 
@@ -119,6 +131,8 @@ module FWC
119
131
  end
120
132
 
121
133
  def receive data
134
+ return if not @matcher.matches? data
135
+
122
136
  id = [data["id"], data["type"]]
123
137
  group = (@groups[id] ||= {:id => data["id"], :type => data["type"],
124
138
  :items => {}})
@@ -135,8 +149,9 @@ module FWC
135
149
  end
136
150
 
137
151
  class Raw
138
- def initialize threshold
139
- @threshold = threshold
152
+ def initialize matcher, opts={}
153
+ @threshold = opts[:threshold]
154
+ @matcher = matcher
140
155
  @count = 0
141
156
  @rate = 0
142
157
  @disabled = false
@@ -155,6 +170,12 @@ module FWC
155
170
  end
156
171
 
157
172
  def receive data
173
+ return if not @matcher.matches? data
174
+
175
+ if not @tags.nil? and not (@tags & (d["tags"] || [])).empty?
176
+ return
177
+ end
178
+
158
179
  if not @disabled and @count > 100
159
180
  diff = (Time.now - @first)
160
181
  rate = (@count / diff)
@@ -175,17 +196,41 @@ module FWC
175
196
  end
176
197
  end
177
198
 
199
+ class Matcher
200
+ def initialize opts={}
201
+ @key = opts[:key]
202
+ @tags = opts[:tags]
203
+ end
204
+
205
+ def matches? data
206
+ return false unless ["event", "metric"].include? data["type"]
207
+
208
+ d = data["data"]
209
+ return false unless d
210
+
211
+ key = d["key"]
212
+ return false if @key and @key != key
213
+
214
+ tags = d["tags"]
215
+ return false if @tags and (@tags & (tags || [])).empty?
216
+
217
+ true
218
+ end
219
+ end
220
+
178
221
  def self.main(args)
179
222
  parse_options args
180
223
 
224
+ matcher = Matcher.new(:key => opts[:key], :tags => opts[:tags])
225
+
181
226
  handlers = []
182
227
 
183
228
  if opts[:summary]
184
- handlers << Summary.new
229
+ handlers << Summary.new(matcher)
185
230
  end
186
231
 
187
232
  if opts[:raw]
188
- handlers << Raw.new(opts[:raw_threshold])
233
+ handlers << Raw.new(matcher, :threshold => opts[:raw_threshold])
189
234
  end
190
235
 
191
236
  if handlers.empty?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffwd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - John-John Tedro
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-10 00:00:00.000000000 Z
12
+ date: 2014-06-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine