fluent-plugin-nng 1.0.0 → 1.0.2
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/fluent-plugin-nng.gemspec +2 -1
- data/lib/fluent/plugin/{in_nng.rb → in_nng_in.rb} +17 -9
- data/lib/fluent/plugin/{out_nng.rb → out_nng_out.rb} +17 -9
- metadata +18 -5
- data/-la +0 -231
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1c5c435130e3492dd738080d8bef6858d645bee96b5f8abc16b4cca29fc8d5a4
|
|
4
|
+
data.tar.gz: a133ffe2e408bfbeb0886ec86465e1a0ff899c4967ba6c65c0f165236bbc763a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5957f996cec955b679a209e2cf79e16037925f8ee376a320e41848822601eaffa642ef2c0d641cd0d2700805ca03182714fbb36b0a03bd70e8f2ae23a6a1d3f6
|
|
7
|
+
data.tar.gz: ed805f39f85932eb52d3028a4782ef241c112f1f88fff0ac195d52dfc720d00e321a9ff57bef088efb4fcc2321f41b922234fef5cbec0dd64cf87230cae5659c
|
data/fluent-plugin-nng.gemspec
CHANGED
|
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
|
3
3
|
|
|
4
4
|
Gem::Specification.new do |spec|
|
|
5
5
|
spec.name = 'fluent-plugin-nng'
|
|
6
|
-
spec.version = '1.0.
|
|
6
|
+
spec.version = '1.0.2'
|
|
7
7
|
spec.authors = ['whotwagner']
|
|
8
8
|
spec.email = ['code@feedyourhead.at']
|
|
9
9
|
|
|
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
|
|
|
24
24
|
spec.add_development_dependency 'bundler', '~> 2.6.9'
|
|
25
25
|
spec.add_development_dependency 'rake', '~> 13.3.1'
|
|
26
26
|
spec.add_development_dependency 'test-unit', '~> 3.6.7'
|
|
27
|
+
spec.add_development_dependency 'mocha', '~> 3.1.0'
|
|
27
28
|
spec.add_runtime_dependency 'nng', '~> 1.0.1'
|
|
28
29
|
spec.add_runtime_dependency "fluentd", [">= 0.14.10", "< 2"]
|
|
29
30
|
end
|
|
@@ -27,18 +27,26 @@ module Fluent
|
|
|
27
27
|
config_param :uri, :string, default: 'tcp://127.0.0.1:5555'
|
|
28
28
|
config_param :recv_timeout, :float, default: 1.0
|
|
29
29
|
config_param :tag, :string, default: 'nng.input'
|
|
30
|
+
# TLS-Settings
|
|
31
|
+
config_param :cert, :string, default: nil
|
|
32
|
+
config_param :key, :string, secret: true, default: nil
|
|
33
|
+
config_param :ca, :string, default: nil
|
|
34
|
+
config_param :verify, :bool, default: false
|
|
35
|
+
config_param :server_name, :string, default: nil
|
|
30
36
|
|
|
31
37
|
def configure(conf)
|
|
38
|
+
compat_parameters_convert(conf, :parser)
|
|
39
|
+
super
|
|
40
|
+
|
|
32
41
|
if @uri !~ /\A#{URI::RFC2396_PARSER.make_regexp(['tcp', 'ipc', 'inproc', 'ws', 'tls+tcp'])}\z/
|
|
33
42
|
raise Fluent::ConfigError, 'uri must be one of: tcp:// ipc:// inproc:// ws:// or tls+tcp://'
|
|
34
43
|
end
|
|
35
44
|
|
|
36
|
-
compat_parameters_convert(conf, :parser)
|
|
37
45
|
parser_config = conf.elements('parse').first
|
|
38
46
|
unless parser_config
|
|
39
|
-
raise Fluent::ConfigError,
|
|
47
|
+
raise Fluent::ConfigError, '<parse> section is required.'
|
|
40
48
|
end
|
|
41
|
-
|
|
49
|
+
|
|
42
50
|
log.info "parser: #{parser_config}"
|
|
43
51
|
@parser = parser_create(conf: parser_config)
|
|
44
52
|
end
|
|
@@ -56,7 +64,7 @@ module Fluent
|
|
|
56
64
|
File.exist?(uri.path) && File.delete(uri.path)
|
|
57
65
|
end
|
|
58
66
|
@socket = NNG::Socket::Pair0.new
|
|
59
|
-
@socket.listen(@uri)
|
|
67
|
+
@socket.listen(@uri, cert: @cert, key: @key, ca: @ca, verify: @verify, server_name: @server_name)
|
|
60
68
|
@socket.recv_timeout = @recv_timeout
|
|
61
69
|
end
|
|
62
70
|
|
|
@@ -67,13 +75,14 @@ module Fluent
|
|
|
67
75
|
end
|
|
68
76
|
|
|
69
77
|
def run
|
|
70
|
-
log.info
|
|
78
|
+
log.info 'Start listening..'
|
|
71
79
|
loop do
|
|
72
80
|
msg = nil
|
|
73
81
|
until msg
|
|
74
82
|
if @stop
|
|
75
83
|
return
|
|
76
84
|
end
|
|
85
|
+
|
|
77
86
|
begin
|
|
78
87
|
msg = @socket.receive
|
|
79
88
|
rescue Timeout::Error
|
|
@@ -85,19 +94,18 @@ module Fluent
|
|
|
85
94
|
router.emit(@tag, time || Fluent::Engine.now, record)
|
|
86
95
|
end
|
|
87
96
|
end
|
|
88
|
-
|
|
89
97
|
end
|
|
90
98
|
|
|
91
99
|
def stop
|
|
92
|
-
log.info
|
|
100
|
+
log.info 'Stopping..'
|
|
93
101
|
@stop = true
|
|
94
102
|
super
|
|
95
103
|
end
|
|
96
104
|
|
|
97
105
|
def shutdown
|
|
98
|
-
log.info
|
|
106
|
+
log.info 'Initiate shutdown'
|
|
99
107
|
if @socket
|
|
100
|
-
log.info
|
|
108
|
+
log.info 'stopping nng-socket'
|
|
101
109
|
@socket.close
|
|
102
110
|
end
|
|
103
111
|
super
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'fluent/plugin/output'
|
|
2
2
|
require 'nng'
|
|
3
|
-
|
|
3
|
+
require 'uri'
|
|
4
4
|
|
|
5
5
|
module Fluent::Plugin
|
|
6
6
|
class NngOutput < Fluent::Plugin::Output
|
|
@@ -11,6 +11,12 @@ module Fluent::Plugin
|
|
|
11
11
|
config_param :uri, :string, default: 'tcp://127.0.0.1:5559'
|
|
12
12
|
config_param :max_retry, :integer, default: 100
|
|
13
13
|
config_param :retry_time, :integer, default: 5
|
|
14
|
+
# TLS-Settings
|
|
15
|
+
config_param :cert, :string, default: nil
|
|
16
|
+
config_param :key, :string, secret: true, default: nil
|
|
17
|
+
config_param :ca, :string, default: nil
|
|
18
|
+
config_param :verify, :bool, default: nil # needs to be nil!
|
|
19
|
+
config_param :server_name, :string, default: nil
|
|
14
20
|
|
|
15
21
|
config_section :format do
|
|
16
22
|
config_set_default :@type, 'json'
|
|
@@ -19,20 +25,21 @@ module Fluent::Plugin
|
|
|
19
25
|
def initialize
|
|
20
26
|
super
|
|
21
27
|
@formatter = nil
|
|
22
|
-
log.
|
|
28
|
+
log.debug 'Initializing'
|
|
23
29
|
end
|
|
24
30
|
|
|
25
31
|
def configure(conf)
|
|
26
|
-
log.
|
|
32
|
+
log.debug 'configuring..'
|
|
27
33
|
compat_parameters_convert(conf, :formatter, :inject)
|
|
34
|
+
super
|
|
35
|
+
|
|
28
36
|
if @uri !~ /\A#{URI::RFC2396_PARSER.make_regexp(['tcp', 'ipc', 'inproc', 'ws', 'tls+tcp'])}\z/
|
|
29
37
|
raise Fluent::ConfigError, 'uri must be one of: tcp:// ipc:// inproc:// ws:// or tls+tcp://'
|
|
30
38
|
end
|
|
31
39
|
|
|
32
|
-
|
|
33
|
-
log.info "Creating formatter"
|
|
40
|
+
log.info 'Creating formatter'
|
|
34
41
|
@formatter = formatter_create
|
|
35
|
-
log.info
|
|
42
|
+
log.info 'Formatter loaded'
|
|
36
43
|
end
|
|
37
44
|
|
|
38
45
|
def start
|
|
@@ -50,15 +57,16 @@ module Fluent::Plugin
|
|
|
50
57
|
try = 0
|
|
51
58
|
|
|
52
59
|
begin
|
|
53
|
-
@socket.dial(@uri)
|
|
60
|
+
@socket.dial(@uri, cert: @cert, key: @key, ca: @ca, verify: @verify, server_name: @server_name)
|
|
54
61
|
rescue => e
|
|
55
62
|
log.error(e)
|
|
56
|
-
log.info("Retry in
|
|
63
|
+
log.info("Retry in #{@retry_time} sec")
|
|
57
64
|
sleep(@retry_time)
|
|
58
65
|
try += 1
|
|
59
66
|
if @max_retry > 0 && try >= @max_retry
|
|
60
67
|
raise Fluent::UnrecoverableError, e.message
|
|
61
68
|
end
|
|
69
|
+
|
|
62
70
|
retry
|
|
63
71
|
end
|
|
64
72
|
end
|
|
@@ -69,7 +77,7 @@ module Fluent::Plugin
|
|
|
69
77
|
end
|
|
70
78
|
|
|
71
79
|
def shutdown
|
|
72
|
-
log.info(
|
|
80
|
+
log.info('Shutdown socket')
|
|
73
81
|
@socket.close
|
|
74
82
|
super()
|
|
75
83
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fluent-plugin-nng
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- whotwagner
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-
|
|
10
|
+
date: 2026-06-01 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: bundler
|
|
@@ -51,6 +51,20 @@ dependencies:
|
|
|
51
51
|
- - "~>"
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: 3.6.7
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: mocha
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: 3.1.0
|
|
61
|
+
type: :development
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: 3.1.0
|
|
54
68
|
- !ruby/object:Gem::Dependency
|
|
55
69
|
name: nng
|
|
56
70
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -92,13 +106,12 @@ executables: []
|
|
|
92
106
|
extensions: []
|
|
93
107
|
extra_rdoc_files: []
|
|
94
108
|
files:
|
|
95
|
-
- "-la"
|
|
96
109
|
- LICENSE
|
|
97
110
|
- README.md
|
|
98
111
|
- Rakefile
|
|
99
112
|
- fluent-plugin-nng.gemspec
|
|
100
|
-
- lib/fluent/plugin/
|
|
101
|
-
- lib/fluent/plugin/
|
|
113
|
+
- lib/fluent/plugin/in_nng_in.rb
|
|
114
|
+
- lib/fluent/plugin/out_nng_out.rb
|
|
102
115
|
homepage: https://github.com/ait-detectmate/fluent-plugin-nng
|
|
103
116
|
licenses:
|
|
104
117
|
- EUPL-1.2
|
data/-la
DELETED
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
[34mΔ README.md[0m
|
|
3
|
-
[34m────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
|
|
4
|
-
|
|
5
|
-
[34m───────────────────────────────────────────────────────────────────────────────────────[0m[34m┐[0m
|
|
6
|
-
[34m•[0m [34m19[0m:[38;5;231m parses the data using the fluentd-plugin [fluent-plugin-parser-protobuf](https:/ [0m[34m│[0m
|
|
7
|
-
[34m───────────────────────────────────────────────────────────────────────────────────────[0m[34m┘[0m
|
|
8
|
-
|
|
9
|
-
[38;5;231m```[0m
|
|
10
|
-
[38;5;231m<source>[0m
|
|
11
|
-
[48;5;52m @type [48;5;124mnng[0m[48;5;52m[0K[0m
|
|
12
|
-
[48;5;22;38;5;231m @type [48;5;28mnng_in[0m[48;5;22m[0K[0m
|
|
13
|
-
[38;5;231m @id input_nng[0m
|
|
14
|
-
[38;5;231m <parse>[0m
|
|
15
|
-
[38;5;231m @type protobuf[0m
|
|
16
|
-
|
|
17
|
-
[34m───────────────────────────────────────────────────────────────────────────────────────[0m[34m┐[0m
|
|
18
|
-
[34m•[0m [34m28[0m:[38;5;231m parses the data using the fluentd-plugin [fluent-plugin-parser-protobuf](https:/ [0m[34m│[0m
|
|
19
|
-
[34m───────────────────────────────────────────────────────────────────────────────────────[0m[34m┘[0m
|
|
20
|
-
[38;5;141m protobuf_version protobuf3[0m
|
|
21
|
-
[38;5;231m </[38;5;203mparse[38;5;231m>[0m
|
|
22
|
-
[38;5;231m uri tcp://127.0.0.1:5557[0m
|
|
23
|
-
[48;5;52m tag nng.*[0m[48;5;52m[0K[0m
|
|
24
|
-
[38;5;231m</[38;5;203msource[38;5;231m>[0m
|
|
25
|
-
|
|
26
|
-
[38;5;231m<[38;5;203mmatch[38;5;231m [38;5;149mnng.**[38;5;231m>[0m
|
|
27
|
-
|
|
28
|
-
[34m───────────────────────────────────────────────────────────────────────────────────────[0m[34m┐[0m
|
|
29
|
-
[34m•[0m [34m55[0m:[38;5;231m using the detectmate `LogSchema` using [fluent-plugin-detectmate](https://github [0m[34m│[0m
|
|
30
|
-
[34m───────────────────────────────────────────────────────────────────────────────────────[0m[34m┘[0m
|
|
31
|
-
[38;5;231m</[38;5;203msource[38;5;231m>[0m
|
|
32
|
-
|
|
33
|
-
[38;5;231m<[38;5;203mmatch[38;5;231m [38;5;149mnng.**[38;5;231m>[0m
|
|
34
|
-
[48;5;52m @type [48;5;124mnng[0m[48;5;52m[0K[0m
|
|
35
|
-
[48;5;22;38;5;231m @type [48;5;28mnng_out[0m[48;5;22m[0K[0m
|
|
36
|
-
[38;5;231m uri tcp://127.0.0.1:5557[0m
|
|
37
|
-
[38;5;231m <[38;5;203minject[38;5;231m>[0m
|
|
38
|
-
[38;5;231m hostname_key hostname[0m
|
|
39
|
-
|
|
40
|
-
[34mΔ fluent-plugin-nng.gemspec[0m
|
|
41
|
-
[34m────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
|
|
42
|
-
|
|
43
|
-
[34m─────────────────────────────────────────────────────────────[0m[34m┐[0m
|
|
44
|
-
[34m•[0m [34m3[0m:[38;5;231m [38;5;214m$[38;5;231mLOAD_PATH.unshift(lib) [38;5;203munless[38;5;231m [38;5;214m$[38;5;231mLOAD_PATH.[38;5;81minclude?[38;5;231m(lib) [0m[34m│[0m
|
|
45
|
-
[34m─────────────────────────────────────────────────────────────[0m[34m┘[0m
|
|
46
|
-
|
|
47
|
-
[38;5;81mGem[38;5;231m::[38;5;81mSpecification[38;5;231m.[38;5;149mnew[38;5;231m [38;5;203mdo[38;5;231m |[38;5;208mspec[38;5;231m|[0m
|
|
48
|
-
[38;5;231m spec.[38;5;81mname[38;5;231m [38;5;203m=[38;5;231m [38;5;203m"[38;5;186mfluent-plugin-nng[38;5;203m"[0m
|
|
49
|
-
[48;5;52m spec.version = "[48;5;124m0.[48;5;52m1.[48;5;124m1[48;5;52m"[0m[48;5;52m[0K[0m
|
|
50
|
-
[48;5;22;38;5;231m spec.version [38;5;203m=[38;5;231m [38;5;203m"[38;5;186m1.[48;5;28m0.0[48;5;22;38;5;203m"[0m[48;5;22m[0K[0m
|
|
51
|
-
[38;5;231m spec.authors [38;5;203m=[38;5;231m [[38;5;203m"[38;5;186mwhotwagner[38;5;203m"[38;5;231m][0m
|
|
52
|
-
[38;5;231m spec.email [38;5;203m=[38;5;231m [[38;5;203m"[38;5;186mcode@feedyourhead.at[38;5;203m"[38;5;231m][0m
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
[34m───────────────────────────────────────[0m[34m┐[0m
|
|
56
|
-
[34m•[0m [34m21[0m:[38;5;231m [38;5;81mGem[38;5;231m::[38;5;81mSpecification[38;5;231m.[38;5;149mnew[38;5;231m [38;5;203mdo[38;5;231m |[38;5;208mspec[38;5;231m| [0m[34m│[0m
|
|
57
|
-
[34m───────────────────────────────────────[0m[34m┘[0m
|
|
58
|
-
[38;5;231m spec.executables [38;5;203m=[38;5;231m spec.files.grep([38;5;203m%r{[38;5;214m^bin/[38;5;203m}[38;5;231m) { |[38;5;208mf[38;5;231m| [38;5;81mFile[38;5;231m.basename(f) }[0m
|
|
59
|
-
[38;5;231m spec.require_paths [38;5;203m=[38;5;231m [[38;5;203m"[38;5;186mlib[38;5;203m"[38;5;231m][0m
|
|
60
|
-
|
|
61
|
-
[48;5;52m spec.add_development_dependency [48;5;124m"[48;5;52mbundler[48;5;124m"[48;5;52m, [48;5;124m"[48;5;52m~> 2.6.9[48;5;124m"[0m[48;5;52m[0K[0m
|
|
62
|
-
[48;5;52m spec.add_development_dependency [48;5;124m"[48;5;52mrake[48;5;124m"[48;5;52m, [48;5;124m"[48;5;52m~> 13.3.1[48;5;124m"[0m[48;5;52m[0K[0m
|
|
63
|
-
[48;5;52m spec.add_development_dependency [48;5;124m"[48;5;52mtest-unit[48;5;124m"[48;5;52m, [48;5;124m"[48;5;52m~> 3.6.7[48;5;124m"[0m[48;5;52m[0K[0m
|
|
64
|
-
[48;5;52m spec.add_runtime_dependency [48;5;124m"[48;5;52mnng[48;5;124m-ruby"[48;5;52m, [48;5;124m"[48;5;52m~> 1.0.1[48;5;124m"[0m[48;5;52m[0K[0m
|
|
65
|
-
[48;5;22;38;5;231m spec.add_development_dependency [48;5;28;38;5;203m'[48;5;22;38;5;186mbundler[48;5;28;38;5;203m'[48;5;22;38;5;231m,[48;5;28m [38;5;203m'[48;5;22;38;5;186m~> 2.6.9[48;5;28;38;5;203m'[0m[48;5;22m[0K[0m
|
|
66
|
-
[48;5;22;38;5;231m spec.add_development_dependency [48;5;28;38;5;203m'[48;5;22;38;5;186mrake[48;5;28;38;5;203m'[48;5;22;38;5;231m,[48;5;28m [38;5;203m'[48;5;22;38;5;186m~> 13.3.1[48;5;28;38;5;203m'[0m[48;5;22m[0K[0m
|
|
67
|
-
[48;5;22;38;5;231m spec.add_development_dependency [48;5;28;38;5;203m'[48;5;22;38;5;186mtest-unit[48;5;28;38;5;203m'[48;5;22;38;5;231m,[48;5;28m [38;5;203m'[48;5;22;38;5;186m~> 3.6.7[48;5;28;38;5;203m'[0m[48;5;22m[0K[0m
|
|
68
|
-
[48;5;22;38;5;231m spec.add_runtime_dependency [48;5;28;38;5;203m'[48;5;22;38;5;186mnng[48;5;28;38;5;203m'[48;5;22;38;5;231m,[48;5;28m [38;5;203m'[48;5;22;38;5;186m~> 1.0.1[48;5;28;38;5;203m'[0m[48;5;22m[0K[0m
|
|
69
|
-
[38;5;231m spec.add_runtime_dependency [38;5;203m"[38;5;186mfluentd[38;5;203m"[38;5;231m, [[38;5;203m"[38;5;186m>= 0.14.10[38;5;203m"[38;5;231m, [38;5;203m"[38;5;186m< 2[38;5;203m"[38;5;231m][0m
|
|
70
|
-
[38;5;203mend[0m
|
|
71
|
-
|
|
72
|
-
[34mΔ lib/fluent/plugin/in_nng.rb[0m
|
|
73
|
-
[34m────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
|
|
74
|
-
|
|
75
|
-
[34m──────[0m[34m┐[0m
|
|
76
|
-
[34m•[0m [34m15[0m: [34m│[0m
|
|
77
|
-
[34m──────[0m[34m┘[0m
|
|
78
|
-
|
|
79
|
-
[38;5;203mrequire[38;5;231m [38;5;203m'[38;5;186mfluent/plugin/input[38;5;203m'[0m
|
|
80
|
-
[38;5;203mrequire[38;5;231m [38;5;203m'[38;5;186mnng[38;5;203m'[0m
|
|
81
|
-
[48;5;22;38;5;203mrequire[38;5;231m [38;5;203m'[38;5;186muri[38;5;203m'[0m[48;5;22m[0K[0m
|
|
82
|
-
|
|
83
|
-
[38;5;203mmodule[38;5;231m [38;5;149mFluent[0m
|
|
84
|
-
[38;5;231m [38;5;203mmodule[38;5;231m [38;5;149mPlugin[0m
|
|
85
|
-
[38;5;231m [38;5;203mclass[38;5;149m [38;5;81mNngInput[38;5;149m < Fluent::Plugin::Input[0m
|
|
86
|
-
[48;5;52m Fluent::Plugin.register_input('[48;5;124mnng[48;5;52m', self)[0m[48;5;52m[0K[0m
|
|
87
|
-
[48;5;22;38;5;231m [38;5;81mFluent[38;5;231m::[38;5;81mPlugin[38;5;231m.register_input([38;5;203m'[48;5;28;38;5;186mnng_in[48;5;22;38;5;203m'[38;5;231m, self)[0m[48;5;22m[0K[0m
|
|
88
|
-
|
|
89
|
-
[48;5;52m helpers :parser, :compat_parameters[0m[48;5;52m[0K[0m
|
|
90
|
-
[48;5;22;38;5;231m helpers [38;5;228m:parser[38;5;231m, [38;5;228m:compat_parameters[48;5;28;38;5;231m, [38;5;228m:thread[0m[48;5;22m[0K[0m
|
|
91
|
-
|
|
92
|
-
[38;5;231m config_param [38;5;228m:uri[38;5;231m, [38;5;228m:string[38;5;231m, [38;5;228mdefault:[38;5;231m [38;5;203m'[38;5;186mtcp://127.0.0.1:5555[38;5;203m'[0m
|
|
93
|
-
[48;5;22;38;5;231m config_param [38;5;228m:recv_timeout[38;5;231m, [38;5;228m:float[38;5;231m, [38;5;228mdefault:[38;5;231m [38;5;141m1.0[0m[48;5;22m[0K[0m
|
|
94
|
-
[48;5;22;38;5;231m config_param [38;5;228m:tag[38;5;231m, [38;5;228m:string[38;5;231m, [38;5;228mdefault:[38;5;231m [38;5;203m'[38;5;186mnng.input[38;5;203m'[0m[48;5;22m[0K[0m
|
|
95
|
-
|
|
96
|
-
[38;5;231m [38;5;203mdef[38;5;231m [38;5;214mconfigure[38;5;231m([38;5;208mconf[38;5;231m)[0m
|
|
97
|
-
[38;5;231m [38;5;203mif[38;5;231m [38;5;214m@[38;5;231muri [38;5;203m!~[38;5;214m [38;5;203m/[38;5;141m\A[38;5;231m#{[38;5;81mURI[38;5;231m::[38;5;81mRFC2396_PARSER[38;5;231m.make_regexp([[38;5;203m'[38;5;186mtcp[38;5;203m'[38;5;231m, [38;5;203m'[38;5;186mipc[38;5;203m'[38;5;231m, [38;5;203m'[38;5;186minproc[38;5;203m'[38;5;231m, [38;5;203m'[38;5;186mws[38;5;203m'[38;5;231m, [38;5;203m'[38;5;186mtls+tcp[38;5;203m'[38;5;231m])}[38;5;141m\z[38;5;203m/[0m
|
|
98
|
-
|
|
99
|
-
[34m────────────────────[0m[34m┐[0m
|
|
100
|
-
[34m•[0m [34m55[0m:[38;5;231m [38;5;203mmodule[38;5;231m [38;5;149mFluent[38;5;231m [0m[34m│[0m
|
|
101
|
-
[34m────────────────────[0m[34m┘[0m
|
|
102
|
-
[38;5;231m [38;5;203mif[38;5;231m uri.scheme [38;5;203m==[38;5;231m [38;5;203m'[38;5;186mipc[38;5;203m'[0m
|
|
103
|
-
[38;5;231m [38;5;81mFile[38;5;231m.exist?(uri.path) [38;5;203m&&[38;5;231m [38;5;81mFile[38;5;231m.delete(uri.path)[0m
|
|
104
|
-
[38;5;231m [38;5;203mend[0m
|
|
105
|
-
[48;5;52m @socket = NNG::Socket.new[48;5;124m(:pair0)[0m[48;5;52m[0K[0m
|
|
106
|
-
[48;5;22;38;5;231m [38;5;214m@[38;5;231msocket [38;5;203m=[38;5;231m [38;5;81mNNG[38;5;231m::[38;5;81mSocket[48;5;28;38;5;231m::[38;5;81mPair0[48;5;22;38;5;231m.[38;5;149mnew[0m[48;5;22m[0K[0m
|
|
107
|
-
[38;5;231m [38;5;214m@[38;5;231msocket.listen([38;5;214m@[38;5;231muri)[0m
|
|
108
|
-
[48;5;52m @socket.recv_timeout = [48;5;124m5000[0m[48;5;52m[0K[0m
|
|
109
|
-
[48;5;22;38;5;231m [38;5;214m@[38;5;231msocket.recv_timeout [38;5;203m=[38;5;231m [48;5;28;38;5;214m@[38;5;231mrecv_timeout[0m[48;5;22m[0K[0m
|
|
110
|
-
[38;5;231m [38;5;203mend[0m
|
|
111
|
-
|
|
112
|
-
[38;5;231m [38;5;203mdef[38;5;231m [38;5;214mstart[0m
|
|
113
|
-
[38;5;231m [38;5;81msuper[0m
|
|
114
|
-
[38;5;231m listen[0m
|
|
115
|
-
[48;5;52m run[0m[48;5;52m[0K[0m
|
|
116
|
-
[48;5;22;38;5;231m thread_create([38;5;228m:nng_input_run[38;5;231m, [38;5;203m&[38;5;81mmethod[38;5;231m([38;5;228m:run[38;5;231m))[0m[48;5;22m[0K[0m
|
|
117
|
-
[38;5;231m [38;5;203mend[0m
|
|
118
|
-
|
|
119
|
-
[38;5;231m [38;5;203mdef[38;5;231m [38;5;214mrun[0m
|
|
120
|
-
[38;5;231m log.info [38;5;203m"[38;5;186mstart looping..[38;5;203m"[0m
|
|
121
|
-
[38;5;231m [38;5;203mloop[38;5;231m [38;5;203mdo[0m
|
|
122
|
-
[48;5;52m begin[0m[48;5;52m[0K[0m
|
|
123
|
-
[48;5;52m [48;5;124m [48;5;52mmsg = nil[0m[48;5;52m[0K[0m
|
|
124
|
-
[48;5;52m [48;5;124m [48;5;52muntil msg[0m[48;5;52m[0K[0m
|
|
125
|
-
[48;5;52m [48;5;124m [48;5;52mif @stop[0m[48;5;52m[0K[0m
|
|
126
|
-
[48;5;52m [48;5;124m [48;5;52mreturn[0m[48;5;52m[0K[0m
|
|
127
|
-
[48;5;52m end[0m[48;5;52m[0K[0m
|
|
128
|
-
[48;5;52m begin[0m[48;5;52m[0K[0m
|
|
129
|
-
[48;5;52m msg = @socket.recv[0m[48;5;52m[0K[0m
|
|
130
|
-
[48;5;52m rescue NNG::Error[0m[48;5;52m[0K[0m
|
|
131
|
-
[48;5;52m next[0m[48;5;52m[0K[0m
|
|
132
|
-
[48;5;52m end[0m[48;5;52m[0K[0m
|
|
133
|
-
[48;5;22;38;5;231m msg [38;5;203m=[38;5;231m [38;5;141mnil[0m[48;5;22m[0K[0m
|
|
134
|
-
[48;5;22;38;5;231m [38;5;203muntil[38;5;231m msg[0m[48;5;22m[0K[0m
|
|
135
|
-
[48;5;22;38;5;231m [38;5;203mif[38;5;231m [38;5;214m@[38;5;231mstop[0m[48;5;22m[0K[0m
|
|
136
|
-
[48;5;22;38;5;231m [38;5;203mreturn[0m[48;5;22m[0K[0m
|
|
137
|
-
[38;5;231m [38;5;203mend[0m
|
|
138
|
-
[48;5;52m tag = "nng.input"[0m[48;5;52m[0K[0m
|
|
139
|
-
[48;5;52m @parser.parse(msg) do |time, record|[0m[48;5;52m[0K[0m
|
|
140
|
-
[48;5;52m router.emit(tag, time, record)[0m[48;5;52m[0K[0m
|
|
141
|
-
[48;5;22;38;5;231m [38;5;203mbegin[0m[48;5;22m[0K[0m
|
|
142
|
-
[48;5;22;38;5;231m msg [38;5;203m=[38;5;231m [38;5;214m@[38;5;231msocket.receive[0m[48;5;22m[0K[0m
|
|
143
|
-
[48;5;22;38;5;231m [38;5;203mrescue[38;5;231m [38;5;81mTimeout[38;5;231m::Error[0m[48;5;22m[0K[0m
|
|
144
|
-
[48;5;22;38;5;231m [38;5;81msleep[38;5;231m [38;5;141m0.01[0m[48;5;22m[0K[0m
|
|
145
|
-
[48;5;22;38;5;231m [38;5;203mnext[0m[48;5;22m[0K[0m
|
|
146
|
-
[38;5;231m [38;5;203mend[0m
|
|
147
|
-
[48;5;52m rescue NNG::Error => e[0m[48;5;52m[0K[0m
|
|
148
|
-
[48;5;52m log.warn "Error in processing message.", :error_class => e.class, :error => e[0m[48;5;52m[0K[0m
|
|
149
|
-
[48;5;22;38;5;231m [38;5;203mend[0m[48;5;22m[0K[0m
|
|
150
|
-
[48;5;22;38;5;231m [38;5;214m@[38;5;231mparser.parse(msg) [38;5;203mdo[38;5;231m |[38;5;208mtime[38;5;231m, [38;5;208mrecord[38;5;231m|[0m[48;5;22m[0K[0m
|
|
151
|
-
[48;5;22;38;5;231m router.emit([38;5;214m@[38;5;231mtag, time [38;5;203m||[38;5;231m [38;5;81mFluent[38;5;231m::[38;5;81mEngine[38;5;231m.now, record)[0m[48;5;22m[0K[0m
|
|
152
|
-
[38;5;231m [38;5;203mend[0m
|
|
153
|
-
[38;5;231m [38;5;203mend[0m
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
[34mΔ lib/fluent/plugin/out_nng.rb[0m
|
|
157
|
-
[34m────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
|
|
158
|
-
|
|
159
|
-
[34m───────────────────[0m[34m┐[0m
|
|
160
|
-
[34m•[0m [34m4[0m:[38;5;231m [38;5;203mrequire[38;5;231m [38;5;203m'[38;5;186mnng[38;5;203m'[38;5;231m [0m[34m│[0m
|
|
161
|
-
[34m───────────────────[0m[34m┘[0m
|
|
162
|
-
|
|
163
|
-
[38;5;203mmodule[38;5;231m [38;5;149mFluent::Plugin[0m
|
|
164
|
-
[38;5;231m [38;5;203mclass[38;5;149m [38;5;81mNngOutput[38;5;149m < Fluent::Plugin::Output[0m
|
|
165
|
-
[48;5;52m Fluent::Plugin.register_output('[48;5;124mnng[48;5;52m', self)[0m[48;5;52m[0K[0m
|
|
166
|
-
[48;5;22;38;5;231m [38;5;81mFluent[38;5;231m::[38;5;81mPlugin[38;5;231m.register_output([38;5;203m'[48;5;28;38;5;186mnng_out[48;5;22;38;5;203m'[38;5;231m, self)[0m[48;5;22m[0K[0m
|
|
167
|
-
|
|
168
|
-
[38;5;231m helpers [38;5;228m:formatter[38;5;231m, [38;5;228m:inject[38;5;231m, [38;5;228m:compat_parameters[0m
|
|
169
|
-
|
|
170
|
-
[38;5;231m config_param [38;5;228m:uri[38;5;231m, [38;5;228m:string[38;5;231m, [38;5;228mdefault:[38;5;231m [38;5;203m'[38;5;186mtcp://127.0.0.1:5559[38;5;203m'[0m
|
|
171
|
-
[48;5;52m config_param :max_retry, :integer, default: [48;5;124m1000[0m[48;5;52m[0K[0m
|
|
172
|
-
[48;5;22;38;5;231m config_param [38;5;228m:max_retry[38;5;231m, [38;5;228m:integer[38;5;231m, [38;5;228mdefault:[38;5;231m [48;5;28;38;5;141m100[0m[48;5;22m[0K[0m
|
|
173
|
-
[48;5;22;38;5;231m config_param [38;5;228m:retry_time[38;5;231m, [38;5;228m:integer[38;5;231m, [38;5;228mdefault:[38;5;231m [38;5;141m5[0m[48;5;22m[0K[0m
|
|
174
|
-
|
|
175
|
-
[38;5;231m config_section [38;5;228m:format[38;5;231m [38;5;203mdo[0m
|
|
176
|
-
[38;5;231m config_set_default [38;5;228m:@type[38;5;231m, [38;5;203m'[38;5;186mjson[38;5;203m'[0m
|
|
177
|
-
|
|
178
|
-
[34m────────────────────────────[0m[34m┐[0m
|
|
179
|
-
[34m•[0m [34m19[0m:[38;5;231m [38;5;203mmodule[38;5;231m [38;5;149mFluent::Plugin[38;5;231m [0m[34m│[0m
|
|
180
|
-
[34m────────────────────────────[0m[34m┘[0m
|
|
181
|
-
[38;5;231m [38;5;203mdef[38;5;231m [38;5;214minitialize[0m
|
|
182
|
-
[38;5;231m [38;5;81msuper[0m
|
|
183
|
-
[38;5;231m [38;5;214m@[38;5;231mformatter [38;5;203m=[38;5;231m [38;5;141mnil[0m
|
|
184
|
-
[48;5;22;38;5;231m log.info [38;5;203m'[38;5;186mInitializing[38;5;203m'[0m[48;5;22m[0K[0m
|
|
185
|
-
[38;5;231m [38;5;203mend[0m
|
|
186
|
-
|
|
187
|
-
[38;5;231m [38;5;203mdef[38;5;231m [38;5;214mconfigure[38;5;231m([38;5;208mconf[38;5;231m)[0m
|
|
188
|
-
[48;5;22;38;5;231m log.info [38;5;203m"[38;5;186mconfiguring..[38;5;203m"[0m[48;5;22m[0K[0m
|
|
189
|
-
[38;5;231m compat_parameters_convert(conf, [38;5;228m:formatter[38;5;231m, [38;5;228m:inject[38;5;231m)[0m
|
|
190
|
-
[38;5;231m [38;5;203mif[38;5;231m [38;5;214m@[38;5;231muri [38;5;203m!~[38;5;214m [38;5;203m/[38;5;141m\A[38;5;231m#{[38;5;81mURI[38;5;231m::[38;5;81mRFC2396_PARSER[38;5;231m.make_regexp([[38;5;203m'[38;5;186mtcp[38;5;203m'[38;5;231m, [38;5;203m'[38;5;186mipc[38;5;203m'[38;5;231m, [38;5;203m'[38;5;186minproc[38;5;203m'[38;5;231m, [38;5;203m'[38;5;186mws[38;5;203m'[38;5;231m, [38;5;203m'[38;5;186mtls+tcp[38;5;203m'[38;5;231m])}[38;5;141m\z[38;5;203m/[0m
|
|
191
|
-
[38;5;231m [38;5;203mraise[38;5;231m [38;5;81mFluent[38;5;231m::ConfigError, [38;5;203m'[38;5;186muri must be one of: tcp:// ipc:// inproc:// ws:// or tls+tcp://[38;5;203m'[0m
|
|
192
|
-
[38;5;231m [38;5;203mend[0m
|
|
193
|
-
|
|
194
|
-
[38;5;231m [38;5;81msuper[0m
|
|
195
|
-
[48;5;22;38;5;231m log.info [38;5;203m"[38;5;186mCreating formatter[38;5;203m"[0m[48;5;22m[0K[0m
|
|
196
|
-
[38;5;231m [38;5;214m@[38;5;231mformatter [38;5;203m=[38;5;231m formatter_create[0m
|
|
197
|
-
[48;5;22;38;5;231m log.info [38;5;203m"[38;5;186mFormatter loaded[38;5;203m"[0m[48;5;22m[0K[0m
|
|
198
|
-
[38;5;231m [38;5;203mend[0m
|
|
199
|
-
|
|
200
|
-
[38;5;231m [38;5;203mdef[38;5;231m [38;5;214mstart[0m
|
|
201
|
-
[38;5;231m [38;5;81msuper[0m
|
|
202
|
-
[48;5;52m log.info "[48;5;124mStarting listener at[48;5;52m: #{@uri}"[0m[48;5;52m[0K[0m
|
|
203
|
-
[48;5;22;38;5;231m log.info [38;5;203m"[48;5;28;38;5;186mInitiating connection to[48;5;22m: [38;5;231m#{[38;5;214m@[38;5;231muri}[38;5;203m"[0m[48;5;22m[0K[0m
|
|
204
|
-
[38;5;231m connect[0m
|
|
205
|
-
[38;5;231m [38;5;203mend[0m
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
[34m────────────────────────────[0m[34m┐[0m
|
|
209
|
-
[34m•[0m [34m46[0m:[38;5;231m [38;5;203mmodule[38;5;231m [38;5;149mFluent::Plugin[38;5;231m [0m[34m│[0m
|
|
210
|
-
[34m────────────────────────────[0m[34m┘[0m
|
|
211
|
-
[38;5;231m [38;5;203mend[0m
|
|
212
|
-
|
|
213
|
-
[38;5;231m [38;5;203mdef[38;5;231m [38;5;214mconnect[0m
|
|
214
|
-
[48;5;52m @socket = NNG::Socket.new[48;5;124m(:pair0)[0m[48;5;52m[0K[0m
|
|
215
|
-
[48;5;22;38;5;231m [38;5;214m@[38;5;231msocket [38;5;203m=[38;5;231m [38;5;81mNNG[38;5;231m::[38;5;81mSocket[48;5;28;38;5;231m::[38;5;81mPair0[48;5;22;38;5;231m.[38;5;149mnew[0m[48;5;22m[0K[0m
|
|
216
|
-
[38;5;231m try [38;5;203m=[38;5;231m [38;5;141m0[0m
|
|
217
|
-
|
|
218
|
-
[38;5;231m [38;5;203mbegin[0m
|
|
219
|
-
[38;5;231m [38;5;214m@[38;5;231msocket.dial([38;5;214m@[38;5;231muri)[0m
|
|
220
|
-
[48;5;52m rescue [48;5;124mNNG::Error [48;5;52m=> e[0m[48;5;52m[0K[0m
|
|
221
|
-
[48;5;22;38;5;231m [38;5;203mrescue[38;5;231m => e[0m[48;5;22m[0K[0m
|
|
222
|
-
[38;5;231m log.error(e)[0m
|
|
223
|
-
[38;5;231m log.info([38;5;203m"[38;5;186mRetry in 5sec[38;5;203m"[38;5;231m)[0m
|
|
224
|
-
[48;5;52m sleep([48;5;124m5[48;5;52m)[0m[48;5;52m[0K[0m
|
|
225
|
-
[48;5;22;38;5;231m [38;5;81msleep[38;5;231m([48;5;28;38;5;214m@[38;5;231mretry_time[48;5;22m)[0m[48;5;22m[0K[0m
|
|
226
|
-
[38;5;231m try [38;5;203m+=[38;5;231m [38;5;141m1[0m
|
|
227
|
-
[48;5;52m if try >= @max_retry[0m[48;5;52m[0K[0m
|
|
228
|
-
[48;5;22;38;5;231m [38;5;203mif[38;5;231m [48;5;28;38;5;214m@[38;5;231mmax_retry [38;5;203m>[38;5;231m [38;5;141m0[38;5;231m [38;5;203m&&[38;5;231m [48;5;22mtry [38;5;203m>=[38;5;231m [38;5;214m@[38;5;231mmax_retry[0m[48;5;22m[0K[0m
|
|
229
|
-
[38;5;231m [38;5;203mraise[38;5;231m [38;5;81mFluent[38;5;231m::UnrecoverableError, e.message[0m
|
|
230
|
-
[38;5;231m [38;5;203mend[0m
|
|
231
|
-
[38;5;231m [38;5;203mretry[0m
|