influxdb-plugin-fluent 1.4.0.pre.435 → 1.5.0.pre.563
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 +4 -4
- data/.rubocop.yml +2 -2
- data/CHANGELOG.md +12 -1
- data/README.md +1 -1
- data/influxdb-plugin-fluent.gemspec +3 -2
- data/lib/fluent/plugin/out_influxdb2.rb +20 -8
- data/lib/fluent/plugin/version.rb +1 -1
- data/test/influxdb/plugin/output_test.rb +72 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 973f288a15c06fa35e0b29ed53f2f706223e51f0557b92e7e7f3436e2a93991e
|
4
|
+
data.tar.gz: 8506d54df262e5362098cdf985a1fc90dd2ed6ecf4ee96fef993b3e8484d7335
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78fcd35fb3980f3a14e4d6d36e2e080b64dc9b6ad0562b913030a81f3818bde03105665663ef3120f7caaec3ae4e0edd04254515be600ba326a09120453898d4
|
7
|
+
data.tar.gz: 25061fb356a9ffa69a640a627bf80e7bc4b203556caf8c12f2971840e4f12d4ea805cb7d60d1b9cfa6ecd97e57c8d118723d17fad422a15595b36b423591db8e
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,15 @@
|
|
1
|
-
## 1.
|
1
|
+
## 1.5.0 [unreleased]
|
2
|
+
|
3
|
+
### Dependencies
|
4
|
+
1. [#11](https://github.com/influxdata/influxdb-plugin-fluent/pull/11): Upgrade InfluxDB client to 1.6.0
|
5
|
+
|
6
|
+
## 1.4.0 [2020-06-19]
|
7
|
+
|
8
|
+
### Features
|
9
|
+
1. [#8](https://github.com/influxdata/influxdb-plugin-fluent/pull/8): Added support for nested fields
|
10
|
+
|
11
|
+
### Dependencies
|
12
|
+
1. [#9](https://github.com/influxdata/influxdb-plugin-fluent/pull/9): Upgrade InfluxDB client to 1.5.0
|
2
13
|
|
3
14
|
## 1.3.0 [2020-05-15]
|
4
15
|
|
data/README.md
CHANGED
@@ -19,7 +19,7 @@ This repository contains the reference Fluentd plugin for the InfluxDB 2.0.
|
|
19
19
|
The plugin is bundled as a gem and is hosted on [Rubygems](https://rubygems.org/gems/influxdb-plugin-fluent). You can install the gem as follows:
|
20
20
|
|
21
21
|
```
|
22
|
-
fluent-gem install influxdb-plugin-fluent -v 1.
|
22
|
+
fluent-gem install influxdb-plugin-fluent -v 1.4.0
|
23
23
|
```
|
24
24
|
|
25
25
|
## Plugins
|
@@ -33,7 +33,8 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.email = ['jakub.bednar@gmail.com']
|
34
34
|
|
35
35
|
spec.summary = 'InfluxDB 2 output plugin for Fluentd'
|
36
|
-
spec.description = '
|
36
|
+
spec.description = 'The gem is renamed to fluent-plugin-influxdb-v2. '\
|
37
|
+
'A buffered output plugin for Fluentd and InfluxDB 2'
|
37
38
|
spec.homepage = 'https://github.com/influxdata/influxdb-plugin-fluent'
|
38
39
|
spec.license = 'MIT'
|
39
40
|
|
@@ -47,7 +48,7 @@ Gem::Specification.new do |spec|
|
|
47
48
|
spec.required_ruby_version = '>= 2.2.0'
|
48
49
|
|
49
50
|
spec.add_runtime_dependency 'fluentd', '~> 1.8'
|
50
|
-
spec.add_runtime_dependency 'influxdb-client', '1.
|
51
|
+
spec.add_runtime_dependency 'influxdb-client', '1.6.0'
|
51
52
|
|
52
53
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
53
54
|
spec.add_development_dependency 'codecov', '~> 0.1.16'
|
@@ -128,14 +128,8 @@ class InfluxDBOutput < Fluent::Plugin::Output
|
|
128
128
|
record.each_pair do |k, v|
|
129
129
|
if k.eql?(@time_key)
|
130
130
|
time_formatted = v
|
131
|
-
|
132
|
-
|
133
|
-
elsif @field_keys.empty? || @field_keys.include?(k)
|
134
|
-
if @field_cast_to_float & v.is_a?(Integer)
|
135
|
-
point.add_field(k, Float(v))
|
136
|
-
else
|
137
|
-
point.add_field(k, v)
|
138
|
-
end
|
131
|
+
else
|
132
|
+
_parse_field(k, v, point)
|
139
133
|
end
|
140
134
|
point.add_tag('fluentd', tag) if @tag_fluentd
|
141
135
|
end
|
@@ -145,4 +139,22 @@ class InfluxDBOutput < Fluent::Plugin::Output
|
|
145
139
|
@write_api.write(data: points)
|
146
140
|
log.debug "Written points: #{points}"
|
147
141
|
end
|
142
|
+
|
143
|
+
private
|
144
|
+
|
145
|
+
def _parse_field(key, value, point)
|
146
|
+
if @tag_keys.include?(key)
|
147
|
+
point.add_tag(key, value)
|
148
|
+
elsif @field_keys.empty? || @field_keys.include?(key)
|
149
|
+
if @field_cast_to_float & value.is_a?(Integer)
|
150
|
+
point.add_field(key, Float(value))
|
151
|
+
elsif value.is_a?(Hash)
|
152
|
+
value.each_pair do |nested_k, nested_v|
|
153
|
+
_parse_field("#{key}.#{nested_k}", nested_v, point)
|
154
|
+
end
|
155
|
+
else
|
156
|
+
point.add_field(key, value)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
148
160
|
end
|
@@ -363,6 +363,78 @@ class InfluxDBOutputTest < Minitest::Test
|
|
363
363
|
times: 1, body: 'h2o_tag level=2.0,location="europe" 1444897215000000000')
|
364
364
|
end
|
365
365
|
|
366
|
+
def test_nested_field
|
367
|
+
stub_request(:any, 'https://localhost:9999/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
368
|
+
.to_return(status: 204)
|
369
|
+
driver = create_driver(%(
|
370
|
+
@type influxdb2
|
371
|
+
token my-token
|
372
|
+
bucket my-bucket
|
373
|
+
org my-org
|
374
|
+
time_precision ns
|
375
|
+
))
|
376
|
+
driver.run(default_tag: 'h2o_tag') do
|
377
|
+
emit_documents(driver, 'location' => 'europe', 'level' => 2,
|
378
|
+
'nest' => { 'key' => 'nested value', 'deep' => { 'deep-key' => 'deep-value' }, 'a' => 25 })
|
379
|
+
end
|
380
|
+
body = 'h2o_tag level=2i,location="europe",nest.a=25i,nest.deep.deep-key="deep-value",nest.key="nested value" ' \
|
381
|
+
'1444897215000000000'
|
382
|
+
assert_requested(:post, 'https://localhost:9999/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
383
|
+
times: 1, body: body)
|
384
|
+
end
|
385
|
+
|
386
|
+
def test_kubernetes_structure
|
387
|
+
record = {
|
388
|
+
'docker' => { 'container_id' => '7ee0723e90d13df5ade6f5d524f23474461fcfeb48a90630d8b02b13c741550b' },
|
389
|
+
'kubernetes' => { 'container_name' => 'fluentd',
|
390
|
+
'namespace_name' => 'default',
|
391
|
+
'pod_name' => 'fluentd-49xk2',
|
392
|
+
'container_image' => 'rawkode/fluentd:1',
|
393
|
+
'container_image_id' =>
|
394
|
+
'docker://sha256:90c288b8a09cc6ae98b04078afb10d9c380c0603a47745403461435073460f97',
|
395
|
+
'pod_id' => 'c15ab1cb-0773-4ad7-a58b-f791ab34c62f',
|
396
|
+
'host' => 'minikube',
|
397
|
+
'labels' => {
|
398
|
+
'controller-revision-hash' => '57748799f7',
|
399
|
+
'pod-template-generation' => 2,
|
400
|
+
'app_kubernetes_io/instance' => 'fluentd',
|
401
|
+
'app_kubernetes_io/name' => 'fluentd'
|
402
|
+
},
|
403
|
+
'master_url' => 'https://10.96.0.1:443/api',
|
404
|
+
'namespace_id' => '2b0bc75c-323a-4f04-9eec-02255a8d0044' },
|
405
|
+
'log' => '2020-06-17 13:19:42 +0000 [info]: #0 [filter_kube_metadata] stats - namespace_cache_size: 2, '\
|
406
|
+
'pod_cache_size: 6, pod_cache_watch_updates: 1, namespace_cache_api_updates: 6, '\
|
407
|
+
'pod_cache_api_updates: 6, id_cache_miss: 6\n',
|
408
|
+
'stream' => 'stdout'
|
409
|
+
}
|
410
|
+
|
411
|
+
stub_request(:any, 'https://localhost:9999/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
412
|
+
.to_return(status: 204)
|
413
|
+
driver = create_driver(%(
|
414
|
+
@type influxdb2
|
415
|
+
token my-token
|
416
|
+
bucket my-bucket
|
417
|
+
org my-org
|
418
|
+
time_precision ns
|
419
|
+
))
|
420
|
+
driver.run(default_tag: 'h2o_tag') do
|
421
|
+
emit_documents(driver, record)
|
422
|
+
end
|
423
|
+
body = 'h2o_tag docker.container_id="7ee0723e90d13df5ade6f5d524f23474461fcfeb48a90630d8b02b13c741550b",'\
|
424
|
+
'kubernetes.container_image="rawkode/fluentd:1",'\
|
425
|
+
'kubernetes.container_image_id="docker://sha256:90c288b8a09cc6ae98b04078afb10d9c380c0603a47745403461435073460f97",'\
|
426
|
+
'kubernetes.container_name="fluentd",kubernetes.host="minikube",'\
|
427
|
+
'kubernetes.labels.app_kubernetes_io/instance="fluentd",kubernetes.labels.app_kubernetes_io/name="fluentd",'\
|
428
|
+
'kubernetes.labels.controller-revision-hash="57748799f7",kubernetes.labels.pod-template-generation=2i,'\
|
429
|
+
'kubernetes.master_url="https://10.96.0.1:443/api",kubernetes.namespace_id="2b0bc75c-323a-4f04-9eec-02255a8d0044",'\
|
430
|
+
'kubernetes.namespace_name="default",kubernetes.pod_id="c15ab1cb-0773-4ad7-a58b-f791ab34c62f",'\
|
431
|
+
'kubernetes.pod_name="fluentd-49xk2",log="2020-06-17 13:19:42 +0000 [info]: #0 [filter_kube_metadata] stats - '\
|
432
|
+
'namespace_cache_size: 2, pod_cache_size: 6, pod_cache_watch_updates: 1, namespace_cache_api_updates: 6, '\
|
433
|
+
'pod_cache_api_updates: 6, id_cache_miss: 6\\\n",stream="stdout" 1444897215000000000'
|
434
|
+
assert_requested(:post, 'https://localhost:9999/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
435
|
+
times: 1, body: body)
|
436
|
+
end
|
437
|
+
|
366
438
|
def emit_documents(driver, data = { 'location' => 'europe', 'level' => 2 })
|
367
439
|
time = event_time('2015-10-15 8:20:15 UTC')
|
368
440
|
driver.feed(time, data)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: influxdb-plugin-fluent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0.pre.563
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakub Bednar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.6.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.6.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,7 +164,8 @@ dependencies:
|
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '3.7'
|
167
|
-
description:
|
167
|
+
description: The gem is renamed to fluent-plugin-influxdb-v2. A buffered output plugin
|
168
|
+
for Fluentd and InfluxDB 2
|
168
169
|
email:
|
169
170
|
- jakub.bednar@gmail.com
|
170
171
|
executables: []
|