class Datadog::Core::Telemetry::Emitter
Class that emits telemetry events
def self.sequence
Initializes a Sequence object to track seq_id if not already initialized; else returns stored
def self.sequence after_fork! { @sequence = Datadog::Core::Utils::Sequence.new(1) } @sequence ||= Datadog::Core::Utils::Sequence.new(1) end
def initialize(http_transport: Datadog::Core::Telemetry::Http::Transport.new)
-
http_transport
(Datadog::Core::Telemetry::Http::Transport
) -- Transport object that can be used to send -
sequence
(Datadog::Core::Utils::Sequence
) -- Sequence object that stores and increments a counter
def initialize(http_transport: Datadog::Core::Telemetry::Http::Transport.new) @http_transport = http_transport end
def request(request_type, data: nil)
-
data
(Object
) -- arbitrary object to be passed to the respective `request_type` handler -
request_type
(String
) -- the type of telemetry request to collect data for
def request(request_type, data: nil) begin request = Datadog::Core::Telemetry::Event.new.telemetry_request( request_type: request_type, seq_id: self.class.sequence.next, data: data, ).to_h @http_transport.request(request_type: request_type.to_s, payload: request.to_json) rescue StandardError => e Datadog.logger.debug("Unable to send telemetry request for event `#{request_type}`: #{e}") Telemetry::Http::InternalErrorResponse.new(e) end end