fluent-plugin-influxdb 0.2.6 → 0.2.7

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: a070089e8dc07509c16215ef08d368ec1091662c
4
- data.tar.gz: df19de18d8a2614e49f48a2ed12c9dd97063a8b3
3
+ metadata.gz: 19ed5ac1760f771e950cd309fd82c7762b7ce0ba
4
+ data.tar.gz: c0ef1cc12321bd4270b46ad6f077302ae587a82f
5
5
  SHA512:
6
- metadata.gz: 6b7eaeedded220c7941b2f9c2fa736ec84415c6f29b4ed3ef62e912af27dad0358068644ed4d596a36f9974ccb45ef609f9bbf59ce989079b374004c7e83e55e
7
- data.tar.gz: 70ead7e7d18a23de64a6ab43a78a54aa81ee3172e50417d01b05fdc46f5f230bd24de4e277bfb5e7b481a41c52747ac9b69e9c543c1075bb9f5f89774e29d9b0
6
+ metadata.gz: 5294012a219916c4cf1bf943c3980cedb6cd03f8c22553e5b4a8ac226cc7aa1866d6877b4332192e8c7899b74caf0282ebba9ac4029d16cf53fc1816ba4934da
7
+ data.tar.gz: 28663a91913a16451713e89b2278eb35b948c386a7154ab8b0c8535d079fab7ade8781e69caac7f5030a6e2c59fdf6e1a5c87236d83267b437f076a5da766301
data/History.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 0.2.7 (May, 10, 2016)
5
+ =====
6
+
7
+ - Add default_retention_policy and retention_policy parameters
8
+
4
9
  0.2.6 (Apr, 22, 2016)
5
10
  =====
6
11
 
data/README.md CHANGED
@@ -43,6 +43,10 @@ Just like other regular output plugins, Use type `influxdb` in your fluentd conf
43
43
 
44
44
  `sequence_tag`: The name of the tag whose value is incremented for the consecutive simultaneous events and reset to zero for a new event with the different timestamp
45
45
 
46
+ `default_retention_policy`: The retention policy applied by default. influxdb >= 0.2.3 is required to use this functionality.
47
+
48
+ `retention_policy_key`: The name of the key in the record whose value specifies the retention policy. The default retention policy will be applied if no such key exists. influxdb >= 0.2.3 is required to use this functionality.
49
+
46
50
  ### Fluentd Tag and InfluxDB Series
47
51
 
48
52
  influxdb plugin uses Fluentd event tag for InfluxDB series.
@@ -52,7 +56,7 @@ So if you have events with `app.event`, influxdb plugin inserts events into `app
52
56
 
53
57
  ```
54
58
  <match mylog.*>
55
- type influxdb
59
+ @type influxdb
56
60
  host localhost
57
61
  port 8086
58
62
  dbname test
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "fluent-plugin-influxdb"
6
- s.version = '0.2.6'
6
+ s.version = '0.2.7'
7
7
  s.authors = ["Masahiro Nakagawa", "FangLi"]
8
8
  s.email = ["repeatedly@gmail.com", "surivlee@gmail.com"]
9
9
  s.description = %q{InfluxDB output plugin for Fluentd}
@@ -41,6 +41,10 @@ DESC
41
41
  The name of the tag whose value is incremented for the consecutive simultaneous
42
42
  events and reset to zero for a new event with the different timestamp.
43
43
  DESC
44
+ config_param :retention_policy_key, :string, :default => nil,
45
+ :desc => "The key of the key in the record that stores the retention policy name"
46
+ config_param :default_retention_policy, :string, :default => nil,
47
+ :desc => "The name of the default retention policy"
44
48
 
45
49
 
46
50
  def initialize
@@ -131,9 +135,30 @@ DESC
131
135
  :values => values,
132
136
  :tags => tags,
133
137
  }
134
- points << point
138
+ retention_policy = @default_retention_policy
139
+ unless @retention_policy_key.nil?
140
+ retention_policy = record.delete(@retention_policy_key) || @default_retention_policy
141
+ unless points.nil?
142
+ if retention_policy != @default_retention_policy
143
+ # flush the retention policy first
144
+ @influxdb.write_points(points, nil, @default_retention_policy)
145
+ points = nil
146
+ end
147
+ end
148
+ end
149
+ if points.nil?
150
+ @influxdb.write_points([point], nil, retention_policy)
151
+ else
152
+ points << point
153
+ end
135
154
  end
136
155
 
137
- @influxdb.write_points(points)
156
+ unless points.nil?
157
+ if @default_retention_policy.nil?
158
+ @influxdb.write_points(points)
159
+ else
160
+ @influxdb.write_points(points, nil, @default_retention_policy)
161
+ end
162
+ end
138
163
  end
139
164
  end
@@ -12,11 +12,11 @@ class InfluxdbOutputTest < Test::Unit::TestCase
12
12
  [{'name' => 'test'}]
13
13
  end
