fluent-plugin-consul 0.0.1
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 +7 -0
- data/.gitignore +7 -0
- data/CHANGELOG +3 -0
- data/Gemfile +3 -0
- data/README.md +8 -0
- data/Rakefile +10 -0
- data/fluent-plugin-consul.gemspec +23 -0
- data/lib/fluent/plugin/out_consul.rb +50 -0
- data/test/test_out_consul.rb +52 -0
- metadata +109 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a5a83cabdee56c95a05a17511e58376076356884
|
4
|
+
data.tar.gz: b0c8555f1b687c7b662a47b78f04b44297a55124
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a37c6dbfe10a1fbc2cdff92d03190d755ef9d7db1d9c0d7d68ac7de4c77ffae9e7e398460de17a6aa31c59e347e630197a24db5553dc9392686ba64a62757f43
|
7
|
+
data.tar.gz: acd00bf1f706a5f1a5327405941fbe8307cf166106b92e2e57e32cdf8286e3d037740dec3b1a1ba5d091e0cae048ee0963261dc5de195d153821b4d63d68e4d6
|
data/.gitignore
ADDED
data/CHANGELOG
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "fluent-plugin-consul"
|
7
|
+
spec.version = "0.0.1"
|
8
|
+
spec.authors = ["foostan"]
|
9
|
+
spec.email = ["ks@fstn.jp"]
|
10
|
+
spec.summary = %q{Store Fluentd event to Consul Key/Value Storage}
|
11
|
+
spec.homepage = "https://github.com/foostan/fluent-plugin-consul"
|
12
|
+
spec.license = "Apache License, Version 2.0"
|
13
|
+
|
14
|
+
spec.files = `git ls-files`.split($/)
|
15
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
|
+
spec.require_paths = ["lib"]
|
18
|
+
|
19
|
+
spec.add_development_dependency "bundler"
|
20
|
+
spec.add_development_dependency "rake"
|
21
|
+
spec.add_runtime_dependency "fluentd"
|
22
|
+
spec.add_runtime_dependency 'diplomat', '~> 0.2.1'
|
23
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Fluent
|
2
|
+
|
3
|
+
class ConsulOutput < Fluent::BufferedOutput
|
4
|
+
Fluent::Plugin.register_output('consul', self)
|
5
|
+
|
6
|
+
config_param :consul_uri, :string, :default => 'http://localhost:8500'
|
7
|
+
config_param :kv_prefix, :string, :default => 'fluentd'
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
super
|
11
|
+
require 'diplomat'
|
12
|
+
end
|
13
|
+
|
14
|
+
def configure(conf)
|
15
|
+
super
|
16
|
+
::Diplomat.configure do |config|
|
17
|
+
config.url = @consul_uri
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def format(tag, time, record)
|
22
|
+
{ tag => { time: time, record: record } }.to_json
|
23
|
+
end
|
24
|
+
|
25
|
+
def write(chunk)
|
26
|
+
data = JSON.parse(chunk.read)
|
27
|
+
|
28
|
+
consul_kvs_fmt(data).each do |kv|
|
29
|
+
::Diplomat.put(@kv_prefix + kv[:key].to_s, kv[:value].to_s)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def consul_kvs_fmt(data)
|
34
|
+
kvs = []
|
35
|
+
|
36
|
+
if data.is_a?(Array) || data.is_a?(Hash)
|
37
|
+
data.each_key do |k|
|
38
|
+
r_kvs = consul_kvs_fmt(data[k])
|
39
|
+
r_kvs.each do |r_kv|
|
40
|
+
kvs << { key: '/' + k + r_kv[:key], value: r_kv[:value] }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
else
|
44
|
+
kvs << { key: '', value: data }
|
45
|
+
end
|
46
|
+
|
47
|
+
kvs
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'fluent/test'
|
2
|
+
require 'fluent/plugin/out_consul'
|
3
|
+
|
4
|
+
class TestConsulOutput < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
Fluent::Test.setup
|
7
|
+
end
|
8
|
+
|
9
|
+
CONFIG = '
|
10
|
+
consul_uri localhost:8500
|
11
|
+
kv_prefix fluentd
|
12
|
+
'
|
13
|
+
|
14
|
+
def create_driver(conf = CONFIG)
|
15
|
+
Fluent::Test::BufferedOutputTestDriver.new(Fluent::ConsulOutput) do
|
16
|
+
def write(chunk)
|
17
|
+
chunk.read
|
18
|
+
end
|
19
|
+
end.configure(conf)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_configure
|
23
|
+
d = create_driver
|
24
|
+
assert_equal 'localhost:8500', d.instance.consul_uri
|
25
|
+
assert_equal 'fluentd', d.instance.kv_prefix
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_consul_kvs_fmt
|
29
|
+
d = create_driver
|
30
|
+
data = {
|
31
|
+
'key1' => {
|
32
|
+
'sub_key1-1' => 'value1',
|
33
|
+
'sub_key1-2' => 'value2',
|
34
|
+
},
|
35
|
+
'key2' => {
|
36
|
+
'sub_key2-1' => 'value3',
|
37
|
+
'sub_key2-2' => 'value4',
|
38
|
+
},
|
39
|
+
'key3' => 'value5'
|
40
|
+
}
|
41
|
+
|
42
|
+
consul_kvs = [
|
43
|
+
Hash(:key => '/key1/sub_key1-1', :value => 'value1'),
|
44
|
+
Hash(:key => '/key1/sub_key1-2', :value => 'value2'),
|
45
|
+
Hash(:key => '/key2/sub_key2-1', :value => 'value3'),
|
46
|
+
Hash(:key => '/key2/sub_key2-2', :value => 'value4'),
|
47
|
+
Hash(:key => '/key3', :value => 'value5'),
|
48
|
+
]
|
49
|
+
|
50
|
+
assert_equal consul_kvs, d.instance.consul_kvs_fmt(data)
|
51
|
+
end
|
52
|
+
end
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fluent-plugin-consul
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- foostan
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: fluentd
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: diplomat
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.2.1
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.2.1
|
69
|
+
description:
|
70
|
+
email:
|
71
|
+
- ks@fstn.jp
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- CHANGELOG
|
78
|
+
- Gemfile
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- fluent-plugin-consul.gemspec
|
82
|
+
- lib/fluent/plugin/out_consul.rb
|
83
|
+
- test/test_out_consul.rb
|
84
|
+
homepage: https://github.com/foostan/fluent-plugin-consul
|
85
|
+
licenses:
|
86
|
+
- Apache License, Version 2.0
|
87
|
+
metadata: {}
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options: []
|
90
|
+
require_paths:
|
91
|
+
- lib
|
92
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
requirements: []
|
103
|
+
rubyforge_project:
|
104
|
+
rubygems_version: 2.2.2
|
105
|
+
signing_key:
|
106
|
+
specification_version: 4
|
107
|
+
summary: Store Fluentd event to Consul Key/Value Storage
|
108
|
+
test_files:
|
109
|
+
- test/test_out_consul.rb
|