@@ -35,17 +35,67 @@ class OtlpInput < Input
35
35
desc "The tag of the event."
36
36
config_param :tag , :string
37
37
38
- config_section :http , required : false , multi : false , init : true , param_name : :http_config do
38
+ config_section :http , required : false , multi : false , init : false , param_name : :http_config do
39
39
desc "The address to bind to."
40
40
config_param :bind , :string , default : "0.0.0.0"
41
41
desc "The port to listen to."
42
42
config_param :port , :integer , default : 4318
43
43
end
44
44
45
+
46
+ config_section :grpc , required : false , multi : false , init : false , param_name : :grpc_config do
47
+ desc "The address to bind to."
48
+ config_param :bind , :string , default : "0.0.0.0"
49
+ desc "The port to listen to."
50
+ config_param :port , :integer , default : 4317
51
+ end
52
+
45
53
config_section :transport , required : false , multi : false , init : true , param_name : :transport_config do
46
54
config_argument :protocol , :enum , list : [ :tls ] , default : nil
47
55
end
48
56
57
+ def configure ( conf )
58
+ super
59
+
60
+ unless [ @http_config , @grpc_config ] . any?
61
+ raise Fluent ::ConfigError , "Please configure either <http> or <grpc> section, or both."
62
+ end
63
+ end
64
+
65
+ def start
66
+ super
67
+
68
+ if @http_config
69
+ http_handler = HttpHandler . new
70
+ http_server_create_http_server ( :in_otlp_http_server_helper , addr : @http_config . bind , port : @http_config . port , logger : log ) do |serv |
71
+ serv . post ( "/v1/logs" ) do |req |
72
+ http_handler . logs ( req ) { |record | router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_LOGS , message : record } ) }
73
+ end
74
+ serv . post ( "/v1/metrics" ) do |req |
75
+ http_handler . metrics ( req ) { |record | router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_METRICS , message : record } ) }
76
+ end
77
+ serv . post ( "/v1/traces" ) do |req |
78
+ http_handler . traces ( req ) { |record | router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_TRACES , message : record } ) }
79
+ end
80
+ end
81
+ end
82
+
83
+ if @grpc_config
84
+ grpc_handler = GrpcHandler . new
85
+ grpc_handler . run (
86
+ logs : lambda { |record |
87
+ router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_LOGS , message : record } )
88
+ } ,
89
+ metrics : lambda { |record |
90
+ router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_METRICS , message : record } )
91
+ } ,
92
+ traces : lambda { |record |
93
+ router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_TRACES , message : record } )
94
+ }
95
+ )
96
+ end
97
+ end
98
+
49
99
class HttpHandler
50
100
def logs ( req , &block )
51
101
common ( req , Otlp ::Request ::Logs , Otlp ::Response ::Logs , &block )
@@ -152,35 +202,5 @@ def run(logs:, metrics:, traces:)
152
202
end
153
203
end
154
204
end
155
-
156
- def start
157
- super
158
-
159
- http_handler = HttpHandler . new
160
- http_server_create_http_server ( :in_otlp_http_server_helper , addr : @http_config . bind , port : @http_config . port , logger : log ) do |serv |
161
- serv . post ( "/v1/logs" ) do |req |
162
- http_handler . logs ( req ) { |record | router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_LOGS , message : record } ) }
163
- end
164
- serv . post ( "/v1/metrics" ) do |req |
165
- http_handler . metrics ( req ) { |record | router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_METRICS , message : record } ) }
166
- end
167
- serv . post ( "/v1/traces" ) do |req |
168
- http_handler . traces ( req ) { |record | router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_TRACES , message : record } ) }
169
- end
170
- end
171
-
172
- grpc_handler = GrpcHandler . new
173
- grpc_handler . run (
174
- logs : lambda { |record |
175
- router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_LOGS , message : record } )
176
- } ,
177
- metrics : lambda { |record |
178
- router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_METRICS , message : record } )
179
- } ,
180
- traces : lambda { |record |
181
- router . emit ( @tag , Fluent ::EventTime . now , { type : Otlp ::RECORD_TYPE_TRACES , message : record } )
182
- }
183
- )
184
- end
185
205
end
186
206
end
0 commit comments