fluent-plugin-norikra 0.1.2 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 17d22de3fa94371d074467e259195bcf675198da
4
- data.tar.gz: cfe8d59434ca08f513000b392e95f39af82d3b4c
3
+ metadata.gz: 86ac7050ae6300621a0e0a9602f073668f43b2af
4
+ data.tar.gz: 2ad530592d6771c3a82f29a77147cd99d11b188d
5
5
  SHA512:
6
- metadata.gz: 2138b0f8de9901ec4c5d99d49a41e8e5aa3d631dada661767306b829543810d5be9f7c8517f4c55cc3c57b4cc9b344ea3fb4a9fe9b374065eef5f21c071bec6a
7
- data.tar.gz: c4437d0720878f816954b31b2e1e523240ce941de4cad94fd0fdc59f869bdd7dc79011604679bfa39d799b755160eb457f28eeaae0d1d6c0a8865b216a8c36e2
6
+ metadata.gz: 40a6c94ac9f9b2ee05fedcc97dd3f1a879eb50c815f7a961d5515275399d5fea21bd8d6fe3899a4f7a027bc01fb8bf64a28857fa3a15411b228f2dfda5904f9c
7
+ data.tar.gz: 85b3f3e7f757b4e97a3bca27a62b604ec55fc5a16dd2f418a91bc47a635f026e8bbb28054f9f3ef01ad45aaf8057a12c5937fd466be8c9c8391b5150abee9187
data/README.md CHANGED
@@ -57,9 +57,15 @@ NorikraOutput plugin opens Norikra's target for newly incoming tags. You can spe
57
57
 
58
58
  target_map_tag true # fluentd's tag -> norikra's target
59
59
  remove_tag_prefix data
60
+
60
61
  # other options:
61
62
  # target_map_key KEY_NAME # use specified key's value as target in fluentd event
62
63
  # target_string STRING # use fixed target name specified
64
+ # drop_error_record true # drop records chunk which includes records to occur ClientError on norikra server
65
+ # # default: true
66
+ # # (ex: specified (non-optional) fields missing or invalid value for specified type)
67
+ # drop_server_error_record true # drop records chunk when any ServerError occurs
68
+ # # default: false (to retry)
63
69
 
64
70
  <default>
65
71
  include * # send all fields values to norikra
@@ -179,6 +185,7 @@ Configuration example to receive tags like `event.foo` and send norikra's target
179
185
  group count_query_group # or default when omitted
180
186
  expression SELECT count(*) AS cnt FROM ${target}.win:time_batch(1 minute)
181
187
  tag count.min.${target}
188
+ fetch_interval 10s
182
189
  </query>
183
190
  <query>
184
191
  name count_hour_${target}
@@ -234,7 +241,7 @@ Norikra's target (like table name) can be generated from:
234
241
 
235
242
  # TODO
236
243
 
237
- * write abou these topics
244
+ * write about these topics
238
245
  * error logs for new target, success logs of retry
239
246
 
240
247
  # Copyright
data/example/test2.conf CHANGED
@@ -6,6 +6,8 @@
6
6
  type norikra_filter
7
7
  norikra localhost:26571
8
8
  target_map_tag yes
9
+ drop_server_error_record yes
10
+ drop_error_record yes
9
11
 
10
12
  <default>
11
13
  include *
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "fluent-plugin-norikra"
5
- spec.version = "0.1.2"
5
+ spec.version = "0.2.0"
6
6
  spec.authors = ["TAGOMORI Satoshi"]
7
7
  spec.email = ["tagomoris@gmail.com"]
8
8
  spec.description = %q{process events on fluentd with SQL like query, with built-in Norikra server if needed.}
@@ -32,6 +32,11 @@ module Fluent
32
32
  # tag_prefix norikra.query
33
33
  # </fetch>
34
34
 
35
+ # Define `log` method for v0.10.42 or earlier
36
+ unless method_defined?(:log)
37
+ define_method("log") { $log }
38
+ end
39
+
35
40
  def configure(conf)
36
41
  super
37
42
 
@@ -72,7 +72,7 @@ module Fluent::NorikraPlugin
72
72
  @fetch_queue.sort!
73
73
  end
74
74
  rescue => e
75
- $log.error "unknown log encountered", :error_class => e.class, :message => e.message
75
+ log.error "unknown log encountered", :error_class => e.class, :message => e.message
76
76
  end
77
77
 
78
78
  def fetch_worker
@@ -88,7 +88,7 @@ module Fluent::NorikraPlugin
88
88
  begin
89
89
  data = req.fetch(client())
90
90
  rescue => e
