fluent-plugin-opentelemetry-radiant 0.1.0

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.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +50 -0
  3. data/LICENSE +202 -0
  4. data/NOTICE +23 -0
  5. data/README.md +278 -0
  6. data/lib/fluent/plugin/in_opentelemetry.rb +118 -0
  7. data/lib/fluent/plugin/in_opentelemetry_metrics.rb +285 -0
  8. data/lib/fluent/plugin/opentelemetry/constant.rb +35 -0
  9. data/lib/fluent/plugin/opentelemetry/grpc_input_handler.rb +89 -0
  10. data/lib/fluent/plugin/opentelemetry/grpc_output_handler.rb +161 -0
  11. data/lib/fluent/plugin/opentelemetry/http_input_handler.rb +177 -0
  12. data/lib/fluent/plugin/opentelemetry/http_output_handler.rb +157 -0
  13. data/lib/fluent/plugin/opentelemetry/log_record_builder.rb +229 -0
  14. data/lib/fluent/plugin/opentelemetry/output_response.rb +21 -0
  15. data/lib/fluent/plugin/opentelemetry/request.rb +67 -0
  16. data/lib/fluent/plugin/opentelemetry/response.rb +90 -0
  17. data/lib/fluent/plugin/opentelemetry/version.rb +9 -0
  18. data/lib/fluent/plugin/opentelemetry_radiant/version.rb +14 -0
  19. data/lib/fluent/plugin/out_opentelemetry.rb +11 -0
  20. data/lib/fluent/plugin/out_opentelemetry_radiant.rb +205 -0
  21. data/lib/opentelemetry/proto/collector/logs/v1/logs_service_pb.rb +27 -0
  22. data/lib/opentelemetry/proto/collector/logs/v1/logs_service_services_pb.rb +48 -0
  23. data/lib/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.rb +27 -0
  24. data/lib/opentelemetry/proto/collector/metrics/v1/metrics_service_services_pb.rb +48 -0
  25. data/lib/opentelemetry/proto/collector/profiles/v1development/profiles_service_pb.rb +27 -0
  26. data/lib/opentelemetry/proto/collector/profiles/v1development/profiles_service_services_pb.rb +47 -0
  27. data/lib/opentelemetry/proto/collector/trace/v1/trace_service_pb.rb +27 -0
  28. data/lib/opentelemetry/proto/collector/trace/v1/trace_service_services_pb.rb +48 -0
  29. data/lib/opentelemetry/proto/common/v1/common_pb.rb +26 -0
  30. data/lib/opentelemetry/proto/logs/v1/logs_pb.rb +29 -0
  31. data/lib/opentelemetry/proto/metrics/v1/metrics_pb.rb +41 -0
  32. data/lib/opentelemetry/proto/profiles/v1development/profiles_pb.rb +36 -0
  33. data/lib/opentelemetry/proto/resource/v1/resource_pb.rb +23 -0
  34. data/lib/opentelemetry/proto/trace/v1/trace_pb.rb +33 -0
  35. metadata +198 -0
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fluent/plugin/opentelemetry/constant"
4
+ require "opentelemetry/proto/collector/logs/v1/logs_service_pb"
5
+ require "opentelemetry/proto/collector/metrics/v1/metrics_service_pb"
6
+ require "opentelemetry/proto/collector/trace/v1/trace_service_pb"
7
+
8
+ require "google/protobuf"
9
+
10
+ module Fluent::Plugin::Opentelemetry::Response
11
+ def self.type(content_type)
12
+ case content_type
13
+ when Fluent::Plugin::Opentelemetry::CONTENT_TYPE_PROTOBUF
14
+ :protobuf
15
+ when Fluent::Plugin::Opentelemetry::CONTENT_TYPE_JSON
16
+ :json
17
+ else
18
+ raise "unknown content-type: #{content_type}"
19
+ end
20
+ end
21
+
22
+ class Logs
23
+ def self.build(rejected: 0, error: "")
24
+ Opentelemetry::Proto::Collector::Logs::V1::ExportLogsServiceResponse.new(
25
+ partial_success: Opentelemetry::Proto::Collector::Logs::V1::ExportLogsPartialSuccess.new(
26
+ rejected_log_records: rejected,
27
+ error_message: error
28
+ )
29
+ )
30
+ end
31
+
32
+ def initialize(rejected: 0, error: "")
33
+ @response = Logs.build(rejected: rejected, error: error)
34
+ end
35
+
36
+ def body(type:)
37
+ if type == :protobuf
38
+ @response.to_proto
39
+ else
40
+ @response.to_json
41
+ end
42
+ end
43
+ end
44
+
45
+ class Metrics
46
+ def self.build(rejected: 0, error: "")
47
+ Opentelemetry::Proto::Collector::Metrics::V1::ExportMetricsServiceResponse.new(
48
+ partial_success: Opentelemetry::Proto::Collector::Metrics::V1::ExportMetricsPartialSuccess.new(
49
+ rejected_data_points: rejected,
50
+ error_message: error
51
+ )
52
+ )
53
+ end
54
+
55
+ def initialize(rejected: 0, error: "")
56
+ @response = Metrics.build(rejected: rejected, error: error)
57
+ end
58
+
59
+ def body(type:)
60
+ if type == :protobuf
61
+ @response.to_proto
62
+ else
63
+ @response.to_json
64
+ end
65
+ end
66
+ end
67
+
68
+ class Traces
69
+ def self.build(rejected: 0, error: "")
70
+ Opentelemetry::Proto::Collector::Trace::V1::ExportTraceServiceResponse.new(
71
+ partial_success: Opentelemetry::Proto::Collector::Trace::V1::ExportTracePartialSuccess.new(
72
+ rejected_spans: rejected,
73
+ error_message: error
74
+ )
75
+ )
76
+ end
77
+
78
+ def initialize(rejected: 0, error: "")
79
+ @response = Traces.build(rejected: rejected, error: error)
80
+ end
81
+
82
+ def body(type:)
83
+ if type == :protobuf
84
+ @response.to_proto
85
+ else
86
+ @response.to_json
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fluent
4
+ module Plugin
5
+ module Opentelemetry
6
+ VERSION = "0.4.0"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2026 Radiant Logic, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+
8
+ module Fluent
9
+ module Plugin
10
+ module OpentelemetryRadiant
11
+ VERSION = "0.1.0"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2025- Shizuo Fujita
4
+ # Copyright 2026 Radiant Logic, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ #
9
+ # Fluentd resolves `@type opentelemetry` by requiring this path. The fork's
10
+ # implementation registers both `opentelemetry` and `opentelemetry_radiant`.
11
+ require "fluent/plugin/out_opentelemetry_radiant"
@@ -0,0 +1,205 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2025- Shizuo Fujita
4
+ # Copyright 2026 Radiant Logic, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ #
9
+ # This file is based on fluent-plugin-opentelemetry 0.4.0 and was modified by
10
+ # Radiant Logic, Inc. to add ordinary-record OTLP log conversion and batching.
11
+
12
+ require "fluent/plugin/opentelemetry/constant"
13
+ require "fluent/plugin/opentelemetry/http_output_handler"
14
+ require "fluent/plugin/opentelemetry/log_record_builder"
15
+ require "fluent/plugin/output"
16
+ require "fluent/plugin_helper/server"
17
+ require "fluent/msgpack_factory"
18
+
19
+ require "json"
20
+
21
+ begin
22
+ require "grpc"
23
+
24
+ require "fluent/plugin/opentelemetry/grpc_output_handler"
25
+ rescue LoadError
26
+ end
27
+
28
+ module Fluent::Plugin
29
+ class OpentelemetryRadiantOutput < Output
30
+ class RetryableResponse < StandardError; end
31
+
32
+ RELAY_TYPES = [
33
+ Opentelemetry::RECORD_TYPE_LOGS,
34
+ Opentelemetry::RECORD_TYPE_METRICS,
35
+ Opentelemetry::RECORD_TYPE_TRACES
36
+ ].freeze
37
+
38
+ Fluent::Plugin.register_output("opentelemetry_radiant", self)
39
+ Fluent::Plugin.register_output("opentelemetry", self)
40
+
41
+ # Reuse Fluentd's transport parameters without configuring a listening server.
42
+ include Fluent::PluginHelper::Server::ServerTransportParams
43
+
44
+ desc "How records are handled: auto-detect relay records, relay all records, or convert all records"
45
+ config_param :mode, :enum, list: %i[auto relay records], default: :auto
46
+ desc "Record key used for the OTLP log body in string body format"
47
+ config_param :body_key, :string, default: "message"
48
+ desc "OTLP log body representation"
49
+ config_param :body_format, :enum, list: %i[string kvlist], default: :string
50
+ desc "Record key used for OTLP severity text and number"
51
+ config_param :severity_key, :string, default: "severity"
52
+ desc "Add non-body, non-severity top-level record fields as OTLP log attributes"
53
+ config_param :attributes_from_record, :bool, default: true
54
+ desc "Record keys omitted from OTLP log attributes"
55
+ config_param :exclude_keys, :array, value_type: :string, default: []
56
+ desc "Static OTLP resource attributes"
57
+ config_param :resource_attributes, :hash, default: {}
58
+ desc "Mapping of OTLP resource attribute names to record keys"
59
+ config_param :resource_attributes_from_record, :hash, value_type: :string, default: {}
60
+ desc "OTLP instrumentation scope name"
61
+ config_param :scope_name, :string, default: "fluent-plugin-opentelemetry-radiant"
62
+
63
+ desc "HTTP headers or gRPC metadata sent with every export"
64
+ config_param :headers, :hash, value_type: :string, secret: true, default: {}
65
+
66
+ config_section :buffer do
67
+ config_set_default :chunk_keys, ["tag"]
68
+ config_set_default :chunk_limit_size, 2 * 1024 * 1024
69
+ end
70
+
71
+ config_section :http, required: false, multi: false, init: false, param_name: :http_config do
72
+ desc "The endpoint"
73
+ config_param :endpoint, :string, default: "http://127.0.0.1:4318"
74
+ desc "The proxy for HTTP request"
75
+ config_param :proxy, :string, default: ENV["HTTP_PROXY"] || ENV["http_proxy"]
76
+
77
+ desc "Raise UnrecoverableError when the response is non success, 4xx/5xx"
78
+ config_param :error_response_as_unrecoverable, :bool, default: true
79
+ desc "The list of retryable response code"
80
+ config_param :retryable_response_codes, :array, value_type: :integer, default: [429, 502, 503, 504]
81
+
82
+ desc "Compress request body"
83
+ config_param :compress, :enum, list: %i[text gzip], default: :text
84
+
85
+ desc "The read timeout in seconds"
86
+ config_param :read_timeout, :integer, default: 60
87
+ desc "The write timeout in seconds"
88
+ config_param :write_timeout, :integer, default: 60
89
+ desc "The connect timeout in seconds"
90
+ config_param :connect_timeout, :integer, default: 60
91
+ end
92
+
93
+ config_section :grpc, required: false, multi: false, init: false, param_name: :grpc_config do
94
+ desc "The endpoint"
95
+ config_param :endpoint, :string, default: "127.0.0.1:4317"
96
+ desc "Compress request body"
97
+ config_param :compress, :enum, list: %i[text gzip], default: :text
98
+ desc "The per-call timeout in seconds"
99
+ config_param :timeout, :integer, default: 60
100
+ desc "The interval in seconds to send gRPC keepalive pings"
101
+ config_param :keepalive_time, :integer, default: 30
102
+ desc "The timeout in seconds to wait for a keepalive acknowledgement"
103
+ config_param :keepalive_timeout, :integer, default: 10
104
+ end
105
+
106
+ config_section :transport, required: false, multi: false, init: false, param_name: :transport_config do
107
+ config_argument :protocol, :enum, list: [:tls], default: nil
108
+ end
109
+
110
+ def configure(conf)
111
+ super
112
+
113
+ if @grpc_config && !defined?(GRPC)
114
+ raise Fluent::ConfigError, "To use gRPC feature, please install grpc gem such as 'fluent-gem install grpc'."
115
+ end
116
+
117
+ unless [@http_config, @grpc_config].one?
118
+ raise Fluent::ConfigError, "Please configure either <http> or <grpc> section."
119
+ end
120
+
121
+ @http_handler = Opentelemetry::HttpOutputHandler.new(@http_config, @transport_config, log, @headers) if @http_config
122
+ @grpc_handler = Opentelemetry::GrpcOutputHandler.new(@grpc_config, @transport_config, log, @headers) if @grpc_config
123
+ @log_record_builder = Opentelemetry::LogRecordBuilder.new(
124
+ body_key: @body_key,
125
+ body_format: @body_format,
126
+ severity_key: @severity_key,
127
+ attributes_from_record: @attributes_from_record,
128
+ exclude_keys: @exclude_keys,
129
+ resource_attributes: @resource_attributes,
130
+ resource_attributes_from_record: @resource_attributes_from_record,
131
+ scope_name: @scope_name
132
+ )
133
+ end
134
+
135
+ def start
136
+ super
137
+
138
+ if @http_config && @transport_config.protocol == :tls && @transport_config.insecure
139
+ log.warn "OTLP/HTTP TLS certificate verification is off (insecure true)"
140
+ end
141
+ end
142
+
143
+ def multi_workers_ready?
144
+ true
145
+ end
146
+
147
+ def formatted_to_msgpack_binary?
148
+ true
149
+ end
150
+
151
+ def format(tag, time, record)
152
+ [time, record].to_msgpack(Fluent::MessagePackFactory.msgpack_packer).to_s
153
+ end
154
+
155
+ def write(chunk)
156
+ relay_records = []
157
+ record_events = []
158
+ chunk.msgpack_each do |time, record|
159
+ if relay_record?(record)
160
+ relay_records << normalize_relay_record(record)
161
+ else
162
+ record_events << [time, record]
163
+ end
164
+ end
165
+
166
+ request = nil
167
+ unless record_events.empty?
168
+ tag = chunk.metadata.tag
169
+ raise "buffer chunk is missing tag metadata" unless tag
170
+
171
+ request = @log_record_builder.build(tag, record_events)
172
+ end
173
+ handler = @grpc_handler || @http_handler
174
+ relay_records.each { |record| handler.export(record) }
175
+ handler.export_logs(request) if request
176
+ end
177
+
178
+ private
179
+
180
+ def relay_record?(record)
181
+ return true if @mode == :relay
182
+ return false if @mode == :records
183
+
184
+ type_present, type = record_value(record, "type")
185
+ message_present, = record_value(record, "message")
186
+ type_present && message_present && RELAY_TYPES.include?(type.to_s)
187
+ end
188
+
189
+ def normalize_relay_record(record)
190
+ JSON.parse(JSON.generate(record))
191
+ end
192
+
193
+ def record_value(record, key)
194
+ return [true, record[key]] if record.key?(key)
195
+
196
+ symbol_key = key.to_sym
197
+ return [true, record[symbol_key]] if record.key?(symbol_key)
198
+
199
+ [false, nil]
200
+ end
201
+ end
202
+
203
+ # Preserve the public class constant used by fluent-plugin-opentelemetry 0.4.0.
204
+ OpentelemetryOutput = OpentelemetryRadiantOutput
205
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: opentelemetry/proto/collector/logs/v1/logs_service.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'opentelemetry/proto/logs/v1/logs_pb'
8
+
9
+
10
+ descriptor_data = "\n8opentelemetry/proto/collector/logs/v1/logs_service.proto\x12%opentelemetry.proto.collector.logs.v1\x1a&opentelemetry/proto/logs/v1/logs.proto\"\\\n\x18\x45xportLogsServiceRequest\x12@\n\rresource_logs\x18\x01 \x03(\x0b\x32).opentelemetry.proto.logs.v1.ResourceLogs\"u\n\x19\x45xportLogsServiceResponse\x12X\n\x0fpartial_success\x18\x01 \x01(\x0b\x32?.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\"O\n\x18\x45xportLogsPartialSuccess\x12\x1c\n\x14rejected_log_records\x18\x01 \x01(\x03\x12\x15\n\rerror_message\x18\x02 \x01(\t2\x9d\x01\n\x0bLogsService\x12\x8d\x01\n\x06\x45xport\x12?.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\x1a@.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\"\x00\x42\x98\x01\n(io.opentelemetry.proto.collector.logs.v1B\x10LogsServiceProtoP\x01Z0go.opentelemetry.io/proto/otlp/collector/logs/v1\xaa\x02%OpenTelemetry.Proto.Collector.Logs.V1b\x06proto3"
11
+
12
+ pool = Google::Protobuf::DescriptorPool.generated_pool
13
+ pool.add_serialized_file(descriptor_data)
14
+
15
+ module Opentelemetry
16
+ module Proto
17
+ module Collector
18
+ module Logs
19
+ module V1
20
+ ExportLogsServiceRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest").msgclass
21
+ ExportLogsServiceResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse").msgclass
22
+ ExportLogsPartialSuccess = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess").msgclass
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,48 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: opentelemetry/proto/collector/logs/v1/logs_service.proto for package 'opentelemetry.proto.collector.logs.v1'
3
+ # Original file comments:
4
+ # Copyright 2020, OpenTelemetry Authors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'grpc'
20
+ require 'opentelemetry/proto/collector/logs/v1/logs_service_pb'
21
+
22
+ module Opentelemetry
23
+ module Proto
24
+ module Collector
25
+ module Logs
26
+ module V1
27
+ module LogsService
28
+ # Service that can be used to push logs between one Application instrumented with
29
+ # OpenTelemetry and an collector, or between an collector and a central collector (in this
30
+ # case logs are sent/received to/from multiple Applications).
31
+ class Service
32
+
33
+ include ::GRPC::GenericService
34
+
35
+ self.marshal_class_method = :encode
36
+ self.unmarshal_class_method = :decode
37
+ self.service_name = 'opentelemetry.proto.collector.logs.v1.LogsService'
38
+
39
+ rpc :Export, ::Opentelemetry::Proto::Collector::Logs::V1::ExportLogsServiceRequest, ::Opentelemetry::Proto::Collector::Logs::V1::ExportLogsServiceResponse
40
+ end
41
+
42
+ Stub = Service.rpc_stub_class
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: opentelemetry/proto/collector/metrics/v1/metrics_service.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'opentelemetry/proto/metrics/v1/metrics_pb'
8
+
9
+
10
+ descriptor_data = "\n>opentelemetry/proto/collector/metrics/v1/metrics_service.proto\x12(opentelemetry.proto.collector.metrics.v1\x1a,opentelemetry/proto/metrics/v1/metrics.proto\"h\n\x1b\x45xportMetricsServiceRequest\x12I\n\x10resource_metrics\x18\x01 \x03(\x0b\x32/.opentelemetry.proto.metrics.v1.ResourceMetrics\"~\n\x1c\x45xportMetricsServiceResponse\x12^\n\x0fpartial_success\x18\x01 \x01(\x0b\x32\x45.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\"R\n\x1b\x45xportMetricsPartialSuccess\x12\x1c\n\x14rejected_data_points\x18\x01 \x01(\x03\x12\x15\n\rerror_message\x18\x02 \x01(\t2\xac\x01\n\x0eMetricsService\x12\x99\x01\n\x06\x45xport\x12\x45.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\x1a\x46.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\"\x00\x42\xa4\x01\n+io.opentelemetry.proto.collector.metrics.v1B\x13MetricsServiceProtoP\x01Z3go.opentelemetry.io/proto/otlp/collector/metrics/v1\xaa\x02(OpenTelemetry.Proto.Collector.Metrics.V1b\x06proto3"
11
+
12
+ pool = Google::Protobuf::DescriptorPool.generated_pool
13
+ pool.add_serialized_file(descriptor_data)
14
+
15
+ module Opentelemetry
16
+ module Proto
17
+ module Collector
18
+ module Metrics
19
+ module V1
20
+ ExportMetricsServiceRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest").msgclass
21
+ ExportMetricsServiceResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse").msgclass
22
+ ExportMetricsPartialSuccess = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess").msgclass
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,48 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: opentelemetry/proto/collector/metrics/v1/metrics_service.proto for package 'opentelemetry.proto.collector.metrics.v1'
3
+ # Original file comments:
4
+ # Copyright 2019, OpenTelemetry Authors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'grpc'
20
+ require 'opentelemetry/proto/collector/metrics/v1/metrics_service_pb'
21
+
22
+ module Opentelemetry
23
+ module Proto
24
+ module Collector
25
+ module Metrics
26
+ module V1
27
+ module MetricsService
28
+ # Service that can be used to push metrics between one Application
29
+ # instrumented with OpenTelemetry and a collector, or between a collector and a
30
+ # central collector.
31
+ class Service
32
+
33
+ include ::GRPC::GenericService
34
+
35
+ self.marshal_class_method = :encode
36
+ self.unmarshal_class_method = :decode
37
+ self.service_name = 'opentelemetry.proto.collector.metrics.v1.MetricsService'
38
+
39
+ rpc :Export, ::Opentelemetry::Proto::Collector::Metrics::V1::ExportMetricsServiceRequest, ::Opentelemetry::Proto::Collector::Metrics::V1::ExportMetricsServiceResponse
40
+ end
41
+
42
+ Stub = Service.rpc_stub_class
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: opentelemetry/proto/collector/profiles/v1development/profiles_service.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'opentelemetry/proto/profiles/v1development/profiles_pb'
8
+
9
+
10
+ descriptor_data = "\nKopentelemetry/proto/collector/profiles/v1development/profiles_service.proto\x12\x34opentelemetry.proto.collector.profiles.v1development\x1a\x39opentelemetry/proto/profiles/v1development/profiles.proto\"w\n\x1c\x45xportProfilesServiceRequest\x12W\n\x11resource_profiles\x18\x01 \x03(\x0b\x32<.opentelemetry.proto.profiles.v1development.ResourceProfiles\"\x8c\x01\n\x1d\x45xportProfilesServiceResponse\x12k\n\x0fpartial_success\x18\x01 \x01(\x0b\x32R.opentelemetry.proto.collector.profiles.v1development.ExportProfilesPartialSuccess\"P\n\x1c\x45xportProfilesPartialSuccess\x12\x19\n\x11rejected_profiles\x18\x01 \x01(\x03\x12\x15\n\rerror_message\x18\x02 \x01(\t2\xc7\x01\n\x0fProfilesService\x12\xb3\x01\n\x06\x45xport\x12R.opentelemetry.proto.collector.profiles.v1development.ExportProfilesServiceRequest\x1aS.opentelemetry.proto.collector.profiles.v1development.ExportProfilesServiceResponse\"\x00\x42\xc9\x01\n7io.opentelemetry.proto.collector.profiles.v1developmentB\x14ProfilesServiceProtoP\x01Z?go.opentelemetry.io/proto/otlp/collector/profiles/v1development\xaa\x02\x34OpenTelemetry.Proto.Collector.Profiles.V1Developmentb\x06proto3"
11
+
12
+ pool = Google::Protobuf::DescriptorPool.generated_pool
13
+ pool.add_serialized_file(descriptor_data)
14
+
15
+ module Opentelemetry
16
+ module Proto
17
+ module Collector
18
+ module Profiles
19
+ module V1development
20
+ ExportProfilesServiceRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.profiles.v1development.ExportProfilesServiceRequest").msgclass
21
+ ExportProfilesServiceResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.profiles.v1development.ExportProfilesServiceResponse").msgclass
22
+ ExportProfilesPartialSuccess = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.profiles.v1development.ExportProfilesPartialSuccess").msgclass
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,47 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: opentelemetry/proto/collector/profiles/v1development/profiles_service.proto for package 'opentelemetry.proto.collector.profiles.v1development'
3
+ # Original file comments:
4
+ # Copyright 2023, OpenTelemetry Authors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'grpc'
20
+ require 'opentelemetry/proto/collector/profiles/v1development/profiles_service_pb'
21
+
22
+ module Opentelemetry
23
+ module Proto
24
+ module Collector
25
+ module Profiles
26
+ module V1development
27
+ module ProfilesService
28
+ # Service that can be used to push profiles between one Application instrumented with
29
+ # OpenTelemetry and a collector, or between a collector and a central collector.
30
+ class Service
31
+
32
+ include ::GRPC::GenericService
33
+
34
+ self.marshal_class_method = :encode
35
+ self.unmarshal_class_method = :decode
36
+ self.service_name = 'opentelemetry.proto.collector.profiles.v1development.ProfilesService'
37
+
38
+ rpc :Export, ::Opentelemetry::Proto::Collector::Profiles::V1development::ExportProfilesServiceRequest, ::Opentelemetry::Proto::Collector::Profiles::V1development::ExportProfilesServiceResponse
39
+ end
40
+
41
+ Stub = Service.rpc_stub_class
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: opentelemetry/proto/collector/trace/v1/trace_service.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'opentelemetry/proto/trace/v1/trace_pb'
8
+
9
+
10
+ descriptor_data = "\n:opentelemetry/proto/collector/trace/v1/trace_service.proto\x12&opentelemetry.proto.collector.trace.v1\x1a(opentelemetry/proto/trace/v1/trace.proto\"`\n\x19\x45xportTraceServiceRequest\x12\x43\n\x0eresource_spans\x18\x01 \x03(\x0b\x32+.opentelemetry.proto.trace.v1.ResourceSpans\"x\n\x1a\x45xportTraceServiceResponse\x12Z\n\x0fpartial_success\x18\x01 \x01(\x0b\x32\x41.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\"J\n\x19\x45xportTracePartialSuccess\x12\x16\n\x0erejected_spans\x18\x01 \x01(\x03\x12\x15\n\rerror_message\x18\x02 \x01(\t2\xa2\x01\n\x0cTraceService\x12\x91\x01\n\x06\x45xport\x12\x41.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\x1a\x42.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\"\x00\x42\x9c\x01\n)io.opentelemetry.proto.collector.trace.v1B\x11TraceServiceProtoP\x01Z1go.opentelemetry.io/proto/otlp/collector/trace/v1\xaa\x02&OpenTelemetry.Proto.Collector.Trace.V1b\x06proto3"
11
+
12
+ pool = Google::Protobuf::DescriptorPool.generated_pool
13
+ pool.add_serialized_file(descriptor_data)
14
+
15
+ module Opentelemetry
16
+ module Proto
17
+ module Collector
18
+ module Trace
19
+ module V1
20
+ ExportTraceServiceRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest").msgclass
21
+ ExportTraceServiceResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse").msgclass
22
+ ExportTracePartialSuccess = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess").msgclass
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,48 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: opentelemetry/proto/collector/trace/v1/trace_service.proto for package 'opentelemetry.proto.collector.trace.v1'
3
+ # Original file comments:
4
+ # Copyright 2019, OpenTelemetry Authors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'grpc'
20
+ require 'opentelemetry/proto/collector/trace/v1/trace_service_pb'
21
+
22
+ module Opentelemetry
23
+ module Proto
24
+ module Collector
25
+ module Trace
26
+ module V1
27
+ module TraceService
28
+ # Service that can be used to push spans between one Application instrumented with
29
+ # OpenTelemetry and a collector, or between a collector and a central collector (in this
30
+ # case spans are sent/received to/from multiple Applications).
31
+ class Service
32
+
33
+ include ::GRPC::GenericService
34
+
35
+ self.marshal_class_method = :encode
36
+ self.unmarshal_class_method = :decode
37
+ self.service_name = 'opentelemetry.proto.collector.trace.v1.TraceService'
38
+
39
+ rpc :Export, ::Opentelemetry::Proto::Collector::Trace::V1::ExportTraceServiceRequest, ::Opentelemetry::Proto::Collector::Trace::V1::ExportTraceServiceResponse
40
+ end
41
+
42
+ Stub = Service.rpc_stub_class
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: opentelemetry/proto/common/v1/common.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+
8
+ descriptor_data = "\n*opentelemetry/proto/common/v1/common.proto\x12\x1dopentelemetry.proto.common.v1\"\x8c\x02\n\x08\x41nyValue\x12\x16\n\x0cstring_value\x18\x01 \x01(\tH\x00\x12\x14\n\nbool_value\x18\x02 \x01(\x08H\x00\x12\x13\n\tint_value\x18\x03 \x01(\x03H\x00\x12\x16\n\x0c\x64ouble_value\x18\x04 \x01(\x01H\x00\x12@\n\x0b\x61rray_value\x18\x05 \x01(\x0b\x32).opentelemetry.proto.common.v1.ArrayValueH\x00\x12\x43\n\x0ckvlist_value\x18\x06 \x01(\x0b\x32+.opentelemetry.proto.common.v1.KeyValueListH\x00\x12\x15\n\x0b\x62ytes_value\x18\x07 \x01(\x0cH\x00\x42\x07\n\x05value\"E\n\nArrayValue\x12\x37\n\x06values\x18\x01 \x03(\x0b\x32\'.opentelemetry.proto.common.v1.AnyValue\"G\n\x0cKeyValueList\x12\x37\n\x06values\x18\x01 \x03(\x0b\x32\'.opentelemetry.proto.common.v1.KeyValue\"O\n\x08KeyValue\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.opentelemetry.proto.common.v1.AnyValue\"\x94\x01\n\x14InstrumentationScope\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12;\n\nattributes\x18\x03 \x03(\x0b\x32\'.opentelemetry.proto.common.v1.KeyValue\x12 \n\x18\x64ropped_attributes_count\x18\x04 \x01(\r\"X\n\tEntityRef\x12\x12\n\nschema_url\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0f\n\x07id_keys\x18\x03 \x03(\t\x12\x18\n\x10\x64\x65scription_keys\x18\x04 \x03(\tB{\n io.opentelemetry.proto.common.v1B\x0b\x43ommonProtoP\x01Z(go.opentelemetry.io/proto/otlp/common/v1\xaa\x02\x1dOpenTelemetry.Proto.Common.V1b\x06proto3"
9
+
10
+ pool = Google::Protobuf::DescriptorPool.generated_pool
11
+ pool.add_serialized_file(descriptor_data)
12
+
13
+ module Opentelemetry
14
+ module Proto
15
+ module Common
16
+ module V1
17
+ AnyValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.common.v1.AnyValue").msgclass
18
+ ArrayValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.common.v1.ArrayValue").msgclass
19
+ KeyValueList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.common.v1.KeyValueList").msgclass
20
+ KeyValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.common.v1.KeyValue").msgclass
21
+ InstrumentationScope = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.common.v1.InstrumentationScope").msgclass
22
+ EntityRef = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("opentelemetry.proto.common.v1.EntityRef").msgclass
23
+ end
24
+ end
25
+ end
26
+ end