opentelemetry-exporter-otlp-logs 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/.yardopts +9 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE +201 -0
- data/README.md +146 -0
- data/lib/opentelemetry/exporter/otlp/logs/logs_exporter.rb +379 -0
- data/lib/opentelemetry/exporter/otlp/logs/version.rb +16 -0
- data/lib/opentelemetry/exporter/otlp_logs.rb +17 -0
- data/lib/opentelemetry/proto/collector/logs/v1/logs_service_pb.rb +27 -0
- data/lib/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.rb +27 -0
- data/lib/opentelemetry/proto/collector/trace/v1/trace_service_pb.rb +27 -0
- data/lib/opentelemetry/proto/common/v1/common_pb.rb +25 -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/resource/v1/resource_pb.rb +23 -0
- data/lib/opentelemetry/proto/trace/v1/trace_pb.rb +32 -0
- data/lib/opentelemetry-exporter-otlp-logs.rb +7 -0
- metadata +343 -0
@@ -0,0 +1,379 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright The OpenTelemetry Authors
|
4
|
+
#
|
5
|
+
# SPDX-License-Identifier: Apache-2.0
|
6
|
+
|
7
|
+
require 'opentelemetry/common'
|
8
|
+
require 'opentelemetry/sdk'
|
9
|
+
require 'opentelemetry-logs-api' # the sdk isn't loading the api, but not sure why
|
10
|
+
require 'opentelemetry/sdk/logs'
|
11
|
+
require 'net/http'
|
12
|
+
require 'zlib'
|
13
|
+
|
14
|
+
require 'google/rpc/status_pb'
|
15
|
+
|
16
|
+
require 'opentelemetry/proto/common/v1/common_pb'
|
17
|
+
require 'opentelemetry/proto/resource/v1/resource_pb'
|
18
|
+
require 'opentelemetry/proto/logs/v1/logs_pb'
|
19
|
+
require 'opentelemetry/proto/collector/logs/v1/logs_service_pb'
|
20
|
+
|
21
|
+
module OpenTelemetry
|
22
|
+
module Exporter
|
23
|
+
module OTLP
|
24
|
+
module Logs
|
25
|
+
# An OpenTelemetry log exporter that sends log records over HTTP as Protobuf encoded OTLP ExportLogsServiceRequests.
|
26
|
+
class LogsExporter # rubocop:disable Metrics/ClassLength
|
27
|
+
SUCCESS = OpenTelemetry::SDK::Logs::Export::SUCCESS
|
28
|
+
FAILURE = OpenTelemetry::SDK::Logs::Export::FAILURE
|
29
|
+
private_constant(:SUCCESS, :FAILURE)
|
30
|
+
|
31
|
+
# Default timeouts in seconds.
|
32
|
+
KEEP_ALIVE_TIMEOUT = 30
|
33
|
+
RETRY_COUNT = 5
|
34
|
+
private_constant(:KEEP_ALIVE_TIMEOUT, :RETRY_COUNT)
|
35
|
+
|
36
|
+
ERROR_MESSAGE_INVALID_HEADERS = 'headers must be a String with comma-separated URL Encoded UTF-8 k=v pairs or a Hash'
|
37
|
+
private_constant(:ERROR_MESSAGE_INVALID_HEADERS)
|
38
|
+
|
39
|
+
DEFAULT_USER_AGENT = "OTel-OTLP-Exporter-Ruby/#{OpenTelemetry::Exporter::OTLP::Logs::VERSION} Ruby/#{RUBY_VERSION} (#{RUBY_PLATFORM}; #{RUBY_ENGINE}/#{RUBY_ENGINE_VERSION})".freeze
|
40
|
+
|
41
|
+
def self.ssl_verify_mode
|
42
|
+
if ENV['OTEL_RUBY_EXPORTER_OTLP_SSL_VERIFY_PEER'] == 'true'
|
43
|
+
OpenSSL::SSL::VERIFY_PEER
|
44
|
+
elsif ENV['OTEL_RUBY_EXPORTER_OTLP_SSL_VERIFY_NONE'] == 'true'
|
45
|
+
OpenSSL::SSL::VERIFY_NONE
|
46
|
+
else
|
47
|
+
OpenSSL::SSL::VERIFY_PEER
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def initialize(endpoint: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_LOGS_ENDPOINT', 'OTEL_EXPORTER_OTLP_ENDPOINT', default: 'http://localhost:4318/v1/logs'),
|
52
|
+
certificate_file: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE', 'OTEL_EXPORTER_OTLP_CERTIFICATE'),
|
53
|
+
client_certificate_file: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE', 'OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE'),
|
54
|
+
client_key_file: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY', 'OTEL_EXPORTER_OTLP_CLIENT_KEY'),
|
55
|
+
ssl_verify_mode: LogsExporter.ssl_verify_mode,
|
56
|
+
headers: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_LOGS_HEADERS', 'OTEL_EXPORTER_OTLP_HEADERS', default: {}),
|
57
|
+
compression: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_LOGS_COMPRESSION', 'OTEL_EXPORTER_OTLP_COMPRESSION', default: 'gzip'),
|
58
|
+
timeout: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_LOGS_TIMEOUT', 'OTEL_EXPORTER_OTLP_TIMEOUT', default: 10))
|
59
|
+
raise ArgumentError, "invalid url for OTLP::Logs::LogsExporter #{endpoint}" unless OpenTelemetry::Common::Utilities.valid_url?(endpoint)
|
60
|
+
raise ArgumentError, "unsupported compression key #{compression}" unless compression.nil? || %w[gzip none].include?(compression)
|
61
|
+
|
62
|
+
@uri = if endpoint == ENV['OTEL_EXPORTER_OTLP_ENDPOINT']
|
63
|
+
URI.join(endpoint, 'v1/logs')
|
64
|
+
else
|
65
|
+
URI(endpoint)
|
66
|
+
end
|
67
|
+
|
68
|
+
@http = http_connection(@uri, ssl_verify_mode, certificate_file, client_certificate_file, client_key_file)
|
69
|
+
|
70
|
+
@path = @uri.path
|
71
|
+
@headers = prepare_headers(headers)
|
72
|
+
@timeout = timeout.to_f
|
73
|
+
@compression = compression
|
74
|
+
@shutdown = false
|
75
|
+
end
|
76
|
+
|
77
|
+
# Called to export sampled {OpenTelemetry::SDK::Logs::LogRecordData} structs.
|
78
|
+
#
|
79
|
+
# @param [Enumerable<OpenTelemetry::SDK::Logs::LogRecordData>] log_record_data the
|
80
|
+
# list of recorded {OpenTelemetry::SDK::Logs::LogRecordData} structs to be
|
81
|
+
# exported.
|
82
|
+
# @param [optional Numeric] timeout An optional timeout in seconds.
|
83
|
+
# @return [Integer] the result of the export.
|
84
|
+
def export(log_record_data, timeout: nil)
|
85
|
+
OpenTelemetry.logger.error('Logs Exporter tried to export, but it has already shut down') if @shutdown
|
86
|
+
return FAILURE if @shutdown
|
87
|
+
|
88
|
+
send_bytes(encode(log_record_data), timeout: timeout)
|
89
|
+
end
|
90
|
+
|
91
|
+
# Called when {OpenTelemetry::SDK::Logs::LoggerProvider#force_flush} is called, if
|
92
|
+
# this exporter is registered to a {OpenTelemetry::SDK::Logs::LoggerProvider}
|
93
|
+
# object.
|
94
|
+
#
|
95
|
+
# @param [optional Numeric] timeout An optional timeout in seconds.
|
96
|
+
def force_flush(timeout: nil)
|
97
|
+
SUCCESS
|
98
|
+
end
|
99
|
+
|
100
|
+
# Called when {OpenTelemetry::SDK::Logs::LoggerProvider#shutdown} is called, if
|
101
|
+
# this exporter is registered to a {OpenTelemetry::SDK::Logs::LoggerProvider}
|
102
|
+
# object.
|
103
|
+
#
|
104
|
+
# @param [optional Numeric] timeout An optional timeout in seconds.
|
105
|
+
def shutdown(timeout: nil)
|
106
|
+
@shutdown = true
|
107
|
+
@http.finish if @http.started?
|
108
|
+
SUCCESS
|
109
|
+
end
|
110
|
+
|
111
|
+
private
|
112
|
+
|
113
|
+
def handle_http_error(response)
|
114
|
+
OpenTelemetry.handle_error(message: "OTLP logs exporter received #{response.class.name}, http.code=#{response.code}, for uri: '#{@path}'")
|
115
|
+
end
|
116
|
+
|
117
|
+
def http_connection(uri, ssl_verify_mode, certificate_file, client_certificate_file, client_key_file)
|
118
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
119
|
+
http.use_ssl = uri.scheme == 'https'
|
120
|
+
http.verify_mode = ssl_verify_mode
|
121
|
+
http.ca_file = certificate_file unless certificate_file.nil?
|
122
|
+
http.cert = OpenSSL::X509::Certificate.new(File.read(client_certificate_file)) unless client_certificate_file.nil?
|
123
|
+
http.key = OpenSSL::PKey::RSA.new(File.read(client_key_file)) unless client_key_file.nil?
|
124
|
+
http.keep_alive_timeout = KEEP_ALIVE_TIMEOUT
|
125
|
+
http
|
126
|
+
end
|
127
|
+
|
128
|
+
# The around_request is a private method that provides an extension
|
129
|
+
# point for the exporters network calls. The default behaviour
|
130
|
+
# is to not record these operations.
|
131
|
+
#
|
132
|
+
# An example use case would be to prepend a patch, or extend this class
|
133
|
+
# and override this method's behaviour to explicitly record the HTTP request.
|
134
|
+
# This would allow you to create log records for your export pipeline.
|
135
|
+
def around_request
|
136
|
+
OpenTelemetry::Common::Utilities.untraced { yield } # rubocop:disable Style/ExplicitBlockArgument
|
137
|
+
end
|
138
|
+
|
139
|
+
def send_bytes(bytes, timeout:) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
|
140
|
+
return FAILURE if bytes.nil?
|
141
|
+
|
142
|
+
request = Net::HTTP::Post.new(@path)
|
143
|
+
if @compression == 'gzip'
|
144
|
+
request.add_field('Content-Encoding', 'gzip')
|
145
|
+
body = Zlib.gzip(bytes)
|
146
|
+
else
|
147
|
+
body = bytes
|
148
|
+
end
|
149
|
+
|
150
|
+
request.body = body
|
151
|
+
request.add_field('Content-Type', 'application/x-protobuf')
|
152
|
+
@headers.each { |key, value| request.add_field(key, value) }
|
153
|
+
|
154
|
+
retry_count = 0
|
155
|
+
timeout ||= @timeout
|
156
|
+
start_time = OpenTelemetry::Common::Utilities.timeout_timestamp
|
157
|
+
|
158
|
+
around_request do
|
159
|
+
remaining_timeout = OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time)
|
160
|
+
return FAILURE if remaining_timeout.zero?
|
161
|
+
|
162
|
+
@http.open_timeout = remaining_timeout
|
163
|
+
@http.read_timeout = remaining_timeout
|
164
|
+
@http.write_timeout = remaining_timeout
|
165
|
+
@http.start unless @http.started?
|
166
|
+
response = @http.request(request)
|
167
|
+
|
168
|
+
case response
|
169
|
+
when Net::HTTPOK
|
170
|
+
response.body # Read and discard body
|
171
|
+
SUCCESS
|
172
|
+
when Net::HTTPServiceUnavailable, Net::HTTPTooManyRequests
|
173
|
+
response.body # Read and discard body
|
174
|
+
handle_http_error(response)
|
175
|
+
redo if backoff?(retry_after: response['Retry-After'], retry_count: retry_count += 1)
|
176
|
+
FAILURE
|
177
|
+
when Net::HTTPRequestTimeOut, Net::HTTPGatewayTimeOut, Net::HTTPBadGateway
|
178
|
+
response.body # Read and discard body
|
179
|
+
handle_http_error(response)
|
180
|
+
redo if backoff?(retry_count: retry_count += 1)
|
181
|
+
FAILURE
|
182
|
+
when Net::HTTPNotFound
|
183
|
+
handle_http_error(response)
|
184
|
+
FAILURE
|
185
|
+
when Net::HTTPBadRequest, Net::HTTPClientError, Net::HTTPServerError
|
186
|
+
log_status(response.body)
|
187
|
+
FAILURE
|
188
|
+
when Net::HTTPRedirection
|
189
|
+
@http.finish
|
190
|
+
handle_redirect(response['location'])
|
191
|
+
redo if backoff?(retry_after: 0, retry_count: retry_count += 1)
|
192
|
+
else
|
193
|
+
@http.finish
|
194
|
+
handle_http_error(response)
|
195
|
+
FAILURE
|
196
|
+
end
|
197
|
+
rescue Net::OpenTimeout, Net::ReadTimeout => e
|
198
|
+
OpenTelemetry.handle_error(exception: e)
|
199
|
+
retry if backoff?(retry_count: retry_count += 1)
|
200
|
+
return FAILURE
|
201
|
+
rescue OpenSSL::SSL::SSLError => e
|
202
|
+
OpenTelemetry.handle_error(exception: e)
|
203
|
+
retry if backoff?(retry_count: retry_count += 1)
|
204
|
+
return FAILURE
|
205
|
+
rescue SocketError => e
|
206
|
+
OpenTelemetry.handle_error(exception: e)
|
207
|
+
retry if backoff?(retry_count: retry_count += 1)
|
208
|
+
return FAILURE
|
209
|
+
rescue SystemCallError => e
|
210
|
+
retry if backoff?(retry_count: retry_count += 1)
|
211
|
+
OpenTelemetry.handle_error(exception: e)
|
212
|
+
return FAILURE
|
213
|
+
rescue EOFError => e
|
214
|
+
OpenTelemetry.handle_error(exception: e)
|
215
|
+
retry if backoff?(retry_count: retry_count += 1)
|
216
|
+
return FAILURE
|
217
|
+
rescue Zlib::DataError => e
|
218
|
+
OpenTelemetry.handle_error(exception: e)
|
219
|
+
retry if backoff?(retry_count: retry_count += 1)
|
220
|
+
return FAILURE
|
221
|
+
rescue StandardError => e
|
222
|
+
OpenTelemetry.handle_error(exception: e, message: 'unexpected error in OTLP::Exporter#send_bytes')
|
223
|
+
return FAILURE
|
224
|
+
end
|
225
|
+
ensure
|
226
|
+
# Reset timeouts to defaults for the next call.
|
227
|
+
@http.open_timeout = @timeout
|
228
|
+
@http.read_timeout = @timeout
|
229
|
+
@http.write_timeout = @timeout
|
230
|
+
end
|
231
|
+
|
232
|
+
def handle_redirect(location)
|
233
|
+
# TODO: figure out destination and reinitialize @http and @path
|
234
|
+
end
|
235
|
+
|
236
|
+
def log_status(body)
|
237
|
+
status = Google::Rpc::Status.decode(body)
|
238
|
+
details = status.details.map do |detail|
|
239
|
+
klass_or_nil = ::Google::Protobuf::DescriptorPool.generated_pool.lookup(detail.type_name).msgclass
|
240
|
+
detail.unpack(klass_or_nil) if klass_or_nil
|
241
|
+
end.compact
|
242
|
+
OpenTelemetry.handle_error(message: "OTLP logs exporter received rpc.Status{message=#{status.message}, details=#{details}}")
|
243
|
+
rescue StandardError => e
|
244
|
+
OpenTelemetry.handle_error(exception: e, message: 'unexpected error decoding rpc.Status in OTLP::Exporter#log_status')
|
245
|
+
end
|
246
|
+
|
247
|
+
def backoff?(retry_count:, retry_after: nil) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
248
|
+
return false if retry_count > RETRY_COUNT
|
249
|
+
|
250
|
+
sleep_interval = nil
|
251
|
+
unless retry_after.nil?
|
252
|
+
sleep_interval =
|
253
|
+
begin
|
254
|
+
Integer(retry_after)
|
255
|
+
rescue ArgumentError
|
256
|
+
nil
|
257
|
+
end
|
258
|
+
sleep_interval ||=
|
259
|
+
begin
|
260
|
+
Time.httpdate(retry_after) - Time.now
|
261
|
+
rescue # rubocop:disable Style/RescueStandardError
|
262
|
+
nil
|
263
|
+
end
|
264
|
+
sleep_interval = nil unless sleep_interval&.positive?
|
265
|
+
end
|
266
|
+
sleep_interval ||= rand(2**retry_count)
|
267
|
+
|
268
|
+
sleep(sleep_interval)
|
269
|
+
true
|
270
|
+
end
|
271
|
+
|
272
|
+
def encode(log_record_data) # rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity
|
273
|
+
Opentelemetry::Proto::Collector::Logs::V1::ExportLogsServiceRequest.encode(
|
274
|
+
Opentelemetry::Proto::Collector::Logs::V1::ExportLogsServiceRequest.new(
|
275
|
+
resource_logs: log_record_data
|
276
|
+
.group_by(&:resource)
|
277
|
+
.map do |resource, log_record_datas|
|
278
|
+
Opentelemetry::Proto::Logs::V1::ResourceLogs.new(
|
279
|
+
resource: Opentelemetry::Proto::Resource::V1::Resource.new(
|
280
|
+
attributes: resource.attribute_enumerator.map { |key, value| as_otlp_key_value(key, value) }
|
281
|
+
),
|
282
|
+
scope_logs: log_record_datas
|
283
|
+
.group_by(&:instrumentation_scope)
|
284
|
+
.map do |il, lrd|
|
285
|
+
Opentelemetry::Proto::Logs::V1::ScopeLogs.new(
|
286
|
+
scope: Opentelemetry::Proto::Common::V1::InstrumentationScope.new(
|
287
|
+
name: il.name,
|
288
|
+
version: il.version
|
289
|
+
),
|
290
|
+
log_records: lrd.map { |lr| as_otlp_log_record(lr) }
|
291
|
+
)
|
292
|
+
end
|
293
|
+
)
|
294
|
+
end
|
295
|
+
)
|
296
|
+
)
|
297
|
+
rescue StandardError => e
|
298
|
+
OpenTelemetry.handle_error(exception: e, message: 'unexpected error in OTLP::Exporter#encode')
|
299
|
+
nil
|
300
|
+
end
|
301
|
+
|
302
|
+
def as_otlp_log_record(log_record_data)
|
303
|
+
Opentelemetry::Proto::Logs::V1::LogRecord.new(
|
304
|
+
time_unix_nano: log_record_data.timestamp,
|
305
|
+
observed_time_unix_nano: log_record_data.observed_timestamp,
|
306
|
+
severity_number: log_record_data.severity_number,
|
307
|
+
severity_text: log_record_data.severity_text,
|
308
|
+
body: as_otlp_any_value(log_record_data.body),
|
309
|
+
attributes: log_record_data.attributes&.map { |k, v| as_otlp_key_value(k, v) },
|
310
|
+
dropped_attributes_count: log_record_data.total_recorded_attributes - log_record_data.attributes&.size.to_i,
|
311
|
+
flags: log_record_data.trace_flags.instance_variable_get(:@flags),
|
312
|
+
trace_id: log_record_data.trace_id,
|
313
|
+
span_id: log_record_data.span_id
|
314
|
+
)
|
315
|
+
end
|
316
|
+
|
317
|
+
def as_otlp_key_value(key, value)
|
318
|
+
Opentelemetry::Proto::Common::V1::KeyValue.new(key: key, value: as_otlp_any_value(value))
|
319
|
+
rescue Encoding::UndefinedConversionError => e
|
320
|
+
encoded_value = value.encode('UTF-8', invalid: :replace, undef: :replace, replace: '�')
|
321
|
+
OpenTelemetry.handle_error(exception: e, message: "encoding error for key #{key} and value #{encoded_value}")
|
322
|
+
Opentelemetry::Proto::Common::V1::KeyValue.new(key: key, value: as_otlp_any_value('Encoding Error'))
|
323
|
+
end
|
324
|
+
|
325
|
+
def as_otlp_any_value(value)
|
326
|
+
result = Opentelemetry::Proto::Common::V1::AnyValue.new
|
327
|
+
case value
|
328
|
+
when String
|
329
|
+
result.string_value = value
|
330
|
+
when Integer
|
331
|
+
result.int_value = value
|
332
|
+
when Float
|
333
|
+
result.double_value = value
|
334
|
+
when true, false
|
335
|
+
result.bool_value = value
|
336
|
+
when Array
|
337
|
+
values = value.map { |element| as_otlp_any_value(element) }
|
338
|
+
result.array_value = Opentelemetry::Proto::Common::V1::ArrayValue.new(values: values)
|
339
|
+
end
|
340
|
+
result
|
341
|
+
end
|
342
|
+
|
343
|
+
def prepare_headers(config_headers)
|
344
|
+
headers = case config_headers
|
345
|
+
when String then parse_headers(config_headers)
|
346
|
+
when Hash then config_headers.dup
|
347
|
+
else
|
348
|
+
raise ArgumentError, ERROR_MESSAGE_INVALID_HEADERS
|
349
|
+
end
|
350
|
+
|
351
|
+
headers['User-Agent'] = "#{headers.fetch('User-Agent', '')} #{DEFAULT_USER_AGENT}".strip
|
352
|
+
|
353
|
+
headers
|
354
|
+
end
|
355
|
+
|
356
|
+
def parse_headers(raw)
|
357
|
+
entries = raw.split(',')
|
358
|
+
raise ArgumentError, ERROR_MESSAGE_INVALID_HEADERS if entries.empty?
|
359
|
+
|
360
|
+
entries.each_with_object({}) do |entry, headers|
|
361
|
+
k, v = entry.split('=', 2).map(&CGI.method(:unescape))
|
362
|
+
begin
|
363
|
+
k = k.to_s.strip
|
364
|
+
v = v.to_s.strip
|
365
|
+
rescue Encoding::CompatibilityError
|
366
|
+
raise ArgumentError, ERROR_MESSAGE_INVALID_HEADERS
|
367
|
+
rescue ArgumentError => e
|
368
|
+
raise e, ERROR_MESSAGE_INVALID_HEADERS
|
369
|
+
end
|
370
|
+
raise ArgumentError, ERROR_MESSAGE_INVALID_HEADERS if k.empty? || v.empty?
|
371
|
+
|
372
|
+
headers[k] = v
|
373
|
+
end
|
374
|
+
end
|
375
|
+
end
|
376
|
+
end
|
377
|
+
end
|
378
|
+
end
|
379
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright The OpenTelemetry Authors
|
4
|
+
#
|
5
|
+
# SPDX-License-Identifier: Apache-2.0
|
6
|
+
|
7
|
+
module OpenTelemetry
|
8
|
+
module Exporter
|
9
|
+
module OTLP
|
10
|
+
module Logs
|
11
|
+
## Current OpenTelemetry OTLP logs exporter version
|
12
|
+
VERSION = '0.1.0'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright The OpenTelemetry Authors
|
4
|
+
#
|
5
|
+
# SPDX-License-Identifier: Apache-2.0
|
6
|
+
|
7
|
+
require 'opentelemetry/exporter/otlp/logs/version'
|
8
|
+
require 'opentelemetry/exporter/otlp/logs/logs_exporter'
|
9
|
+
|
10
|
+
# OpenTelemetry is an open source observability framework, providing a
|
11
|
+
# general-purpose API, SDK, and related tools required for the instrumentation
|
12
|
+
# of cloud-native software, frameworks, and libraries.
|
13
|
+
#
|
14
|
+
# The OpenTelemetry module provides global accessors for telemetry objects.
|
15
|
+
# See the documentation for the `opentelemetry-api` gem for details.
|
16
|
+
module OpenTelemetry
|
17
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
4
|
+
# source: opentelemetry/proto/collector/logs/v1/logs_service.proto
|
5
|
+
|
6
|
+
require 'google/protobuf'
|
7
|
+
|
8
|
+
require 'opentelemetry/proto/logs/v1/logs_pb'
|
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,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
4
|
+
# source: opentelemetry/proto/collector/metrics/v1/metrics_service.proto
|
5
|
+
|
6
|
+
require 'google/protobuf'
|
7
|
+
|
8
|
+
require 'opentelemetry/proto/metrics/v1/metrics_pb'
|
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,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
4
|
+
# source: opentelemetry/proto/collector/trace/v1/trace_service.proto
|
5
|
+
|
6
|
+
require 'google/protobuf'
|
7
|
+
|
8
|
+
require 'opentelemetry/proto/trace/v1/trace_pb'
|
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,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
4
|
+
# source: opentelemetry/proto/common/v1/common.proto
|
5
|
+
|
6
|
+
require 'google/protobuf'
|
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(\rB{\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
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
4
|
+
# source: opentelemetry/proto/logs/v1/logs.proto
|
5
|
+
|
6
|
+
require 'google/protobuf'
|
7
|
+
|
8
|
+
require 'opentelemetry/proto/common/v1/common_pb'
|
9
|
+
require 'opentelemetry/proto/resource/v1/resource_pb'
|
10
|
+
|
11
|
+
descriptor_data = "\n&opentelemetry/proto/logs/v1/logs.proto\x12\x1bopentelemetry.proto.logs.v1\x1a*opentelemetry/proto/common/v1/common.proto\x1a.opentelemetry/proto/resource/v1/resource.proto\"L\n\x08LogsData\x12@\n\rresource_logs\x18\x01 \x03(\x0b\x32).opentelemetry.proto.logs.v1.ResourceLogs\"\xa3\x01\n\x0cResourceLogs\x12;\n\x08resource\x18\x01 \x01(\x0b\x32).opentelemetry.proto.resource.v1.Resource\x12:\n\nscope_logs\x18\x02 \x03(\x0b\x32&.opentelemetry.proto.logs.v1.ScopeLogs\x12\x12\n\nschema_url\x18\x03 \x01(\tJ\x06\x08\xe8\x07\x10\xe9\x07\"\xa0\x01\n\tScopeLogs\x12\x42\n\x05scope\x18\x01 \x01(\x0b\x32\x33.opentelemetry.proto.common.v1.InstrumentationScope\x12;\n\x0blog_records\x18\x02 \x03(\x0b\x32&.opentelemetry.proto.logs.v1.LogRecord\x12\x12\n\nschema_url\x18\x03 \x01(\t\"\xef\x02\n\tLogRecord\x12\x16\n\x0etime_unix_nano\x18\x01 \x01(\x06\x12\x1f\n\x17observed_time_unix_nano\x18\x0b \x01(\x06\x12\x44\n\x0fseverity_number\x18\x02 \x01(\x0e\x32+.opentelemetry.proto.logs.v1.SeverityNumber\x12\x15\n\rseverity_text\x18\x03 \x01(\t\x12\x35\n\x04\x62ody\x18\x05 \x01(\x0b\x32\'.opentelemetry.proto.common.v1.AnyValue\x12;\n\nattributes\x18\x06 \x03(\x0b\x32\'.opentelemetry.proto.common.v1.KeyValue\x12 \n\x18\x64ropped_attributes_count\x18\x07 \x01(\r\x12\r\n\x05\x66lags\x18\x08 \x01(\x07\x12\x10\n\x08trace_id\x18\t \x01(\x0c\x12\x0f\n\x07span_id\x18\n \x01(\x0cJ\x04\x08\x04\x10\x05*\xc3\x05\n\x0eSeverityNumber\x12\x1f\n\x1bSEVERITY_NUMBER_UNSPECIFIED\x10\x00\x12\x19\n\x15SEVERITY_NUMBER_TRACE\x10\x01\x12\x1a\n\x16SEVERITY_NUMBER_TRACE2\x10\x02\x12\x1a\n\x16SEVERITY_NUMBER_TRACE3\x10\x03\x12\x1a\n\x16SEVERITY_NUMBER_TRACE4\x10\x04\x12\x19\n\x15SEVERITY_NUMBER_DEBUG\x10\x05\x12\x1a\n\x16SEVERITY_NUMBER_DEBUG2\x10\x06\x12\x1a\n\x16SEVERITY_NUMBER_DEBUG3\x10\x07\x12\x1a\n\x16SEVERITY_NUMBER_DEBUG4\x10\x08\x12\x18\n\x14SEVERITY_NUMBER_INFO\x10\t\x12\x19\n\x15SEVERITY_NUMBER_INFO2\x10\n\x12\x19\n\x15SEVERITY_NUMBER_INFO3\x10\x0b\x12\x19\n\x15SEVERITY_NUMBER_INFO4\x10\x0c\x12\x18\n\x14SEVERITY_NUMBER_WARN\x10\r\x12\x19\n\x15SEVERITY_NUMBER_WARN2\x10\x0e\x12\x19\n\x15SEVERITY_NUMBER_WARN3\x10\x0f\x12\x19\n\x15SEVERITY_NUMBER_WARN4\x10\x10\x12\x19\n\x15SEVERITY_NUMBER_ERROR\x10\x11\x12\x1a\n\x16SEVERITY_NUMBER_ERROR2\x10\x12\x12\x1a\n\x16SEVERITY_NUMBER_ERROR3\x10\x13\x12\x1a\n\x16SEVERITY_NUMBER_ERROR4\x10\x14\x12\x19\n\x15SEVERITY_NUMBER_FATAL\x10\x15\x12\x1a\n\x16SEVERITY_NUMBER_FATAL2\x10\x16\x12\x1a\n\x16SEVERITY_NUMBER_FATAL3\x10\x17\x12\x1a\n\x16SEVERITY_NUMBER_FATAL4\x10\x18*Y\n\x0eLogRecordFlags\x12\x1f\n\x1bLOG_RECORD_FLAGS_DO_NOT_USE\x10\x00\x12&\n!LOG_RECORD_FLAGS_TRACE_FLAGS_MASK\x10\xff\x01\x42s\n\x1eio.opentelemetry.proto.logs.v1B\tLogsProtoP\x01Z&go.opentelemetry.io/proto/otlp/logs/v1\xaa\x02\x1bOpenTelemetry.Proto.Logs.V1b\x06proto3"
|
12
|
+
|
13
|
+
pool = Google::Protobuf::DescriptorPool.generated_pool
|
14
|
+
pool.add_serialized_file(descriptor_data)
|
15
|
+
|
16
|
+
module Opentelemetry
|
17
|
+
module Proto
|
18
|
+
module Logs
|
19
|
+
module V1
|
20
|
+
LogsData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.logs.v1.LogsData').msgclass
|
21
|
+
ResourceLogs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.logs.v1.ResourceLogs').msgclass
|
22
|
+
ScopeLogs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.logs.v1.ScopeLogs').msgclass
|
23
|
+
LogRecord = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.logs.v1.LogRecord').msgclass
|
24
|
+
SeverityNumber = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.logs.v1.SeverityNumber').enummodule
|
25
|
+
LogRecordFlags = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.logs.v1.LogRecordFlags').enummodule
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
4
|
+
# source: opentelemetry/proto/metrics/v1/metrics.proto
|
5
|
+
|
6
|
+
require 'google/protobuf'
|
7
|
+
|
8
|
+
require 'opentelemetry/proto/common/v1/common_pb'
|
9
|
+
require 'opentelemetry/proto/resource/v1/resource_pb'
|
10
|
+
|
11
|
+
descriptor_data = "\n,opentelemetry/proto/metrics/v1/metrics.proto\x12\x1eopentelemetry.proto.metrics.v1\x1a*opentelemetry/proto/common/v1/common.proto\x1a.opentelemetry/proto/resource/v1/resource.proto\"X\n\x0bMetricsData\x12I\n\x10resource_metrics\x18\x01 \x03(\x0b\x32/.opentelemetry.proto.metrics.v1.ResourceMetrics\"\xaf\x01\n\x0fResourceMetrics\x12;\n\x08resource\x18\x01 \x01(\x0b\x32).opentelemetry.proto.resource.v1.Resource\x12\x43\n\rscope_metrics\x18\x02 \x03(\x0b\x32,.opentelemetry.proto.metrics.v1.ScopeMetrics\x12\x12\n\nschema_url\x18\x03 \x01(\tJ\x06\x08\xe8\x07\x10\xe9\x07\"\x9f\x01\n\x0cScopeMetrics\x12\x42\n\x05scope\x18\x01 \x01(\x0b\x32\x33.opentelemetry.proto.common.v1.InstrumentationScope\x12\x37\n\x07metrics\x18\x02 \x03(\x0b\x32&.opentelemetry.proto.metrics.v1.Metric\x12\x12\n\nschema_url\x18\x03 \x01(\t\"\x92\x03\n\x06Metric\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0c\n\x04unit\x18\x03 \x01(\t\x12\x36\n\x05gauge\x18\x05 \x01(\x0b\x32%.opentelemetry.proto.metrics.v1.GaugeH\x00\x12\x32\n\x03sum\x18\x07 \x01(\x0b\x32#.opentelemetry.proto.metrics.v1.SumH\x00\x12>\n\thistogram\x18\t \x01(\x0b\x32).opentelemetry.proto.metrics.v1.HistogramH\x00\x12U\n\x15\x65xponential_histogram\x18\n \x01(\x0b\x32\x34.opentelemetry.proto.metrics.v1.ExponentialHistogramH\x00\x12:\n\x07summary\x18\x0b \x01(\x0b\x32\'.opentelemetry.proto.metrics.v1.SummaryH\x00\x42\x06\n\x04\x64\x61taJ\x04\x08\x04\x10\x05J\x04\x08\x06\x10\x07J\x04\x08\x08\x10\t\"M\n\x05Gauge\x12\x44\n\x0b\x64\x61ta_points\x18\x01 \x03(\x0b\x32/.opentelemetry.proto.metrics.v1.NumberDataPoint\"\xba\x01\n\x03Sum\x12\x44\n\x0b\x64\x61ta_points\x18\x01 \x03(\x0b\x32/.opentelemetry.proto.metrics.v1.NumberDataPoint\x12W\n\x17\x61ggregation_temporality\x18\x02 \x01(\x0e\x32\x36.opentelemetry.proto.metrics.v1.AggregationTemporality\x12\x14\n\x0cis_monotonic\x18\x03 \x01(\x08\"\xad\x01\n\tHistogram\x12G\n\x0b\x64\x61ta_points\x18\x01 \x03(\x0b\x32\x32.opentelemetry.proto.metrics.v1.HistogramDataPoint\x12W\n\x17\x61ggregation_temporality\x18\x02 \x01(\x0e\x32\x36.opentelemetry.proto.metrics.v1.AggregationTemporality\"\xc3\x01\n\x14\x45xponentialHistogram\x12R\n\x0b\x64\x61ta_points\x18\x01 \x03(\x0b\x32=.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\x12W\n\x17\x61ggregation_temporality\x18\x02 \x01(\x0e\x32\x36.opentelemetry.proto.metrics.v1.AggregationTemporality\"P\n\x07Summary\x12\x45\n\x0b\x64\x61ta_points\x18\x01 \x03(\x0b\x32\x30.opentelemetry.proto.metrics.v1.SummaryDataPoint\"\x86\x02\n\x0fNumberDataPoint\x12;\n\nattributes\x18\x07 \x03(\x0b\x32\'.opentelemetry.proto.common.v1.KeyValue\x12\x1c\n\x14start_time_unix_nano\x18\x02 \x01(\x06\x12\x16\n\x0etime_unix_nano\x18\x03 \x01(\x06\x12\x13\n\tas_double\x18\x04 \x01(\x01H\x00\x12\x10\n\x06\x61s_int\x18\x06 \x01(\x10H\x00\x12;\n\texemplars\x18\x05 \x03(\x0b\x32(.opentelemetry.proto.metrics.v1.Exemplar\x12\r\n\x05\x66lags\x18\x08 \x01(\rB\x07\n\x05valueJ\x04\x08\x01\x10\x02\"\xe6\x02\n\x12HistogramDataPoint\x12;\n\nattributes\x18\t \x03(\x0b\x32\'.opentelemetry.proto.common.v1.KeyValue\x12\x1c\n\x14start_time_unix_nano\x18\x02 \x01(\x06\x12\x16\n\x0etime_unix_nano\x18\x03 \x01(\x06\x12\r\n\x05\x63ount\x18\x04 \x01(\x06\x12\x10\n\x03sum\x18\x05 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\rbucket_counts\x18\x06 \x03(\x06\x12\x17\n\x0f\x65xplicit_bounds\x18\x07 \x03(\x01\x12;\n\texemplars\x18\x08 \x03(\x0b\x32(.opentelemetry.proto.metrics.v1.Exemplar\x12\r\n\x05\x66lags\x18\n \x01(\r\x12\x10\n\x03min\x18\x0b \x01(\x01H\x01\x88\x01\x01\x12\x10\n\x03max\x18\x0c \x01(\x01H\x02\x88\x01\x01\x42\x06\n\x04_sumB\x06\n\x04_minB\x06\n\x04_maxJ\x04\x08\x01\x10\x02\"\xda\x04\n\x1d\x45xponentialHistogramDataPoint\x12;\n\nattributes\x18\x01 \x03(\x0b\x32\'.opentelemetry.proto.common.v1.KeyValue\x12\x1c\n\x14start_time_unix_nano\x18\x02 \x01(\x06\x12\x16\n\x0etime_unix_nano\x18\x03 \x01(\x06\x12\r\n\x05\x63ount\x18\x04 \x01(\x06\x12\x10\n\x03sum\x18\x05 \x01(\x01H\x00\x88\x01\x01\x12\r\n\x05scale\x18\x06 \x01(\x11\x12\x12\n\nzero_count\x18\x07 \x01(\x06\x12W\n\x08positive\x18\x08 \x01(\x0b\x32\x45.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\x12W\n\x08negative\x18\t \x01(\x0b\x32\x45.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\x12\r\n\x05\x66lags\x18\n \x01(\r\x12;\n\texemplars\x18\x0b \x03(\x0b\x32(.opentelemetry.proto.metrics.v1.Exemplar\x12\x10\n\x03min\x18\x0c \x01(\x01H\x01\x88\x01\x01\x12\x10\n\x03max\x18\r \x01(\x01H\x02\x88\x01\x01\x12\x16\n\x0ezero_threshold\x18\x0e \x01(\x01\x1a\x30\n\x07\x42uckets\x12\x0e\n\x06offset\x18\x01 \x01(\x11\x12\x15\n\rbucket_counts\x18\x02 \x03(\x04\x42\x06\n\x04_sumB\x06\n\x04_minB\x06\n\x04_max\"\xc5\x02\n\x10SummaryDataPoint\x12;\n\nattributes\x18\x07 \x03(\x0b\x32\'.opentelemetry.proto.common.v1.KeyValue\x12\x1c\n\x14start_time_unix_nano\x18\x02 \x01(\x06\x12\x16\n\x0etime_unix_nano\x18\x03 \x01(\x06\x12\r\n\x05\x63ount\x18\x04 \x01(\x06\x12\x0b\n\x03sum\x18\x05 \x01(\x01\x12Y\n\x0fquantile_values\x18\x06 \x03(\x0b\x32@.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\x12\r\n\x05\x66lags\x18\x08 \x01(\r\x1a\x32\n\x0fValueAtQuantile\x12\x10\n\x08quantile\x18\x01 \x01(\x01\x12\r\n\x05value\x18\x02 \x01(\x01J\x04\x08\x01\x10\x02\"\xc1\x01\n\x08\x45xemplar\x12\x44\n\x13\x66iltered_attributes\x18\x07 \x03(\x0b\x32\'.opentelemetry.proto.common.v1.KeyValue\x12\x16\n\x0etime_unix_nano\x18\x02 \x01(\x06\x12\x13\n\tas_double\x18\x03 \x01(\x01H\x00\x12\x10\n\x06\x61s_int\x18\x06 \x01(\x10H\x00\x12\x0f\n\x07span_id\x18\x04 \x01(\x0c\x12\x10\n\x08trace_id\x18\x05 \x01(\x0c\x42\x07\n\x05valueJ\x04\x08\x01\x10\x02*\x8c\x01\n\x16\x41ggregationTemporality\x12\'\n#AGGREGATION_TEMPORALITY_UNSPECIFIED\x10\x00\x12!\n\x1d\x41GGREGATION_TEMPORALITY_DELTA\x10\x01\x12&\n\"AGGREGATION_TEMPORALITY_CUMULATIVE\x10\x02*^\n\x0e\x44\x61taPointFlags\x12\x1f\n\x1b\x44\x41TA_POINT_FLAGS_DO_NOT_USE\x10\x00\x12+\n\'DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK\x10\x01\x42\x7f\n!io.opentelemetry.proto.metrics.v1B\x0cMetricsProtoP\x01Z)go.opentelemetry.io/proto/otlp/metrics/v1\xaa\x02\x1eOpenTelemetry.Proto.Metrics.V1b\x06proto3"
|
12
|
+
|
13
|
+
pool = Google::Protobuf::DescriptorPool.generated_pool
|
14
|
+
pool.add_serialized_file(descriptor_data)
|
15
|
+
|
16
|
+
module Opentelemetry
|
17
|
+
module Proto
|
18
|
+
module Metrics
|
19
|
+
module V1
|
20
|
+
MetricsData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.MetricsData').msgclass
|
21
|
+
ResourceMetrics = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.ResourceMetrics').msgclass
|
22
|
+
ScopeMetrics = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.ScopeMetrics').msgclass
|
23
|
+
Metric = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.Metric').msgclass
|
24
|
+
Gauge = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.Gauge').msgclass
|
25
|
+
Sum = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.Sum').msgclass
|
26
|
+
Histogram = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.Histogram').msgclass
|
27
|
+
ExponentialHistogram = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.ExponentialHistogram').msgclass
|
28
|
+
Summary = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.Summary').msgclass
|
29
|
+
NumberDataPoint = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.NumberDataPoint').msgclass
|
30
|
+
HistogramDataPoint = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.HistogramDataPoint').msgclass
|
31
|
+
ExponentialHistogramDataPoint = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint').msgclass
|
32
|
+
ExponentialHistogramDataPoint::Buckets = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets').msgclass
|
33
|
+
SummaryDataPoint = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.SummaryDataPoint').msgclass
|
34
|
+
SummaryDataPoint::ValueAtQuantile = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile').msgclass
|
35
|
+
Exemplar = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.Exemplar').msgclass
|
36
|
+
AggregationTemporality = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.AggregationTemporality').enummodule
|
37
|
+
DataPointFlags = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.metrics.v1.DataPointFlags').enummodule
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
4
|
+
# source: opentelemetry/proto/resource/v1/resource.proto
|
5
|
+
|
6
|
+
require 'google/protobuf'
|
7
|
+
|
8
|
+
require 'opentelemetry/proto/common/v1/common_pb'
|
9
|
+
|
10
|
+
descriptor_data = "\n.opentelemetry/proto/resource/v1/resource.proto\x12\x1fopentelemetry.proto.resource.v1\x1a*opentelemetry/proto/common/v1/common.proto\"i\n\x08Resource\x12;\n\nattributes\x18\x01 \x03(\x0b\x32\'.opentelemetry.proto.common.v1.KeyValue\x12 \n\x18\x64ropped_attributes_count\x18\x02 \x01(\rB\x83\x01\n\"io.opentelemetry.proto.resource.v1B\rResourceProtoP\x01Z*go.opentelemetry.io/proto/otlp/resource/v1\xaa\x02\x1fOpenTelemetry.Proto.Resource.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 Resource
|
18
|
+
module V1
|
19
|
+
Resource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup('opentelemetry.proto.resource.v1.Resource').msgclass
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|