91
- $log.error "failed to fetch", :norikra => "#{@host}:#{@port}", :method => req.method, :target => req.target, :error => e.class, :message => e.message
91
+ log.error "failed to fetch", :norikra => "#{@host}:#{@port}", :method => req.method, :target => req.target, :error => e.class, :message => e.message
92
92
  end
93
93
 
94
94
  data.each do |tag, event_array|
@@ -96,7 +96,7 @@ module Fluent::NorikraPlugin
96
96
  begin
97
97
  Fluent::Engine.emit(tag, time, event)
98
98
  rescue => e
99
- $log.error "failed to emit event from norikra query", :norikra => "#{@host}:#{@port}", :error => e.class, :message => e.message, :tag => tag, :record => event
99
+ log.error "failed to emit event from norikra query", :norikra => "#{@host}:#{@port}", :error => e.class, :message => e.message, :tag => tag, :record => event
100
100
  end
101
101
  end
102
102
  end
@@ -81,9 +81,9 @@ module Fluent::NorikraPlugin
81
81
  targets.each do |t|
82
82
  next if @target_map[t.name]
83
83
 
84
- $log.debug "Preparing norikra target #{t.name} on #{@host}:#{@port}"
84
+ log.debug "Preparing norikra target #{t.name} on #{@host}:#{@port}"
85
85
  if prepare_target(c, t)
86
- $log.debug "success to prepare target #{t.name} on #{@host}:#{@port}"
86
+ log.debug "success to prepare target #{t.name} on #{@host}:#{@port}"
87
87
 
88
88
  if @enable_auto_query
89
89
  raise "bug" unless self.respond_to?(:insert_fetch_queue)
@@ -96,7 +96,7 @@ module Fluent::NorikraPlugin
96
96
  @target_map[t.name] = t
97
97
  @registered_targets.delete(t.name)
98
98
  else
99
- $log.error "Failed to prepare norikra data for target:#{t.name}"
99
+ log.error "Failed to prepare norikra data for target:#{t.name}"
100
100
  @norikra_started.push(t)
101
101
  end
102
102
  end
@@ -105,12 +105,12 @@ module Fluent::NorikraPlugin
105
105
 
106
106
  def prepare_target(client, target)
107
107
  # target open and reserve fields
108
- $log.debug "Going to prepare about target"
108
+ log.debug "Going to prepare about target"
109
109
  begin
110
110
  unless client.targets.include?(target.escaped_name)
111
- $log.debug "opening target #{target.escaped_name}"
111
+ log.debug "opening target #{target.escaped_name}"
112
112
  client.open(target.escaped_name, target.reserve_fields, target.auto_field)
113
- $log.debug "opening target #{target.escaped_name}, done."
113
+ log.debug "opening target #{target.escaped_name}, done."
114
114
  end
115
115
 
116
116
  reserving = target.reserve_fields
@@ -119,7 +119,7 @@ module Fluent::NorikraPlugin
119
119
  if reserving[field['name']]
120
120
  reserved.push(field['name'])
121
121
  if reserving[field['name']] != field['type']
122
- $log.warn "field type mismatch, reserving:#{reserving[field['name']]} but reserved:#{field['type']}"
122
+ log.warn "field type mismatch, reserving:#{reserving[field['name']]} but reserved:#{field['type']}"
123
123
  end
124
124
  end
125
125
  end
@@ -128,7 +128,7 @@ module Fluent::NorikraPlugin
128
128
  client.reserve(target.escaped_name, fieldname, type) unless reserved.include?(fieldname)
129
129
  end
130
130
  rescue => e
131
- $log.error "failed to prepare target:#{target.escaped_name}", :norikra => "#{@host}:#{@port}", :error => e.class, :message => e.message
131
+ log.error "failed to prepare target:#{target.escaped_name}", :norikra => "#{@host}:#{@port}", :error => e.class, :message => e.message
132
132
  return false
133
133
  end
134
134
 
@@ -138,7 +138,7 @@ module Fluent::NorikraPlugin
138
138
  target.queries.each do |query|
139
139
  if registered.has_key?(query.name) # query already registered
140
140
  if registered[query.name] != query.expression
141
- $log.warn "query name and expression mismatch, check norikra server status. target query name:#{query.name}"
141
+ log.warn "query name and expression mismatch, check norikra server status. target query name:#{query.name}"
142
142
  end
143
143
  next
144
144
  end
@@ -148,7 +148,7 @@ module Fluent::NorikraPlugin
148
148
  fetch_event_registration(query)
149
149
  end
150
150
  rescue => e