14
14
 
15
- def write_points(points)
16
- @points += points
15
+ def stop!
17
16
  end
18
17
 
19
- def stop!
18
+ def write_points(points, precision=nil, retention_policy=nil)
19
+ @points << [points, precision, retention_policy]
20
20
  end
21
21
  end
22
22
 
@@ -42,7 +42,7 @@ class InfluxdbOutputTest < Test::Unit::TestCase
42
42
  def create_driver(conf=CONFIG, tag='test')
43
43
  Fluent::Test::BufferedOutputTestDriver.new(Fluent::InfluxdbOutput, tag) do
44
44
  attr_reader :influxdb
45
- def start
45
+ def configure(conf)
46
46
  @influxdb = DummyInfluxDBClient.new()
47
47
  super
48
48
  end
@@ -83,18 +83,24 @@ class InfluxdbOutputTest < Test::Unit::TestCase
83
83
  data = driver.run
84
84
 
85
85
  assert_equal([
86
- {
87
- :timestamp => time,
88
- :series => 'input.influxdb',
89
- :values => {'a' => 1},
90
- :tags => {},
91
- },
92
- {
93
- :timestamp => time,
94
- :series => 'input.influxdb',
95
- :values => {'a' => 2},
96
- :tags => {},
97
- }
86
+ [
87
+ [
88
+ {
89
+ :timestamp => time,
90
+ :series => 'input.influxdb',
91
+ :tags => {},
92
+ :values => {'a' => 1}
93
+ },
94
+ {
95
+ :timestamp => time,
96
+ :series => 'input.influxdb',
97
+ :tags => {},
98
+ :values => {'a' => 2}
99
+ },
100
+ ],
101
+ nil,
102
+ nil
103
+ ]
98
104
  ], driver.instance.influxdb.points)
99
105
 
100
106
  end
@@ -116,24 +122,30 @@ class InfluxdbOutputTest < Test::Unit::TestCase
116
122
  data = driver.run
117
123
 
118
124
  assert_equal([
119
- {
120
- :timestamp => time,
121
- :series => 'input.influxdb',
122
- :values => {'a' => 1},
123
- :tags => {},
124
- },
125
- {
126
- :timestamp => time,
127
- :series => 'input.influxdb',
128
- :values => {'a' => 2},
129
- :tags => {'b' => 1},
130
- },
131
- {
132
- :timestamp => time,
133
- :series => 'input.influxdb',
134
- :values => {'a' => 3},
135
- :tags => {},
136
- }
125
+ [
126
+ [
127
+ {
128
+ :timestamp => time,
129
+ :series => 'input.influxdb',
130
+ :values => {'a' => 1},
131
+ :tags => {},
132
+ },
133
+ {
134
+ :timestamp => time,
135
+ :series => 'input.influxdb',
136
+ :values => {'a' => 2},
137
+ :tags => {'b' => 1},
138
+ },
139
+ {
140
+ :timestamp => time,
141
+ :series => 'input.influxdb',
142
+ :values => {'a' => 3},
143
+ :tags => {},
144
+ },
145
+ ],
146
+ nil,
147
+ nil
148
+ ]
137
149
  ], driver.instance.influxdb.points)
138
150
  end
139
151
 
@@ -161,30 +173,188 @@ class InfluxdbOutputTest < Test::Unit::TestCase
161
173
  data = driver.run
162
174
 
163
175
  assert_equal([
164
- {
165
- :timestamp => time,
166
- :series => 'input.influxdb',
167
- :values => {'a' => 1},
168
- :tags => {'_seq' => 0},
169
- },
170
- {
171
- :timestamp => time,
172
- :series => 'input.influxdb',
173
- :values => {'a' => 2},
174
- :tags => {'_seq' => 1},
175
- },
176
- {
177
- :timestamp => time + 1,
178
- :series => 'input.influxdb',
179
- :values => {'a' => 1},
180
- :tags => {'_seq' => 0},
181
- },
182
- {
183
- :timestamp => time + 1,
184
- :series => 'input.influxdb',
185
- :values => {'a' => 2},
186
- :tags => {'_seq' => 1},
187
- }
176
+ [
177
+ [
178
+ {
179
+ :timestamp => time,
180
+ :series => 'input.influxdb',
181
+ :values => {'a' => 1},
182
+ :tags => {'_seq' => 0},
183
+ },
184
+ {
185
+ :timestamp => time,
186
+ :series => 'input.influxdb',
187
+ :values => {'a' => 2},
188
+ :tags => {'_seq' => 1},
189
+ },
190
+ {
191
+ :timestamp => time + 1,
192
+ :series => 'input.influxdb',
193
+ :values => {'a' => 1},
194
+ :tags => {'_seq' => 0},
195
+ },
196
+ {
197
+ :timestamp => time + 1,
198
+ :series => 'input.influxdb',
199
+ :values => {'a' => 2},
200
+ :tags => {'_seq' => 1},
201
+ }
202
+ ],
203
+ nil,
204
+ nil
205
+ ]
206
+ ], driver.instance.influxdb.points)
207
+
208
+ end
209
+
210
+ def test_write_default_retention_policy_only
211
+ config = CONFIG + "\n" + %[
212
+ default_retention_policy ephemeral_1d
213
+ ]
214
+ driver = create_driver(config, 'input.influxdb')
215
+
216
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
217
+ driver.emit({'a' => 1}, time)
218
+ driver.emit({'a' => 2}, time)
219
+
220
+ data = driver.run
221
+
222
+ assert_equal([
223
+ [
224
+ [
225
+ {
226
+ :timestamp => time,
227
+ :series => 'input.influxdb',
228
+ :tags => {},
229
+ :values => {'a' => 1}
230
+ },
231
+ {
232
+ :timestamp => time,
233
+ :series => 'input.influxdb',
234
+ :tags => {},
235
+ :values => {'a' => 2}
236
+ },
237
+ ],
238
+ nil,
239
+ 'ephemeral_1d'
240
+ ]
188
241
  ], driver.instance.influxdb.points)
