Class: Fluent::Plugin::OpentelemetryOutput::GrpcHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/out_opentelemetry.rb

Instance Method Summary collapse

Constructor Details

#initialize(grpc_config, transport_config, logger) ⇒ GrpcHandler

Returns a new instance of GrpcHandler.



178
179
180
181
182
# File 'lib/fluent/plugin/out_opentelemetry.rb', line 178

def initialize(grpc_config, transport_config, logger)
  @grpc_config = grpc_config
  @transport_config = transport_config
  @logger = logger
end

Instance Method Details

#export(record) ⇒ Object



184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/fluent/plugin/out_opentelemetry.rb', line 184

def export(record)
  msg = record["message"]

  credential = :this_channel_is_insecure

  case record["type"]
  when Opentelemetry::RECORD_TYPE_LOGS
    service = Opentelemetry::ServiceStub::Logs.new(@grpc_config.endpoint, credential)
  when Opentelemetry::RECORD_TYPE_METRICS
    service = Opentelemetry::ServiceStub::Metrics.new(@grpc_config.endpoint, credential)
  when Opentelemetry::RECORD_TYPE_TRACES
    service = Opentelemetry::ServiceStub::Traces.new(@grpc_config.endpoint, credential)
  end

  begin
    service.export(msg)
  rescue Google::Protobuf::ParseError => e
    # The message format does not comply with the OpenTelemetry protocol.
    raise ::Fluent::UnrecoverableError, e.message
  end
end