151
- $log.warn "failed to register query", :norikra => "#{@host}:#{@port}", :error => e.class, :message => e.message
151
+ log.warn "failed to register query", :norikra => "#{@host}:#{@port}", :error => e.class, :message => e.message
152
152
  end
153
153
  end
154
154
 
@@ -205,7 +205,15 @@ module Fluent::NorikraPlugin
205
205
  c = client()
206
206
 
207
207
  events_map.each do |target, events|
208
- c.send(target, events)
208
+ begin
209
+ c.send(target, events)
210
+ rescue Norikra::RPC::ClientError => e
211
+ raise unless @drop_error_record
212
+ log.warn "Norikra server reports ClientError, and dropped", target: target, message: e.message
213
+ rescue Norikra::RPC::ServerError => e
214
+ raise unless @drop_server_error_record
215
+ log.warn "Norikra server reports ServerError, and dropped", target: target, message: e.message
216
+ end
209
217
  end
210
218
  end
211
219
 
@@ -21,10 +21,17 @@ module Fluent
21
21
  config_param :target_map_tag, :bool, :default => false
22
22
  config_param :target_map_key, :string, :default => nil
23
23
  config_param :target_string, :string, :default => nil
24
+ config_param :drop_error_record, :default => true
25
+ config_param :drop_server_error_record, :default => false
24
26
 
25
27
  # <default>
26
28
  # <target TARGET>
27
29
 
30
+ # Define `log` method for v0.10.42 or earlier
31
+ unless method_defined?(:log)
32
+ define_method("log") { $log }
33
+ end
34
+
28
35
  def configure(conf)
29
36
  super
30
37
 
@@ -26,6 +26,8 @@ module Fluent
26
26
  config_param :target_map_tag, :bool, :default => false
27
27
  config_param :target_map_key, :string, :default => nil
28
28
  config_param :target_string, :string, :default => nil
29
+ config_param :drop_error_record, :default => true
30
+ config_param :drop_server_error_record, :default => false
29
31
 
30
32
  # <default>
31
33
  # <target TARGET>
@@ -48,6 +50,11 @@ module Fluent
48
50
  # tag_prefix norikra.query
49
51
  # </fetch>
50
52
 
53
+ # Define `log` method for v0.10.42 or earlier
54
+ unless method_defined?(:log)
55
+ define_method("log") { $log }
56
+ end
57
+
51
58
  def configure(conf)
52
59
  super
53
60
 
@@ -129,7 +136,7 @@ module Fluent
129
136
  end
130
137
 
131
138
  def server_starter
132
- $log.info "starting Norikra server process #{@host}:#{@port}"
139
+ log.info "starting Norikra server process #{@host}:#{@port}"
133
140
  base_options = [@execute_server_path, 'start', '-H', @host, '-P', @port.to_s]
134
141
  cmd,options = if @execute_jruby_path
135
142
  [@execute_jruby_path, [@execute_server_path, 'start', '-H', @host, '-P', @port.to_s]]
@@ -144,24 +151,24 @@ module Fluent
144
151
  exec([cmd, 'norikra(fluentd)'], *options)
145
152
  end
146
153
  connecting = true
147
- $log.info "trying to confirm norikra server status..."
154
+ log.info "trying to confirm norikra server status..."
148
155
  while connecting
149
156
  begin
150
- $log.debug "start to connect norikra server #{@host}:#{@port}"
157
+ log.debug "start to connect norikra server #{@host}:#{@port}"
151
158
  client(:connect_timeout => 1, :send_timeout => 1, :receive_timeout => 1).targets
152
159
  # discard result: no exceptions is success
153
160
  connecting = false
154
161
  next
155
162
  rescue HTTPClient::TimeoutError
156
- $log.debug "Norikra server test connection timeout. retrying..."
163
+ log.debug "Norikra server test connection timeout. retrying..."
157
164
  rescue Errno::ECONNREFUSED
158
- $log.debug "Norikra server test connection refused. retrying..."
165
+ log.debug "Norikra server test connection refused. retrying..."
159
166
  rescue => e
160
- $log.error "unknown error in confirming norikra server, #{e.class}:#{e.message}"
167
+ log.error "unknown error in confirming norikra server, #{e.class}:#{e.message}"
161
168
  end
162
169
  sleep 3
163
170
  end
164
- $log.info "confirmed that norikra server #{@host}:#{@port} started."
171
+ log.info "confirmed that norikra server #{@host}:#{@port} started."
165
172
  @norikra_started = true
166
173
  end
167
174
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-norikra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TAGOMORI Satoshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-02 00:00:00.000000000 Z
11
+ date: 2014-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: norikra-client