242
+
243
+ end
244
+
245
+ def test_write_respective_retention_policy
246
+ config = CONFIG + "\n" + %[
247
+ retention_policy_key rp
248
+ ]
249
+ driver = create_driver(config, 'input.influxdb')
250
+
251
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
252
+ driver.emit({'a' => 1}, time)
253
+ driver.emit({'a' => 2, 'rp' => 'ephemeral_1d'}, time)
254
+ driver.emit({'a' => 3, 'rp' => 'ephemeral_1m'}, time)
255
+
256
+ data = driver.run
257
+
258
+ assert_equal([
259
+ [
260
+ [
261
+ {
262
+ :timestamp => time,
263
+ :series => 'input.influxdb',
264
+ :tags => {},
265
+ :values => {'a' => 1},
266
+ }
267
+ ],
268
+ nil,
269
+ nil
270
+ ],
271
+ [
272
+ [
273
+ {
274
+ :timestamp => time,
275
+ :series => 'input.influxdb',
276
+ :tags => {},
277
+ :values => {'a' => 2},
278
+ }
279
+ ],
280
+ nil,
281
+ 'ephemeral_1d'
282
+ ],
283
+ [
284
+ [
285
+ {
286
+ :timestamp => time,
287
+ :series => 'input.influxdb',
288
+ :tags => {},
289
+ :values => {'a' => 3},
290
+ }
291
+ ],
292
+ nil,
293
+ 'ephemeral_1m'
294
+ ]
295
+ ], driver.instance.influxdb.points)
296
+
297
+ end
298
+
299
+ def test_write_combined_retention_policy
300
+ config = CONFIG + "\n" + %[
301
+ default_retention_policy ephemeral_1d
302
+ retention_policy_key rp
303
+ ]
304
+ driver = create_driver(config, 'input.influxdb')
305
+
306
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
307
+ driver.emit({'a' => 1}, time)
308
+ driver.emit({'a' => 2, 'rp' => 'ephemeral_1d'}, time)
309
+ driver.emit({'a' => 3, 'rp' => 'ephemeral_1m'}, time)
310
+ driver.emit({'a' => 4}, time)
311
+
312
+ data = driver.run
313
+
314
+ assert_equal([
315
+ [
316
+ [
317
+ {
318
+ :timestamp => time,
319
+ :series => 'input.influxdb',
320
+ :tags => {},
321
+ :values => {'a' => 1},
322
+ },
323
+ {
324
+ :timestamp => time,
325
+ :series => 'input.influxdb',
326
+ :tags => {},
327
+ :values => {'a' => 2},
328
+ }
329
+ ],
330
+ nil,
331
+ 'ephemeral_1d'
332
+ ],
333
+ [
334
+ [
335
+ {
336
+ :timestamp => time,
337
+ :series => 'input.influxdb',
338
+ :tags => {},
339
+ :values => {'a' => 3},
340
+ }
341
+ ],
342
+ nil,
343
+ 'ephemeral_1m'
344
+ ],
345
+ [
346
+ [
347
+ {
348
+ :timestamp => time,
349
+ :series => 'input.influxdb',
350
+ :tags => {},
351
+ :values => {'a' => 4},
352
+ }
353
+ ],
354
+ nil,
355
+ 'ephemeral_1d'
356
+ ]
357
+ ], driver.instance.influxdb.points)
358
+
189
359
  end
190
360
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-influxdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro Nakagawa
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-04-22 00:00:00.000000000 Z
12
+ date: 2016-05-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  version: '0'
126
126
  requirements: []
127
127
  rubyforge_project:
128
- rubygems_version: 2.2.2
128
+ rubygems_version: 2.5.1
129
129
  signing_key:
130
130
  specification_version: 4
131
131
  summary: A buffered output plugin for fluentd and influxDB