fluent-plugin-nats 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +5 -6
- data/README.md +11 -1
- data/VERSION +1 -1
- data/fluent-plugin-nats.gemspec +3 -3
- data/lib/fluent/plugin/in_nats.rb +22 -21
- data/test/plugin/in_nats.rb +7 -7
- metadata +13 -13
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fluent-plugin-nats (0.0.
|
4
|
+
fluent-plugin-nats (0.0.4)
|
5
|
+
eventmachine (= 0.12.10)
|
5
6
|
fluentd (>= 0.10.7)
|
6
7
|
nats (>= 0.4.22)
|
7
8
|
|
@@ -12,7 +13,7 @@ GEM
|
|
12
13
|
iobuffer (>= 1.0.0)
|
13
14
|
daemons (1.1.9)
|
14
15
|
eventmachine (0.12.10)
|
15
|
-
fluentd (0.10.
|
16
|
+
fluentd (0.10.28)
|
16
17
|
cool.io (~> 1.1.0)
|
17
18
|
http_parser.rb (~> 0.5.1)
|
18
19
|
json (>= 1.4.3)
|
@@ -23,14 +24,13 @@ GEM
|
|
23
24
|
json (1.7.5)
|
24
25
|
json_pure (1.7.5)
|
25
26
|
msgpack (0.4.7)
|
26
|
-
nats (0.4.
|
27
|
+
nats (0.4.28)
|
27
28
|
daemons (>= 1.1.5)
|
28
|
-
eventmachine (
|
29
|
+
eventmachine (= 0.12.10)
|
29
30
|
json_pure (>= 1.7.3)
|
30
31
|
thin (>= 1.4.1)
|
31
32
|
rack (1.4.1)
|
32
33
|
rake (0.9.2.2)
|
33
|
-
rr (1.0.4)
|
34
34
|
thin (1.4.1)
|
35
35
|
daemons (>= 1.0.9)
|
36
36
|
eventmachine (>= 0.12.6)
|
@@ -43,4 +43,3 @@ PLATFORMS
|
|
43
43
|
DEPENDENCIES
|
44
44
|
fluent-plugin-nats!
|
45
45
|
rake (>= 0.9.2)
|
46
|
-
rr (>= 1.0.0)
|
data/README.md
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
fluent-plugin-nats
|
2
2
|
==================
|
3
3
|
|
4
|
-
NATS plugin for
|
4
|
+
[NATS](https://github.com/derekcollison/nats) plugin for
|
5
|
+
[fluentd](https://github.com/fluent/fluentd) Event Collector
|
5
6
|
|
6
7
|
[![Build Status](https://secure.travis-ci.org/achied/fluent-plugin-nats.png)](http://travis-ci.org/achied/fluent-plugin-nats)
|
7
8
|
|
@@ -12,6 +13,7 @@ Setup the NATS input:
|
|
12
13
|
~~~~~
|
13
14
|
<source>
|
14
15
|
type nats
|
16
|
+
tag nats
|
15
17
|
host localhost
|
16
18
|
port 4222
|
17
19
|
user nats
|
@@ -20,6 +22,14 @@ Setup the NATS input:
|
|
20
22
|
</source>
|
21
23
|
~~~~~
|
22
24
|
|
25
|
+
Setup the match output:
|
26
|
+
|
27
|
+
~~~~
|
28
|
+
<match nats.fluent.**>
|
29
|
+
type stdout
|
30
|
+
</match>
|
31
|
+
~~~~
|
32
|
+
|
23
33
|
# Suitable Queues
|
24
34
|
|
25
35
|
## Components
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/fluent-plugin-nats.gemspec
CHANGED
@@ -7,8 +7,8 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.authors = ["Eduardo Aceituno"]
|
8
8
|
gem.email = ["achied@gmail.com"]
|
9
9
|
gem.homepage = "https://github.com/achied/fluent-plugin-nats"
|
10
|
-
gem.summary = %q{nats plugin for
|
11
|
-
gem.description = %q{nats plugin for
|
10
|
+
gem.summary = %q{nats plugin for fluentd, an event collector}
|
11
|
+
gem.description = %q{nats plugin for fluentd, an event collector}
|
12
12
|
|
13
13
|
gem.files = `git ls-files`.split("\n")
|
14
14
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
|
|
17
17
|
|
18
18
|
gem.add_dependency "fluentd", ">= 0.10.7"
|
19
19
|
gem.add_dependency "nats", ">= 0.4.22"
|
20
|
+
gem.add_dependency "eventmachine", "= 0.12.10"
|
20
21
|
|
21
22
|
gem.add_development_dependency "rake", ">= 0.9.2"
|
22
|
-
gem.add_development_dependency "rr", ">= 1.0.0"
|
23
23
|
end
|
@@ -7,6 +7,7 @@ module Fluent
|
|
7
7
|
config_param :password, :string, :default => "nats"
|
8
8
|
config_param :port, :integer, :default => 4222
|
9
9
|
config_param :queue, :string, :default => "fluent.>"
|
10
|
+
config_param :tag, :string, :default => "nats"
|
10
11
|
|
11
12
|
def initialize
|
12
13
|
require "nats/client"
|
@@ -18,7 +19,7 @@ module Fluent
|
|
18
19
|
def configure(conf)
|
19
20
|
super
|
20
21
|
@conf = conf
|
21
|
-
@uri = "nats://#{user}:#{password}@#{host}:#{port}"
|
22
|
+
@uri = "nats://#{@user}:#{@password}@#{@host}:#{@port}"
|
22
23
|
unless @host && @queue
|
23
24
|
raise ConfigError, "'host' and 'queue' must be all specified."
|
24
25
|
end
|
@@ -26,38 +27,38 @@ module Fluent
|
|
26
27
|
|
27
28
|
def start
|
28
29
|
super
|
29
|
-
|
30
|
-
@main_thread = Thread.current
|
30
|
+
run_reactor_thread
|
31
31
|
@thread = Thread.new(&method(:run))
|
32
|
-
|
33
|
-
@thread
|
32
|
+
$log.info "listening nats on #{@uri}/#{@queue}"
|
34
33
|
end
|
35
34
|
|
36
35
|
def shutdown
|
37
36
|
super
|
38
|
-
|
37
|
+
@nats_conn.close
|
39
38
|
@thread.join
|
39
|
+
EM.stop if EM.reactor_running?
|
40
|
+
@reactor_thread.join if @reactor_thread
|
40
41
|
end
|
41
42
|
|
42
43
|
def run
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
}
|
51
|
-
else
|
52
|
-
$log.info "Reactor not running. Starting..."
|
53
|
-
NATS.start(:uri => @uri) {
|
54
|
-
NATS.subscribe(@queue) do |msg, reply, sub|
|
55
|
-
Engine.emit(sub, 0, msg)
|
44
|
+
EM.next_tick {
|
45
|
+
@nats_conn = NATS.connect(:uri => @uri) {
|
46
|
+
@nats_conn.subscribe(@queue) do |msg, reply, sub|
|
47
|
+
tag = "#{@tag}.#{sub}"
|
48
|
+
msg_json = JSON.parse(msg)
|
49
|
+
time = msg_json["fluent_timestamp"] || Time.now.to_i
|
50
|
+
Engine.emit(tag, time, msg_json)
|
56
51
|
end
|
57
|
-
$log.info "Reactor running #{EM.reactor_running?}"
|
58
|
-
@main_thread.wakeup
|
59
52
|
}
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
def run_reactor_thread
|
58
|
+
unless EM.reactor_running?
|
59
|
+
@reactor_thread = Thread.new { EM.run }
|
60
60
|
end
|
61
61
|
end
|
62
|
+
|
62
63
|
end
|
63
64
|
end
|
data/test/plugin/in_nats.rb
CHANGED
@@ -35,15 +35,15 @@ class NATSInputTest < Test::Unit::TestCase
|
|
35
35
|
time = Time.parse("2011-01-02 13:14:15 UTC").to_i
|
36
36
|
Fluent::Engine.now = time
|
37
37
|
|
38
|
-
d.expect_emit "fluent.test1",
|
39
|
-
d.expect_emit "fluent.test2",
|
38
|
+
d.expect_emit "nats.fluent.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
|
39
|
+
d.expect_emit "nats.fluent.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
|
40
40
|
|
41
41
|
uri = "nats://#{d.instance.user}:#{d.instance.password}@#{d.instance.host}:#{d.instance.port}"
|
42
42
|
|
43
43
|
start_nats(uri)
|
44
44
|
d.run do
|
45
45
|
d.expected_emits.each { |tag, time, record|
|
46
|
-
send(uri, tag, record)
|
46
|
+
send(uri, tag[5..-1], record)
|
47
47
|
sleep 0.5
|
48
48
|
}
|
49
49
|
end
|
@@ -56,15 +56,15 @@ class NATSInputTest < Test::Unit::TestCase
|
|
56
56
|
time = Time.parse("2011-01-02 13:14:15 UTC").to_i
|
57
57
|
Fluent::Engine.now = time
|
58
58
|
|
59
|
-
d.expect_emit "fluent.test1",
|
60
|
-
d.expect_emit "fluent.test2",
|
59
|
+
d.expect_emit "nats.fluent.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
|
60
|
+
d.expect_emit "nats.fluent.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
|
61
61
|
|
62
62
|
uri = "nats://#{d.instance.host}:#{d.instance.port}"
|
63
63
|
|
64
64
|
start_nats(uri)
|
65
65
|
d.run do
|
66
66
|
d.expected_emits.each { |tag, time, record|
|
67
|
-
send(uri, tag, record)
|
67
|
+
send(uri, tag[5..-1], record)
|
68
68
|
sleep 0.5
|
69
69
|
}
|
70
70
|
end
|
@@ -79,7 +79,7 @@ class NATSInputTest < Test::Unit::TestCase
|
|
79
79
|
def send(uri, tag, msg)
|
80
80
|
EM.run {
|
81
81
|
n = NATS.connect(:uri => uri)
|
82
|
-
n.publish(tag,msg)
|
82
|
+
n.publish(tag,msg.to_json)
|
83
83
|
n.close
|
84
84
|
}
|
85
85
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-nats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fluentd
|
@@ -44,29 +44,29 @@ dependencies:
|
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: 0.4.22
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: eventmachine
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - '='
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.
|
54
|
-
type: :
|
53
|
+
version: 0.12.10
|
54
|
+
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.12.10
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
63
|
+
name: rake
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
none: false
|
66
66
|
requirements:
|
67
67
|
- - ! '>='
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 0.9.2
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,8 +74,8 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
78
|
-
description: nats plugin for
|
77
|
+
version: 0.9.2
|
78
|
+
description: nats plugin for fluentd, an event collector
|
79
79
|
email:
|
80
80
|
- achied@gmail.com
|
81
81
|
executables: []
|
@@ -117,5 +117,5 @@ rubyforge_project:
|
|
117
117
|
rubygems_version: 1.8.24
|
118
118
|
signing_key:
|
119
119
|
specification_version: 3
|
120
|
-
summary: nats plugin for
|
120
|
+
summary: nats plugin for fluentd, an event collector
|
121
121
|
test_files: []
|