datadog 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +53 -2
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +19 -1
- data/ext/datadog_profiling_native_extension/collectors_stack.c +41 -0
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +1 -1
- data/ext/datadog_profiling_native_extension/crashtracker.c +1 -1
- data/ext/datadog_profiling_native_extension/extconf.rb +6 -4
- data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +47 -1
- data/ext/datadog_profiling_native_extension/setup_signal_handler.c +1 -1
- data/ext/datadog_profiling_native_extension/stack_recorder.c +13 -6
- data/ext/datadog_profiling_native_extension/stack_recorder.h +1 -0
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +1 -1
- data/lib/datadog/appsec/extensions.rb +1 -0
- data/lib/datadog/core/configuration/components.rb +6 -3
- data/lib/datadog/core/configuration/settings.rb +39 -0
- data/lib/datadog/core/configuration.rb +3 -17
- data/lib/datadog/core/deprecations.rb +58 -0
- data/lib/datadog/core/environment/yjit.rb +5 -0
- data/lib/datadog/core/runtime/ext.rb +1 -0
- data/lib/datadog/core/runtime/metrics.rb +6 -0
- data/lib/datadog/core/telemetry/component.rb +107 -0
- data/lib/datadog/core/telemetry/event.rb +100 -25
- data/lib/datadog/core/telemetry/ext.rb +2 -0
- data/lib/datadog/core/telemetry/http/adapters/net.rb +1 -1
- data/lib/datadog/core/telemetry/metric.rb +167 -0
- data/lib/datadog/core/telemetry/metrics_collection.rb +81 -0
- data/lib/datadog/core/telemetry/metrics_manager.rb +81 -0
- data/lib/datadog/core/telemetry/request.rb +1 -1
- data/lib/datadog/core/telemetry/worker.rb +173 -0
- data/lib/datadog/core/utils/only_once_successful.rb +76 -0
- data/lib/datadog/core.rb +2 -19
- data/lib/datadog/opentelemetry/sdk/propagator.rb +5 -10
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +5 -2
- data/lib/datadog/profiling/collectors/code_provenance.rb +18 -5
- data/lib/datadog/profiling/component.rb +18 -1
- data/lib/datadog/profiling/ext/dir_monkey_patches.rb +410 -0
- data/lib/datadog/profiling.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +1 -1
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +1 -1
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +1 -1
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +4 -6
- data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +9 -4
- data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +3 -2
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +1 -5
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/cache/event.rb +32 -0
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +156 -0
- data/lib/datadog/tracing/contrib/active_support/cache/events.rb +34 -0
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +45 -41
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +17 -40
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +4 -1
- data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +29 -6
- data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +16 -4
- data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +33 -29
- data/lib/datadog/tracing/contrib/analytics.rb +5 -0
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +5 -0
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +8 -2
- data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +166 -0
- data/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb +25 -0
- data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/event.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +3 -3
- data/lib/datadog/tracing/contrib/racecar/event.rb +2 -2
- data/lib/datadog/tracing/contrib/rails/ext.rb +9 -0
- data/lib/datadog/tracing/contrib/rails/patcher.rb +7 -0
- data/lib/datadog/tracing/contrib/rails/runner.rb +95 -0
- data/lib/datadog/tracing/distributed/b3_multi.rb +1 -1
- data/lib/datadog/tracing/distributed/b3_single.rb +3 -1
- data/lib/datadog/tracing/distributed/datadog.rb +2 -2
- data/lib/datadog/tracing/distributed/propagation.rb +9 -2
- data/lib/datadog/tracing/distributed/trace_context.rb +3 -2
- data/lib/datadog/tracing/span_operation.rb +3 -2
- data/lib/datadog/tracing/trace_operation.rb +7 -3
- data/lib/datadog/tracing/trace_segment.rb +4 -1
- data/lib/datadog/tracing/tracer.rb +9 -2
- data/lib/datadog/tracing.rb +5 -1
- data/lib/datadog/version.rb +2 -2
- metadata +22 -9
- data/lib/datadog/core/telemetry/client.rb +0 -95
- data/lib/datadog/core/telemetry/heartbeat.rb +0 -33
@@ -181,6 +181,7 @@ module Datadog
|
|
181
181
|
start_time: nil,
|
182
182
|
tags: nil,
|
183
183
|
type: nil,
|
184
|
+
id: nil,
|
184
185
|
&block
|
185
186
|
)
|
186
187
|
# Don't allow more span measurements if the
|
@@ -197,7 +198,8 @@ module Datadog
|
|
197
198
|
service: service,
|
198
199
|
start_time: start_time,
|
199
200
|
tags: tags,
|
200
|
-
type: type
|
201
|
+
type: type,
|
202
|
+
id: id
|
201
203
|
)
|
202
204
|
|
203
205
|
# Start span measurement
|
@@ -212,7 +214,8 @@ module Datadog
|
|
212
214
|
service: nil,
|
213
215
|
start_time: nil,
|
214
216
|
tags: nil,
|
215
|
-
type: nil
|
217
|
+
type: nil,
|
218
|
+
id: nil
|
216
219
|
)
|
217
220
|
begin
|
218
221
|
# Resolve span options:
|
@@ -249,7 +252,8 @@ module Datadog
|
|
249
252
|
start_time: start_time,
|
250
253
|
tags: tags,
|
251
254
|
trace_id: trace_id,
|
252
|
-
type: type
|
255
|
+
type: type,
|
256
|
+
id: id
|
253
257
|
)
|
254
258
|
rescue StandardError => e
|
255
259
|
Datadog.logger.debug { "Failed to build new span: #{e}" }
|
@@ -132,10 +132,13 @@ module Datadog
|
|
132
132
|
|| sampling_priority == Sampling::Ext::Priority::USER_KEEP
|
133
133
|
end
|
134
134
|
|
135
|
+
# Returns the high order part of the trace id as a hexadecimal string; the most significant 64 bits.
|
136
|
+
# The String returned is padded with zeros, having a fixed length of 16 characters.
|
137
|
+
# If the high order part is zero, it returns nil.
|
135
138
|
def high_order_tid
|
136
139
|
high_order = Tracing::Utils::TraceId.to_high_order(@id)
|
137
140
|
|
138
|
-
high_order
|
141
|
+
format('%016x', high_order) if high_order != 0
|
139
142
|
end
|
140
143
|
|
141
144
|
protected
|
@@ -114,6 +114,7 @@ module Datadog
|
|
114
114
|
# @param [Time] start_time time which the span should have started.
|
115
115
|
# @param [Hash<String,String>] tags extra tags which should be added to the span.
|
116
116
|
# @param [String] type the type of the span. See {Datadog::Tracing::Metadata::Ext::AppTypes}.
|
117
|
+
# @param [Integer] the id of the new span.
|
117
118
|
# @return [Object] If a block is provided, returns the result of the block execution.
|
118
119
|
# @return [Datadog::Tracing::SpanOperation] If no block is provided, returns the active,
|
119
120
|
# unfinished {Datadog::Tracing::SpanOperation}.
|
@@ -130,6 +131,7 @@ module Datadog
|
|
130
131
|
start_time: nil,
|
131
132
|
tags: nil,
|
132
133
|
type: nil,
|
134
|
+
id: nil,
|
133
135
|
&block
|
134
136
|
)
|
135
137
|
return skip_trace(name, &block) unless enabled
|
@@ -162,6 +164,7 @@ module Datadog
|
|
162
164
|
tags: tags,
|
163
165
|
type: type,
|
164
166
|
_trace: trace,
|
167
|
+
id: id,
|
165
168
|
&block
|
166
169
|
)
|
167
170
|
end
|
@@ -178,7 +181,8 @@ module Datadog
|
|
178
181
|
start_time: start_time,
|
179
182
|
tags: tags,
|
180
183
|
type: type,
|
181
|
-
_trace: trace
|
184
|
+
_trace: trace,
|
185
|
+
id: id
|
182
186
|
)
|
183
187
|
end
|
184
188
|
end
|
@@ -375,6 +379,7 @@ module Datadog
|
|
375
379
|
tags: nil,
|
376
380
|
type: nil,
|
377
381
|
_trace: nil,
|
382
|
+
id: nil,
|
378
383
|
&block
|
379
384
|
)
|
380
385
|
trace = _trace || start_trace(continue_from: continue_from)
|
@@ -391,6 +396,7 @@ module Datadog
|
|
391
396
|
service: service,
|
392
397
|
tags: resolve_tags(tags),
|
393
398
|
type: type,
|
399
|
+
id: id,
|
394
400
|
&block
|
395
401
|
)
|
396
402
|
else
|
@@ -403,7 +409,8 @@ module Datadog
|
|
403
409
|
service: service,
|
404
410
|
start_time: start_time,
|
405
411
|
tags: resolve_tags(tags),
|
406
|
-
type: type
|
412
|
+
type: type,
|
413
|
+
id: id
|
407
414
|
)
|
408
415
|
|
409
416
|
span.start(start_time)
|
data/lib/datadog/tracing.rb
CHANGED
@@ -23,6 +23,7 @@ module Datadog
|
|
23
23
|
start_time: nil,
|
24
24
|
tags: nil,
|
25
25
|
type: nil,
|
26
|
+
id: nil,
|
26
27
|
&block
|
27
28
|
)
|
28
29
|
|
@@ -35,6 +36,7 @@ module Datadog
|
|
35
36
|
start_time: start_time,
|
36
37
|
tags: tags,
|
37
38
|
type: type,
|
39
|
+
id: id,
|
38
40
|
&block
|
39
41
|
)
|
40
42
|
end
|
@@ -117,9 +119,11 @@ module Datadog
|
|
117
119
|
# # dd.env=prod dd.service=auth dd.version=13.8 dd.trace_id=5458478252992251 dd.span_id=7117552347370098 My message
|
118
120
|
# ```
|
119
121
|
#
|
120
|
-
# @return [String] correlation information
|
122
|
+
# @return [String] correlation information; or an empty String if Tracing is disabled (`!enabled?`)
|
121
123
|
# @public_api
|
122
124
|
def log_correlation
|
125
|
+
return '' unless enabled?
|
126
|
+
|
123
127
|
correlation.to_log_format
|
124
128
|
end
|
125
129
|
|
data/lib/datadog/version.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module Datadog
|
4
4
|
module VERSION
|
5
5
|
MAJOR = 2
|
6
|
-
MINOR =
|
6
|
+
MINOR = 2
|
7
7
|
PATCH = 0
|
8
8
|
PRE = nil
|
9
9
|
BUILD = nil
|
@@ -21,6 +21,6 @@ module Datadog
|
|
21
21
|
# To allow testing with the next unreleased version of Ruby, the version check is performed
|
22
22
|
# as `< #{MAXIMUM_RUBY_VERSION}`, meaning prereleases of MAXIMUM_RUBY_VERSION are allowed
|
23
23
|
# but not stable MAXIMUM_RUBY_VERSION releases.
|
24
|
-
MAXIMUM_RUBY_VERSION = '3.
|
24
|
+
MAXIMUM_RUBY_VERSION = '3.5'
|
25
25
|
end
|
26
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datadog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 10.0.0.1.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 10.0.0.1.0
|
69
69
|
description: |
|
70
70
|
datadog is Datadog's client library for Ruby. It includes a suite of tools
|
71
71
|
which provide visibility into the performance and security of Ruby applications,
|
@@ -223,6 +223,7 @@ files:
|
|
223
223
|
- lib/datadog/core/configuration/option_definition.rb
|
224
224
|
- lib/datadog/core/configuration/options.rb
|
225
225
|
- lib/datadog/core/configuration/settings.rb
|
226
|
+
- lib/datadog/core/deprecations.rb
|
226
227
|
- lib/datadog/core/diagnostics/environment_logger.rb
|
227
228
|
- lib/datadog/core/diagnostics/health.rb
|
228
229
|
- lib/datadog/core/encoding.rb
|
@@ -281,17 +282,20 @@ files:
|
|
281
282
|
- lib/datadog/core/remote/worker.rb
|
282
283
|
- lib/datadog/core/runtime/ext.rb
|
283
284
|
- lib/datadog/core/runtime/metrics.rb
|
284
|
-
- lib/datadog/core/telemetry/
|
285
|
+
- lib/datadog/core/telemetry/component.rb
|
285
286
|
- lib/datadog/core/telemetry/emitter.rb
|
286
287
|
- lib/datadog/core/telemetry/event.rb
|
287
288
|
- lib/datadog/core/telemetry/ext.rb
|
288
|
-
- lib/datadog/core/telemetry/heartbeat.rb
|
289
289
|
- lib/datadog/core/telemetry/http/adapters/net.rb
|
290
290
|
- lib/datadog/core/telemetry/http/env.rb
|
291
291
|
- lib/datadog/core/telemetry/http/ext.rb
|
292
292
|
- lib/datadog/core/telemetry/http/response.rb
|
293
293
|
- lib/datadog/core/telemetry/http/transport.rb
|
294
|
+
- lib/datadog/core/telemetry/metric.rb
|
295
|
+
- lib/datadog/core/telemetry/metrics_collection.rb
|
296
|
+
- lib/datadog/core/telemetry/metrics_manager.rb
|
294
297
|
- lib/datadog/core/telemetry/request.rb
|
298
|
+
- lib/datadog/core/telemetry/worker.rb
|
295
299
|
- lib/datadog/core/transport/ext.rb
|
296
300
|
- lib/datadog/core/transport/http/adapters/net.rb
|
297
301
|
- lib/datadog/core/transport/http/adapters/registry.rb
|
@@ -312,6 +316,7 @@ files:
|
|
312
316
|
- lib/datadog/core/utils/hash.rb
|
313
317
|
- lib/datadog/core/utils/network.rb
|
314
318
|
- lib/datadog/core/utils/only_once.rb
|
319
|
+
- lib/datadog/core/utils/only_once_successful.rb
|
315
320
|
- lib/datadog/core/utils/safe_dup.rb
|
316
321
|
- lib/datadog/core/utils/sequence.rb
|
317
322
|
- lib/datadog/core/utils/time.rb
|
@@ -355,6 +360,7 @@ files:
|
|
355
360
|
- lib/datadog/profiling/crashtracker.rb
|
356
361
|
- lib/datadog/profiling/exporter.rb
|
357
362
|
- lib/datadog/profiling/ext.rb
|
363
|
+
- lib/datadog/profiling/ext/dir_monkey_patches.rb
|
358
364
|
- lib/datadog/profiling/ext/forking.rb
|
359
365
|
- lib/datadog/profiling/flush.rb
|
360
366
|
- lib/datadog/profiling/http_transport.rb
|
@@ -447,6 +453,9 @@ files:
|
|
447
453
|
- lib/datadog/tracing/contrib/active_record/integration.rb
|
448
454
|
- lib/datadog/tracing/contrib/active_record/patcher.rb
|
449
455
|
- lib/datadog/tracing/contrib/active_record/utils.rb
|
456
|
+
- lib/datadog/tracing/contrib/active_support/cache/event.rb
|
457
|
+
- lib/datadog/tracing/contrib/active_support/cache/events.rb
|
458
|
+
- lib/datadog/tracing/contrib/active_support/cache/events/cache.rb
|
450
459
|
- lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb
|
451
460
|
- lib/datadog/tracing/contrib/active_support/cache/patcher.rb
|
452
461
|
- lib/datadog/tracing/contrib/active_support/cache/redis.rb
|
@@ -536,6 +545,8 @@ files:
|
|
536
545
|
- lib/datadog/tracing/contrib/graphql/patcher.rb
|
537
546
|
- lib/datadog/tracing/contrib/graphql/trace_patcher.rb
|
538
547
|
- lib/datadog/tracing/contrib/graphql/tracing_patcher.rb
|
548
|
+
- lib/datadog/tracing/contrib/graphql/unified_trace.rb
|
549
|
+
- lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb
|
539
550
|
- lib/datadog/tracing/contrib/grpc.rb
|
540
551
|
- lib/datadog/tracing/contrib/grpc/configuration/settings.rb
|
541
552
|
- lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb
|
@@ -664,6 +675,7 @@ files:
|
|
664
675
|
- lib/datadog/tracing/contrib/rails/middlewares.rb
|
665
676
|
- lib/datadog/tracing/contrib/rails/patcher.rb
|
666
677
|
- lib/datadog/tracing/contrib/rails/railtie.rb
|
678
|
+
- lib/datadog/tracing/contrib/rails/runner.rb
|
667
679
|
- lib/datadog/tracing/contrib/rails/utils.rb
|
668
680
|
- lib/datadog/tracing/contrib/rake/configuration/settings.rb
|
669
681
|
- lib/datadog/tracing/contrib/rake/ext.rb
|
@@ -840,7 +852,8 @@ licenses:
|
|
840
852
|
- Apache-2.0
|
841
853
|
metadata:
|
842
854
|
allowed_push_host: https://rubygems.org
|
843
|
-
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/
|
855
|
+
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.2.0/CHANGELOG.md
|
856
|
+
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.2.0
|
844
857
|
post_install_message:
|
845
858
|
rdoc_options: []
|
846
859
|
require_paths:
|
@@ -852,14 +865,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
852
865
|
version: 2.5.0
|
853
866
|
- - "<"
|
854
867
|
- !ruby/object:Gem::Version
|
855
|
-
version: '3.
|
868
|
+
version: '3.5'
|
856
869
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
857
870
|
requirements:
|
858
871
|
- - ">="
|
859
872
|
- !ruby/object:Gem::Version
|
860
873
|
version: 2.0.0
|
861
874
|
requirements: []
|
862
|
-
rubygems_version: 3.4.
|
875
|
+
rubygems_version: 3.4.21
|
863
876
|
signing_key:
|
864
877
|
specification_version: 4
|
865
878
|
summary: Datadog tracing code for your Ruby applications
|
@@ -1,95 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'emitter'
|
4
|
-
require_relative 'event'
|
5
|
-
require_relative 'heartbeat'
|
6
|
-
require_relative '../utils/forking'
|
7
|
-
|
8
|
-
module Datadog
|
9
|
-
module Core
|
10
|
-
module Telemetry
|
11
|
-
# Telemetry entrypoint, coordinates sending telemetry events at various points in app lifecycle.
|
12
|
-
class Client
|
13
|
-
attr_reader \
|
14
|
-
:enabled,
|
15
|
-
:unsupported
|
16
|
-
|
17
|
-
include Core::Utils::Forking
|
18
|
-
|
19
|
-
# @param enabled [Boolean] Determines whether telemetry events should be sent to the API
|
20
|
-
# @param heartbeat_interval_seconds [Float] How frequently heartbeats will be reported, in seconds.
|
21
|
-
# @param [Boolean] dependency_collection Whether to send the `app-dependencies-loaded` event
|
22
|
-
def initialize(heartbeat_interval_seconds:, dependency_collection:, enabled: true)
|
23
|
-
@enabled = enabled
|
24
|
-
@emitter = Emitter.new
|
25
|
-
@stopped = false
|
26
|
-
@unsupported = false
|
27
|
-
@started = false
|
28
|
-
@dependency_collection = dependency_collection
|
29
|
-
|
30
|
-
@worker = Telemetry::Heartbeat.new(enabled: @enabled, heartbeat_interval_seconds: heartbeat_interval_seconds) do
|
31
|
-
next unless @started # `started!` should be the first event, thus ensure that `heartbeat!` is not sent first.
|
32
|
-
|
33
|
-
heartbeat!
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def disable!
|
38
|
-
@enabled = false
|
39
|
-
@worker.enabled = false
|
40
|
-
end
|
41
|
-
|
42
|
-
def started!
|
43
|
-
return if !@enabled || forked?
|
44
|
-
|
45
|
-
res = @emitter.request(Event::AppStarted.new)
|
46
|
-
|
47
|
-
if res.not_found? # Telemetry is only supported by agent versions 7.34 and up
|
48
|
-
Datadog.logger.debug('Agent does not support telemetry; disabling future telemetry events.')
|
49
|
-
disable!
|
50
|
-
@unsupported = true # Prevent telemetry from getting re-enabled
|
51
|
-
return res
|
52
|
-
end
|
53
|
-
|
54
|
-
@emitter.request(Event::AppDependenciesLoaded.new) if @dependency_collection
|
55
|
-
|
56
|
-
@started = true
|
57
|
-
end
|
58
|
-
|
59
|
-
def emit_closing!
|
60
|
-
return if !@enabled || forked?
|
61
|
-
|
62
|
-
@emitter.request(Event::AppClosing.new)
|
63
|
-
end
|
64
|
-
|
65
|
-
def stop!
|
66
|
-
return if @stopped
|
67
|
-
|
68
|
-
@worker.stop(true, 0)
|
69
|
-
@stopped = true
|
70
|
-
end
|
71
|
-
|
72
|
-
def integrations_change!
|
73
|
-
return if !@enabled || forked?
|
74
|
-
|
75
|
-
@emitter.request(Event::AppIntegrationsChange.new)
|
76
|
-
end
|
77
|
-
|
78
|
-
# Report configuration changes caused by Remote Configuration.
|
79
|
-
def client_configuration_change!(changes)
|
80
|
-
return if !@enabled || forked?
|
81
|
-
|
82
|
-
@emitter.request(Event::AppClientConfigurationChange.new(changes, 'remote_config'))
|
83
|
-
end
|
84
|
-
|
85
|
-
private
|
86
|
-
|
87
|
-
def heartbeat!
|
88
|
-
return if !@enabled || forked?
|
89
|
-
|
90
|
-
@emitter.request(Event::AppHeartbeat.new)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../worker'
|
4
|
-
require_relative '../workers/polling'
|
5
|
-
|
6
|
-
module Datadog
|
7
|
-
module Core
|
8
|
-
module Telemetry
|
9
|
-
# Periodically (every DEFAULT_INTERVAL_SECONDS) sends a heartbeat event to the telemetry API.
|
10
|
-
class Heartbeat < Core::Worker
|
11
|
-
include Core::Workers::Polling
|
12
|
-
|
13
|
-
def initialize(heartbeat_interval_seconds:, enabled: true, &block)
|
14
|
-
# Workers::Polling settings
|
15
|
-
self.enabled = enabled
|
16
|
-
# Workers::IntervalLoop settings
|
17
|
-
self.loop_base_interval = heartbeat_interval_seconds
|
18
|
-
self.fork_policy = Core::Workers::Async::Thread::FORK_POLICY_STOP
|
19
|
-
super(&block)
|
20
|
-
start
|
21
|
-
end
|
22
|
-
|
23
|
-
def loop_wait_before_first_iteration?; end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def start
|
28
|
-
perform
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|