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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +50 -0
- data/LICENSE +202 -0
- data/NOTICE +23 -0
- data/README.md +278 -0
- data/lib/fluent/plugin/in_opentelemetry.rb +118 -0
- data/lib/fluent/plugin/in_opentelemetry_metrics.rb +285 -0
- data/lib/fluent/plugin/opentelemetry/constant.rb +35 -0
- data/lib/fluent/plugin/opentelemetry/grpc_input_handler.rb +89 -0
- data/lib/fluent/plugin/opentelemetry/grpc_output_handler.rb +161 -0
- data/lib/fluent/plugin/opentelemetry/http_input_handler.rb +177 -0
- data/lib/fluent/plugin/opentelemetry/http_output_handler.rb +157 -0
- data/lib/fluent/plugin/opentelemetry/log_record_builder.rb +229 -0
- data/lib/fluent/plugin/opentelemetry/output_response.rb +21 -0
- data/lib/fluent/plugin/opentelemetry/request.rb +67 -0
- data/lib/fluent/plugin/opentelemetry/response.rb +90 -0
- data/lib/fluent/plugin/opentelemetry/version.rb +9 -0
- data/lib/fluent/plugin/opentelemetry_radiant/version.rb +14 -0
- data/lib/fluent/plugin/out_opentelemetry.rb +11 -0
- data/lib/fluent/plugin/out_opentelemetry_radiant.rb +205 -0
- data/lib/opentelemetry/proto/collector/logs/v1/logs_service_pb.rb +27 -0
- data/lib/opentelemetry/proto/collector/logs/v1/logs_service_services_pb.rb +48 -0
- data/lib/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.rb +27 -0
- data/lib/opentelemetry/proto/collector/metrics/v1/metrics_service_services_pb.rb +48 -0
- data/lib/opentelemetry/proto/collector/profiles/v1development/profiles_service_pb.rb +27 -0
- data/lib/opentelemetry/proto/collector/profiles/v1development/profiles_service_services_pb.rb +47 -0
- data/lib/opentelemetry/proto/collector/trace/v1/trace_service_pb.rb +27 -0
- data/lib/opentelemetry/proto/collector/trace/v1/trace_service_services_pb.rb +48 -0
- data/lib/opentelemetry/proto/common/v1/common_pb.rb +26 -0
- data/lib/opentelemetry/proto/logs/v1/logs_pb.rb +29 -0
- data/lib/opentelemetry/proto/metrics/v1/metrics_pb.rb +41 -0
- data/lib/opentelemetry/proto/profiles/v1development/profiles_pb.rb +36 -0
- data/lib/opentelemetry/proto/resource/v1/resource_pb.rb +23 -0
- data/lib/opentelemetry/proto/trace/v1/trace_pb.rb +33 -0
- 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,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
|