fluent-plugin-nng 0.1.1 → 1.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 +4 -4
- data/-la +231 -0
- data/README.md +2 -3
- data/fluent-plugin-nng.gemspec +8 -8
- data/lib/fluent/plugin/{in_nng.rb → in_nng_in.rb} +20 -21
- data/lib/fluent/plugin/{out_nng.rb → out_nng_out.rb} +12 -7
- metadata +7 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 108c6b67534c09aa347bcdf7b7b1732b54565b06f595561efba8099cf48d1995
|
|
4
|
+
data.tar.gz: 7d31085434f55dd27f8b0458747eae7b27f323bfe51c29b8c7f5b5c88f2cc7e3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 964127e6dc4caa03e3d4d7a0b82be262796ceef8b1a23681efb9f8b406eccd85921dc0ab6bfee7db99b75464ca0cc41700d0161c25714ada46f31acfc15e4a85
|
|
7
|
+
data.tar.gz: 1ace1f867e1101e69dc9208eaf3d02c1094c361a527bda6bd5000e2a3b444506fe405a01084ed9206036b17787aa5696a150002045c818b446b57c1a8b2390be
|
data/-la
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
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
|
data/README.md
CHANGED
|
@@ -19,7 +19,7 @@ parses the data using the fluentd-plugin [fluent-plugin-parser-protobuf](https:/
|
|
|
19
19
|
|
|
20
20
|
```
|
|
21
21
|
<source>
|
|
22
|
-
@type
|
|
22
|
+
@type nng_in
|
|
23
23
|
@id input_nng
|
|
24
24
|
<parse>
|
|
25
25
|
@type protobuf
|
|
@@ -28,7 +28,6 @@ parses the data using the fluentd-plugin [fluent-plugin-parser-protobuf](https:/
|
|
|
28
28
|
protobuf_version protobuf3
|
|
29
29
|
</parse>
|
|
30
30
|
uri tcp://127.0.0.1:5557
|
|
31
|
-
tag nng.*
|
|
32
31
|
</source>
|
|
33
32
|
|
|
34
33
|
<match nng.**>
|
|
@@ -56,7 +55,7 @@ using the detectmate `LogSchema` using [fluent-plugin-detectmate](https://github
|
|
|
56
55
|
</source>
|
|
57
56
|
|
|
58
57
|
<match nng.**>
|
|
59
|
-
@type
|
|
58
|
+
@type nng_out
|
|
60
59
|
uri tcp://127.0.0.1:5557
|
|
61
60
|
<inject>
|
|
62
61
|
hostname_key hostname
|
data/fluent-plugin-nng.gemspec
CHANGED
|
@@ -2,10 +2,10 @@ lib = File.expand_path("../lib", __FILE__)
|
|
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
|
|
4
4
|
Gem::Specification.new do |spec|
|
|
5
|
-
spec.name =
|
|
6
|
-
spec.version =
|
|
7
|
-
spec.authors = [
|
|
8
|
-
spec.email = [
|
|
5
|
+
spec.name = 'fluent-plugin-nng'
|
|
6
|
+
spec.version = '1.0.1'
|
|
7
|
+
spec.authors = ['whotwagner']
|
|
8
|
+
spec.email = ['code@feedyourhead.at']
|
|
9
9
|
|
|
10
10
|
spec.summary = %q{Fluentd input-/output plugin for nanomsg-ng.}
|
|
11
11
|
spec.description = %q{Fluentd input-/output plugin for nanomsg-ng.}
|
|
@@ -21,9 +21,9 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
22
22
|
spec.require_paths = ["lib"]
|
|
23
23
|
|
|
24
|
-
spec.add_development_dependency
|
|
25
|
-
spec.add_development_dependency
|
|
26
|
-
spec.add_development_dependency
|
|
27
|
-
spec.add_runtime_dependency
|
|
24
|
+
spec.add_development_dependency 'bundler', '~> 2.6.9'
|
|
25
|
+
spec.add_development_dependency 'rake', '~> 13.3.1'
|
|
26
|
+
spec.add_development_dependency 'test-unit', '~> 3.6.7'
|
|
27
|
+
spec.add_runtime_dependency 'nng', '~> 1.0.1'
|
|
28
28
|
spec.add_runtime_dependency "fluentd", [">= 0.14.10", "< 2"]
|
|
29
29
|
end
|
|
@@ -15,15 +15,18 @@
|
|
|
15
15
|
|
|
16
16
|
require 'fluent/plugin/input'
|
|
17
17
|
require 'nng'
|
|
18
|
+
require 'uri'
|
|
18
19
|
|
|
19
20
|
module Fluent
|
|
20
21
|
module Plugin
|
|
21
22
|
class NngInput < Fluent::Plugin::Input
|
|
22
|
-
Fluent::Plugin.register_input('
|
|
23
|
+
Fluent::Plugin.register_input('nng_in', self)
|
|
23
24
|
|
|
24
|
-
helpers :parser, :compat_parameters
|
|
25
|
+
helpers :parser, :compat_parameters, :thread
|
|
25
26
|
|
|
26
27
|
config_param :uri, :string, default: 'tcp://127.0.0.1:5555'
|
|
28
|
+
config_param :recv_timeout, :float, default: 1.0
|
|
29
|
+
config_param :tag, :string, default: 'nng.input'
|
|
27
30
|
|
|
28
31
|
def configure(conf)
|
|
29
32
|
if @uri !~ /\A#{URI::RFC2396_PARSER.make_regexp(['tcp', 'ipc', 'inproc', 'ws', 'tls+tcp'])}\z/
|
|
@@ -52,38 +55,34 @@ module Fluent
|
|
|
52
55
|
if uri.scheme == 'ipc'
|
|
53
56
|
File.exist?(uri.path) && File.delete(uri.path)
|
|
54
57
|
end
|
|
55
|
-
@socket = NNG::Socket.new
|
|
58
|
+
@socket = NNG::Socket::Pair0.new
|
|
56
59
|
@socket.listen(@uri)
|
|
57
|
-
@socket.recv_timeout =
|
|
60
|
+
@socket.recv_timeout = @recv_timeout
|
|
58
61
|
end
|
|
59
62
|
|
|
60
63
|
def start
|
|
61
64
|
super
|
|
62
65
|
listen
|
|
63
|
-
run
|
|
66
|
+
thread_create(:nng_input_run, &method(:run))
|
|
64
67
|
end
|
|
65
68
|
|
|
66
69
|
def run
|
|
67
70
|
log.info "start looping.."
|
|
68
71
|
loop do
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return
|
|
74
|
-
end
|
|
75
|
-
begin
|
|
76
|
-
msg = @socket.recv
|
|
77
|
-
rescue NNG::Error
|
|
78
|
-
next
|
|
79
|
-
end
|
|
72
|
+
msg = nil
|
|
73
|
+
until msg
|
|
74
|
+
if @stop
|
|
75
|
+
return
|
|
80
76
|
end
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
begin
|
|
78
|
+
msg = @socket.receive
|
|
79
|
+
rescue Timeout::Error
|
|
80
|
+
sleep 0.01
|
|
81
|
+
next
|
|
84
82
|
end
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
end
|
|
84
|
+
@parser.parse(msg) do |time, record|
|
|
85
|
+
router.emit(@tag, time || Fluent::Engine.now, record)
|
|
87
86
|
end
|
|
88
87
|
end
|
|
89
88
|
|
|
@@ -4,12 +4,13 @@ require 'nng'
|
|
|
4
4
|
|
|
5
5
|
module Fluent::Plugin
|
|
6
6
|
class NngOutput < Fluent::Plugin::Output
|
|
7
|
-
Fluent::Plugin.register_output('
|
|
7
|
+
Fluent::Plugin.register_output('nng_out', self)
|
|
8
8
|
|
|
9
9
|
helpers :formatter, :inject, :compat_parameters
|
|
10
10
|
|
|
11
11
|
config_param :uri, :string, default: 'tcp://127.0.0.1:5559'
|
|
12
|
-
config_param :max_retry, :integer, default:
|
|
12
|
+
config_param :max_retry, :integer, default: 100
|
|
13
|
+
config_param :retry_time, :integer, default: 5
|
|
13
14
|
|
|
14
15
|
config_section :format do
|
|
15
16
|
config_set_default :@type, 'json'
|
|
@@ -18,21 +19,25 @@ module Fluent::Plugin
|
|
|
18
19
|
def initialize
|
|
19
20
|
super
|
|
20
21
|
@formatter = nil
|
|
22
|
+
log.info 'Initializing'
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
def configure(conf)
|
|
26
|
+
log.info "configuring.."
|
|
24
27
|
compat_parameters_convert(conf, :formatter, :inject)
|
|
25
28
|
if @uri !~ /\A#{URI::RFC2396_PARSER.make_regexp(['tcp', 'ipc', 'inproc', 'ws', 'tls+tcp'])}\z/
|
|
26
29
|
raise Fluent::ConfigError, 'uri must be one of: tcp:// ipc:// inproc:// ws:// or tls+tcp://'
|
|
27
30
|
end
|
|
28
31
|
|
|
29
32
|
super
|
|
33
|
+
log.info "Creating formatter"
|
|
30
34
|
@formatter = formatter_create
|
|
35
|
+
log.info "Formatter loaded"
|
|
31
36
|
end
|
|
32
37
|
|
|
33
38
|
def start
|
|
34
39
|
super
|
|
35
|
-
log.info "
|
|
40
|
+
log.info "Initiating connection to: #{@uri}"
|
|
36
41
|
connect
|
|
37
42
|
end
|
|
38
43
|
|
|
@@ -41,17 +46,17 @@ module Fluent::Plugin
|
|
|
41
46
|
end
|
|
42
47
|
|
|
43
48
|
def connect
|
|
44
|
-
@socket = NNG::Socket.new
|
|
49
|
+
@socket = NNG::Socket::Pair0.new
|
|
45
50
|
try = 0
|
|
46
51
|
|
|
47
52
|
begin
|
|
48
53
|
@socket.dial(@uri)
|
|
49
|
-
rescue
|
|
54
|
+
rescue => e
|
|
50
55
|
log.error(e)
|
|
51
56
|
log.info("Retry in 5sec")
|
|
52
|
-
sleep(
|
|
57
|
+
sleep(@retry_time)
|
|
53
58
|
try += 1
|
|
54
|
-
if try >= @max_retry
|
|
59
|
+
if @max_retry > 0 && try >= @max_retry
|
|
55
60
|
raise Fluent::UnrecoverableError, e.message
|
|
56
61
|
end
|
|
57
62
|
retry
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fluent-plugin-nng
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- whotwagner
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date: 2026-04-
|
|
10
|
+
date: 2026-04-29 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: bundler
|
|
@@ -53,7 +52,7 @@ dependencies:
|
|
|
53
52
|
- !ruby/object:Gem::Version
|
|
54
53
|
version: 3.6.7
|
|
55
54
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: nng
|
|
55
|
+
name: nng
|
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
|
58
57
|
requirements:
|
|
59
58
|
- - "~>"
|
|
@@ -93,17 +92,17 @@ executables: []
|
|
|
93
92
|
extensions: []
|
|
94
93
|
extra_rdoc_files: []
|
|
95
94
|
files:
|
|
95
|
+
- "-la"
|
|
96
96
|
- LICENSE
|
|
97
97
|
- README.md
|
|
98
98
|
- Rakefile
|
|
99
99
|
- fluent-plugin-nng.gemspec
|
|
100
|
-
- lib/fluent/plugin/
|
|
101
|
-
- lib/fluent/plugin/
|
|
100
|
+
- lib/fluent/plugin/in_nng_in.rb
|
|
101
|
+
- lib/fluent/plugin/out_nng_out.rb
|
|
102
102
|
homepage: https://github.com/ait-detectmate/fluent-plugin-nng
|
|
103
103
|
licenses:
|
|
104
104
|
- EUPL-1.2
|
|
105
105
|
metadata: {}
|
|
106
|
-
post_install_message:
|
|
107
106
|
rdoc_options: []
|
|
108
107
|
require_paths:
|
|
109
108
|
- lib
|
|
@@ -118,8 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
118
117
|
- !ruby/object:Gem::Version
|
|
119
118
|
version: '0'
|
|
120
119
|
requirements: []
|
|
121
|
-
rubygems_version: 3.
|
|
122
|
-
signing_key:
|
|
120
|
+
rubygems_version: 3.6.2
|
|
123
121
|
specification_version: 4
|
|
124
122
|
summary: Fluentd input-/output plugin for nanomsg-ng.
|
|
125
123
|
test_files: []
|