Class: Datadog::Core::Telemetry::Emitter
- Inherits:
-
Object
- Object
- Datadog::Core::Telemetry::Emitter
- Extended by:
- Utils::Forking
- Defined in:
- lib/datadog/core/telemetry/emitter.rb
Overview
Class that emits telemetry events
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#transport ⇒ Object
readonly
Returns the value of attribute transport.
Class Method Summary collapse
-
.sequence ⇒ Object
Initializes a Sequence object to track seq_id if not already initialized; else returns stored Sequence object.
Instance Method Summary collapse
- #debug? ⇒ Boolean
-
#initialize(transport, logger: Datadog.logger, debug: false) ⇒ Emitter
constructor
A new instance of Emitter.
-
#request(event) ⇒ Object
Retrieves and emits a TelemetryRequest object based on the request type specified.
Methods included from Utils::Forking
after_fork!, extended, fork_pid, forked?, included, update_fork_pid!
Constructor Details
permalink #initialize(transport, logger: Datadog.logger, debug: false) ⇒ Emitter
Returns a new instance of Emitter.
19 20 21 22 23 |
# File 'lib/datadog/core/telemetry/emitter.rb', line 19 def initialize(transport, logger: Datadog.logger, debug: false) @transport = transport @logger = logger @debug = !!debug end |
Instance Attribute Details
permalink #logger ⇒ Object (readonly)
Returns the value of attribute logger.
13 14 15 |
# File 'lib/datadog/core/telemetry/emitter.rb', line 13 def logger @logger end |
permalink #transport ⇒ Object (readonly)
Returns the value of attribute transport.
13 14 15 |
# File 'lib/datadog/core/telemetry/emitter.rb', line 13 def transport @transport end |
Class Method Details
permalink .sequence ⇒ Object
Initializes a Sequence object to track seq_id if not already initialized; else returns stored Sequence object
49 50 51 52 |
# File 'lib/datadog/core/telemetry/emitter.rb', line 49 def self.sequence after_fork! { @sequence = Datadog::Core::Utils::Sequence.new(1) } @sequence ||= Datadog::Core::Utils::Sequence.new(1) end |
Instance Method Details
permalink #debug? ⇒ Boolean
25 26 27 |
# File 'lib/datadog/core/telemetry/emitter.rb', line 25 def debug? @debug end |
permalink #request(event) ⇒ Object
Retrieves and emits a TelemetryRequest object based on the request type specified
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/datadog/core/telemetry/emitter.rb', line 30 def request(event) seq_id = self.class.sequence.next payload = Request.build_payload(event, seq_id, debug: debug?) res = @transport.send_telemetry(request_type: event.type, payload: payload) logger.debug { "Telemetry sent for event `#{event.type}` (response code: #{res.code})" } res rescue => e logger.debug { "Unable to send telemetry request for event `#{begin event.type rescue "unknown" end}`: #{e}" } Core::Transport::InternalErrorResponse.new(e) end |