Class: Gitlab::Observability::OtelExporter

Inherits:
Object
  • Object
show all
Includes:
Utils::StrongMemoize
Defined in:
lib/gitlab/observability/otel_exporter.rb

Constant Summary collapse

ExportError =
Class.new(StandardError)
AuthenticationError =
Class.new(ExportError)
NetworkError =
Class.new(ExportError)
ENDPOINTS =
{
  traces: '/v1/traces',
  metrics: '/v1/metrics',
  logs: '/v1/logs'
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(integration) ⇒ OtelExporter

Returns a new instance of OtelExporter.



18
19
20
21
22
23
24
25
26
27
# File 'lib/gitlab/observability/otel_exporter.rb', line 18

def initialize(integration)
  @integration = integration

  unless integration.respond_to?(:otel_endpoint_url) && integration.respond_to?(:otel_headers)
    raise ArgumentError, "Integration must respond to otel_endpoint_url and otel_headers"
  end

  @endpoint_url = integration.otel_endpoint_url
  @headers = integration.otel_headers
end

Instance Method Details

#export_logs(logs_data) ⇒ Object



37
38
39
# File 'lib/gitlab/observability/otel_exporter.rb', line 37

def export_logs(logs_data)
  export_data(:logs, logs_data)
end

#export_metrics(metrics_data) ⇒ Object



33
34
35
# File 'lib/gitlab/observability/otel_exporter.rb', line 33

def export_metrics(metrics_data)
  export_data(:metrics, metrics_data)
end

#export_traces(traces_data) ⇒ Object



29
30
31
# File 'lib/gitlab/observability/otel_exporter.rb', line 29

def export_traces(traces_data)
  export_data(:traces, traces_data)
end