datadog 2.34.0 → 2.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +75 -6
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +2 -15
- data/ext/datadog_profiling_native_extension/stack_recorder.c +6 -11
- data/lib/datadog/ai_guard/configuration.rb +1 -0
- data/lib/datadog/ai_guard/contrib/rack/request_middleware.rb +53 -39
- data/lib/datadog/ai_guard/evaluation.rb +6 -1
- data/lib/datadog/ai_guard/ext.rb +12 -1
- data/lib/datadog/appsec/api_security/route_extractor.rb +3 -0
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +9 -40
- data/lib/datadog/appsec/default_header_tags.rb +48 -0
- data/lib/datadog/core/configuration/settings.rb +10 -6
- data/lib/datadog/core/environment/process.rb +4 -2
- data/lib/datadog/core/utils/{array.rb → enumerable_compat.rb} +2 -2
- data/lib/datadog/profiling/collectors/thread_context.rb +0 -4
- data/lib/datadog/profiling/component.rb +3 -11
- data/lib/datadog/profiling/ext/dir_monkey_patches.rb +3 -2
- data/lib/datadog/profiling/stack_recorder.rb +0 -4
- data/lib/datadog/symbol_database/extractor.rb +3 -3
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +4 -1
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +4 -1
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +4 -1
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +4 -1
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +4 -1
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +4 -1
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +4 -1
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +4 -1
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +2 -0
- data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +2 -2
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/middleware.rb +1 -0
- data/lib/datadog/tracing/contrib/ext.rb +3 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +3 -0
- data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -0
- data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -0
- data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +1 -0
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/event.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +5 -5
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +2 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/opensearch/quantize.rb +2 -2
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +3 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +2 -2
- data/lib/datadog/tracing/contrib/que/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/event.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/header_tagging.rb +23 -0
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +2 -0
- data/lib/datadog/tracing/contrib/rails/runner.rb +2 -0
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -2
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +2 -0
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +1 -0
- data/lib/datadog/tracing/contrib/roda/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/roda/instrumentation.rb +4 -1
- data/lib/datadog/tracing/contrib/sequel/database.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +2 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +2 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +3 -2
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +1 -0
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/utils/quantization/{hash.rb → hash_formatter.rb} +1 -1
- data/lib/datadog/tracing/metadata/ext.rb +7 -0
- data/lib/datadog/tracing/tracer.rb +3 -0
- data/lib/datadog/tracing/transport/traces.rb +2 -2
- data/lib/datadog/version.rb +1 -1
- metadata +8 -9
|
@@ -34,8 +34,10 @@ module Datadog
|
|
|
34
34
|
|
|
35
35
|
tags << "#{Environment::Ext::TAG_ENTRYPOINT_TYPE}:#{TagNormalizer.normalize(entrypoint_type, remove_digit_start_char: false)}"
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
if defined?(@rails_application_name)
|
|
38
|
+
rails_name = TagNormalizer.normalize_process_value(@rails_application_name.to_s)
|
|
39
|
+
tags << "#{Environment::Ext::TAG_RAILS_APPLICATION}:#{rails_name}" unless rails_name.empty?
|
|
40
|
+
end
|
|
39
41
|
|
|
40
42
|
if defined?(@service_user_configured)
|
|
41
43
|
if @service_user_configured
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
module Datadog
|
|
4
4
|
module Core
|
|
5
5
|
module Utils
|
|
6
|
-
#
|
|
7
|
-
module
|
|
6
|
+
# Bring newer Enumerable methods to older Ruby versions.
|
|
7
|
+
module EnumerableCompat
|
|
8
8
|
def self.filter_map(array, &block)
|
|
9
9
|
if array.respond_to?(:filter_map)
|
|
10
10
|
# DEV Supported since Ruby 2.7, saves an intermediate object creation
|
|
@@ -19,7 +19,6 @@ module Datadog
|
|
|
19
19
|
max_frames:,
|
|
20
20
|
tracer:,
|
|
21
21
|
endpoint_collection_enabled:,
|
|
22
|
-
timeline_enabled:,
|
|
23
22
|
waiting_for_gvl_threshold_ns:,
|
|
24
23
|
otel_context_enabled:,
|
|
25
24
|
native_filenames_enabled:
|
|
@@ -31,7 +30,6 @@ module Datadog
|
|
|
31
30
|
max_frames: max_frames,
|
|
32
31
|
tracer_context_key: tracer_context_key,
|
|
33
32
|
endpoint_collection_enabled: endpoint_collection_enabled,
|
|
34
|
-
timeline_enabled: timeline_enabled,
|
|
35
33
|
waiting_for_gvl_threshold_ns: waiting_for_gvl_threshold_ns,
|
|
36
34
|
otel_context_enabled: otel_context_enabled,
|
|
37
35
|
native_filenames_enabled: validate_native_filenames(native_filenames_enabled),
|
|
@@ -43,7 +41,6 @@ module Datadog
|
|
|
43
41
|
max_frames: 400,
|
|
44
42
|
tracer: nil,
|
|
45
43
|
endpoint_collection_enabled: false,
|
|
46
|
-
timeline_enabled: false,
|
|
47
44
|
waiting_for_gvl_threshold_ns: 10_000_000,
|
|
48
45
|
otel_context_enabled: false,
|
|
49
46
|
native_filenames_enabled: true,
|
|
@@ -54,7 +51,6 @@ module Datadog
|
|
|
54
51
|
max_frames: max_frames,
|
|
55
52
|
tracer: tracer,
|
|
56
53
|
endpoint_collection_enabled: endpoint_collection_enabled,
|
|
57
|
-
timeline_enabled: timeline_enabled,
|
|
58
54
|
waiting_for_gvl_threshold_ns: waiting_for_gvl_threshold_ns,
|
|
59
55
|
otel_context_enabled: otel_context_enabled,
|
|
60
56
|
native_filenames_enabled: native_filenames_enabled,
|
|
@@ -37,7 +37,6 @@ module Datadog
|
|
|
37
37
|
# NOTE: Please update the Initialization section of ProfilingDevelopment.md with any changes to this method
|
|
38
38
|
|
|
39
39
|
no_signals_workaround_enabled = no_signals_workaround_enabled?(settings, logger)
|
|
40
|
-
timeline_enabled = settings.profiling.advanced.timeline_enabled
|
|
41
40
|
allocation_profiling_enabled = enable_allocation_profiling?(settings, logger)
|
|
42
41
|
heap_sample_every = get_heap_sample_every(settings)
|
|
43
42
|
heap_profiling_enabled = enable_heap_profiling?(settings, allocation_profiling_enabled, heap_sample_every, logger)
|
|
@@ -53,10 +52,9 @@ module Datadog
|
|
|
53
52
|
heap_samples_enabled: heap_profiling_enabled,
|
|
54
53
|
heap_size_enabled: heap_size_profiling_enabled,
|
|
55
54
|
heap_sample_every: heap_sample_every,
|
|
56
|
-
timeline_enabled: timeline_enabled,
|
|
57
55
|
heap_clean_after_gc_enabled: settings.profiling.advanced.heap_clean_after_gc_enabled,
|
|
58
56
|
)
|
|
59
|
-
thread_context_collector = build_thread_context_collector(settings, recorder, optional_tracer
|
|
57
|
+
thread_context_collector = build_thread_context_collector(settings, recorder, optional_tracer)
|
|
60
58
|
worker = Datadog::Profiling::Collectors::CpuAndWallTimeWorker.new(
|
|
61
59
|
gc_profiling_enabled: enable_gc_profiling?(settings, logger),
|
|
62
60
|
no_signals_workaround_enabled: no_signals_workaround_enabled,
|
|
@@ -71,7 +69,6 @@ module Datadog
|
|
|
71
69
|
|
|
72
70
|
internal_metadata = {
|
|
73
71
|
no_signals_workaround_enabled: no_signals_workaround_enabled,
|
|
74
|
-
timeline_enabled: timeline_enabled,
|
|
75
72
|
heap_sample_every: heap_sample_every,
|
|
76
73
|
}.freeze
|
|
77
74
|
|
|
@@ -99,13 +96,12 @@ module Datadog
|
|
|
99
96
|
[nil, {profiling_enabled: false}]
|
|
100
97
|
end
|
|
101
98
|
|
|
102
|
-
private_class_method def self.build_thread_context_collector(settings, recorder, optional_tracer
|
|
99
|
+
private_class_method def self.build_thread_context_collector(settings, recorder, optional_tracer)
|
|
103
100
|
Datadog::Profiling::Collectors::ThreadContext.new(
|
|
104
101
|
recorder: recorder,
|
|
105
102
|
max_frames: settings.profiling.advanced.max_frames,
|
|
106
103
|
tracer: optional_tracer,
|
|
107
104
|
endpoint_collection_enabled: settings.profiling.advanced.endpoint.collection.enabled,
|
|
108
|
-
timeline_enabled: timeline_enabled,
|
|
109
105
|
waiting_for_gvl_threshold_ns: settings.profiling.advanced.waiting_for_gvl_threshold_ns,
|
|
110
106
|
otel_context_enabled: settings.profiling.advanced.preview_otel_context_enabled,
|
|
111
107
|
native_filenames_enabled: settings.profiling.advanced.native_filenames_enabled,
|
|
@@ -469,11 +465,7 @@ module Datadog
|
|
|
469
465
|
end
|
|
470
466
|
|
|
471
467
|
private_class_method def self.enable_gvl_profiling?(settings, logger)
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
# GVL profiling only makes sense in the context of timeline. We could emit a warning here, but not sure how
|
|
475
|
-
# useful it is -- if a customer disables timeline, there's nowhere to look for GVL profiling anyway!
|
|
476
|
-
settings.profiling.advanced.timeline_enabled && settings.profiling.advanced.gvl_enabled
|
|
468
|
+
RUBY_VERSION >= "3.2" && settings.profiling.advanced.gvl_enabled
|
|
477
469
|
end
|
|
478
470
|
end
|
|
479
471
|
end
|
|
@@ -4,9 +4,10 @@ module Datadog
|
|
|
4
4
|
module Profiling
|
|
5
5
|
# Monkey patches needed for profiler features and compatibility
|
|
6
6
|
module Ext
|
|
7
|
-
#
|
|
7
|
+
# Ruby versions before 3.4 have bugs in the `Dir` class implementation, causing issues such as
|
|
8
8
|
# https://github.com/DataDog/dd-trace-rb/issues/3450 .
|
|
9
|
-
#
|
|
9
|
+
# This was fixed upstream in https://bugs.ruby-lang.org/issues/20586 but we use this monkey patch to work around
|
|
10
|
+
# the issue on legacy versions (it gets applied by `Datadog::Profiling::Component`).
|
|
10
11
|
#
|
|
11
12
|
# This monkey patch for the Ruby `Dir` class works around these bugs for affected Ruby versions by temporarily
|
|
12
13
|
# blocking the profiler from interrupting system calls.
|
|
@@ -13,7 +13,6 @@ module Datadog
|
|
|
13
13
|
heap_samples_enabled:,
|
|
14
14
|
heap_size_enabled:,
|
|
15
15
|
heap_sample_every:,
|
|
16
|
-
timeline_enabled:,
|
|
17
16
|
heap_clean_after_gc_enabled:
|
|
18
17
|
)
|
|
19
18
|
# This mutex works in addition to the fancy C-level mutexes we have in the native side (see the docs there).
|
|
@@ -30,7 +29,6 @@ module Datadog
|
|
|
30
29
|
heap_samples_enabled: heap_samples_enabled,
|
|
31
30
|
heap_size_enabled: heap_size_enabled,
|
|
32
31
|
heap_sample_every: heap_sample_every,
|
|
33
|
-
timeline_enabled: timeline_enabled,
|
|
34
32
|
heap_clean_after_gc_enabled: heap_clean_after_gc_enabled,
|
|
35
33
|
)
|
|
36
34
|
end
|
|
@@ -40,7 +38,6 @@ module Datadog
|
|
|
40
38
|
heap_samples_enabled: false,
|
|
41
39
|
heap_size_enabled: false,
|
|
42
40
|
heap_sample_every: 1,
|
|
43
|
-
timeline_enabled: false,
|
|
44
41
|
heap_clean_after_gc_enabled: true,
|
|
45
42
|
**options
|
|
46
43
|
)
|
|
@@ -49,7 +46,6 @@ module Datadog
|
|
|
49
46
|
heap_samples_enabled: heap_samples_enabled,
|
|
50
47
|
heap_size_enabled: heap_size_enabled,
|
|
51
48
|
heap_sample_every: heap_sample_every,
|
|
52
|
-
timeline_enabled: timeline_enabled,
|
|
53
49
|
heap_clean_after_gc_enabled: heap_clean_after_gc_enabled,
|
|
54
50
|
**options,
|
|
55
51
|
)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
require_relative 'scope'
|
|
4
4
|
require_relative 'symbol'
|
|
5
5
|
require_relative 'file_hash'
|
|
6
|
-
require_relative '../core/utils/
|
|
6
|
+
require_relative '../core/utils/enumerable_compat'
|
|
7
7
|
|
|
8
8
|
module Datadog
|
|
9
9
|
module SymbolDatabase
|
|
@@ -593,7 +593,7 @@ module Datadog
|
|
|
593
593
|
|
|
594
594
|
return [] if params.nil? || params.empty?
|
|
595
595
|
|
|
596
|
-
Core::Utils::
|
|
596
|
+
Core::Utils::EnumerableCompat.filter_map(params) do |param_type, param_name|
|
|
597
597
|
# Skip block parameters for MVP
|
|
598
598
|
next if param_type == :block
|
|
599
599
|
|
|
@@ -810,7 +810,7 @@ module Datadog
|
|
|
810
810
|
# @return [Scope] Scope object
|
|
811
811
|
def convert_node_to_scope(node)
|
|
812
812
|
# Build method scopes from collected method entries
|
|
813
|
-
method_scopes = Core::Utils::
|
|
813
|
+
method_scopes = Core::Utils::EnumerableCompat.filter_map(node[:methods]) do |method_info|
|
|
814
814
|
build_instance_method_scope(node[:mod], method_info[:name], method_info[:method])
|
|
815
815
|
end
|
|
816
816
|
|
|
@@ -36,7 +36,10 @@ module Datadog
|
|
|
36
36
|
|
|
37
37
|
def on_start(span, _event, _id, payload)
|
|
38
38
|
channel = payload[:broadcasting] # Channel has high cardinality
|
|
39
|
-
|
|
39
|
+
if configuration[:service_name]
|
|
40
|
+
span.service = configuration[:service_name]
|
|
41
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
42
|
+
end
|
|
40
43
|
span.type = span_type
|
|
41
44
|
|
|
42
45
|
# Set analytics sample rate
|
|
@@ -37,7 +37,10 @@ module Datadog
|
|
|
37
37
|
channel_class = payload[:channel_class]
|
|
38
38
|
action = payload[:action]
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
if configuration[:service_name]
|
|
41
|
+
span.service = configuration[:service_name]
|
|
42
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
43
|
+
end
|
|
41
44
|
span.resource = "#{channel_class}##{action}"
|
|
42
45
|
span.type = span_type
|
|
43
46
|
|
|
@@ -36,7 +36,10 @@ module Datadog
|
|
|
36
36
|
def on_start(span, _event, _id, payload)
|
|
37
37
|
channel_class = payload[:channel_class]
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
if configuration[:service_name]
|
|
40
|
+
span.service = configuration[:service_name]
|
|
41
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
42
|
+
end
|
|
40
43
|
span.resource = channel_class
|
|
41
44
|
span.type = span_type
|
|
42
45
|
|
|
@@ -57,7 +57,10 @@ module Datadog
|
|
|
57
57
|
configuration = Datadog.configuration.tracing[:action_cable]
|
|
58
58
|
|
|
59
59
|
Tracing.trace("action_cable.#{hook}") do |span|
|
|
60
|
-
|
|
60
|
+
if configuration[:service_name]
|
|
61
|
+
span.service = configuration[:service_name]
|
|
62
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
63
|
+
end
|
|
61
64
|
span.resource = "#{channel.class}##{hook}"
|
|
62
65
|
span.type = Tracing::Metadata::Ext::AppTypes::TYPE_WEB
|
|
63
66
|
|
|
@@ -31,7 +31,10 @@ module Datadog
|
|
|
31
31
|
super
|
|
32
32
|
|
|
33
33
|
span.type = span_type
|
|
34
|
-
|
|
34
|
+
if configuration[:service_name]
|
|
35
|
+
span.service = configuration[:service_name]
|
|
36
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
37
|
+
end
|
|
35
38
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
36
39
|
|
|
37
40
|
# Set analytics sample rate
|
|
@@ -42,6 +42,7 @@ module Datadog
|
|
|
42
42
|
|
|
43
43
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
44
44
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_CONTROLLER)
|
|
45
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
45
46
|
rescue => e
|
|
46
47
|
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
47
48
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
@@ -28,7 +28,10 @@ module Datadog
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def on_start(span, _event, _id, payload)
|
|
31
|
-
|
|
31
|
+
if configuration[:service_name]
|
|
32
|
+
span.service = configuration[:service_name]
|
|
33
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
34
|
+
end
|
|
32
35
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_TEMPLATE
|
|
33
36
|
|
|
34
37
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
@@ -28,7 +28,10 @@ module Datadog
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def on_start(span, _event, _id, payload)
|
|
31
|
-
|
|
31
|
+
if configuration[:service_name]
|
|
32
|
+
span.service = configuration[:service_name]
|
|
33
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
34
|
+
end
|
|
32
35
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_TEMPLATE
|
|
33
36
|
|
|
34
37
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
@@ -28,7 +28,10 @@ module Datadog
|
|
|
28
28
|
|
|
29
29
|
def on_start(span, event, _id, payload)
|
|
30
30
|
span.name = span_name
|
|
31
|
-
|
|
31
|
+
if configuration[:service_name]
|
|
32
|
+
span.service = configuration[:service_name]
|
|
33
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
34
|
+
end
|
|
32
35
|
span.resource = payload[:job].class.name
|
|
33
36
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_DISCARD)
|
|
34
37
|
|
|
@@ -28,7 +28,10 @@ module Datadog
|
|
|
28
28
|
|
|
29
29
|
def on_start(span, event, _id, payload)
|
|
30
30
|
span.name = span_name
|
|
31
|
-
|
|
31
|
+
if configuration[:service_name]
|
|
32
|
+
span.service = configuration[:service_name]
|
|
33
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
34
|
+
end
|
|
32
35
|
span.resource = payload[:job].class.name
|
|
33
36
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ENQUEUE)
|
|
34
37
|
|
|
@@ -28,7 +28,10 @@ module Datadog
|
|
|
28
28
|
|
|
29
29
|
def on_start(span, event, _id, payload)
|
|
30
30
|
span.name = span_name
|
|
31
|
-
|
|
31
|
+
if configuration[:service_name]
|
|
32
|
+
span.service = configuration[:service_name]
|
|
33
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
34
|
+
end
|
|
32
35
|
span.resource = payload[:job].class.name
|
|
33
36
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ENQUEUE_AT)
|
|
34
37
|
|
|
@@ -28,7 +28,10 @@ module Datadog
|
|
|
28
28
|
|
|
29
29
|
def on_start(span, event, _id, payload)
|
|
30
30
|
span.name = span_name
|
|
31
|
-
|
|
31
|
+
if configuration[:service_name]
|
|
32
|
+
span.service = configuration[:service_name]
|
|
33
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
34
|
+
end
|
|
32
35
|
span.resource = payload[:job].class.name
|
|
33
36
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ENQUEUE_RETRY)
|
|
34
37
|
|
|
@@ -28,7 +28,10 @@ module Datadog
|
|
|
28
28
|
|
|
29
29
|
def on_start(span, event, _id, payload)
|
|
30
30
|
span.name = span_name
|
|
31
|
-
|
|
31
|
+
if configuration[:service_name]
|
|
32
|
+
span.service = configuration[:service_name]
|
|
33
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
34
|
+
end
|
|
32
35
|
span.resource = payload[:job].class.name
|
|
33
36
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_PERFORM)
|
|
34
37
|
|
|
@@ -28,7 +28,10 @@ module Datadog
|
|
|
28
28
|
|
|
29
29
|
def on_start(span, event, _id, payload)
|
|
30
30
|
span.name = span_name
|
|
31
|
-
|
|
31
|
+
if configuration[:service_name]
|
|
32
|
+
span.service = configuration[:service_name]
|
|
33
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
34
|
+
end
|
|
32
35
|
span.resource = payload[:job].class.name
|
|
33
36
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_RETRY_STOPPED)
|
|
34
37
|
|
|
@@ -77,6 +77,7 @@ module Datadog
|
|
|
77
77
|
mapping = MAPPING.fetch(event)
|
|
78
78
|
|
|
79
79
|
span.service = configuration[:cache_service]
|
|
80
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
80
81
|
span.resource = mapping[:resource]
|
|
81
82
|
|
|
82
83
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
@@ -51,6 +51,7 @@ module Datadog
|
|
|
51
51
|
service: Datadog.configuration.tracing[:active_support][:cache_service],
|
|
52
52
|
resource: action
|
|
53
53
|
) do |span|
|
|
54
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
54
55
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
55
56
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_CACHE)
|
|
56
57
|
|
|
@@ -32,6 +32,7 @@ module Datadog
|
|
|
32
32
|
# rubocop:disable Metrics/MethodLength
|
|
33
33
|
def annotate!(span, context)
|
|
34
34
|
span.service = configuration[:service_name]
|
|
35
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
35
36
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
|
|
36
37
|
span.name = Ext::SPAN_COMMAND
|
|
37
38
|
span.resource = context.safely(:resource)
|
|
@@ -22,6 +22,7 @@ module Datadog
|
|
|
22
22
|
Tracing.trace(Ext::SPAN_COMMAND) do |span|
|
|
23
23
|
span.resource = op.to_s.upcase
|
|
24
24
|
span.service = datadog_configuration[:service_name]
|
|
25
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
25
26
|
span.type = Ext::SPAN_TYPE_COMMAND
|
|
26
27
|
|
|
27
28
|
if datadog_configuration[:peer_service]
|
|
@@ -21,6 +21,7 @@ module Datadog
|
|
|
21
21
|
resource: job_name(job),
|
|
22
22
|
on_error: configuration[:on_error]
|
|
23
23
|
) do |span|
|
|
24
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
24
25
|
set_sample_rate(span)
|
|
25
26
|
|
|
26
27
|
# Measure service stats
|
|
@@ -51,6 +52,7 @@ module Datadog
|
|
|
51
52
|
service: configuration[:client_service_name],
|
|
52
53
|
resource: job_name(job)
|
|
53
54
|
) do |span|
|
|
55
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
54
56
|
set_sample_rate(span)
|
|
55
57
|
|
|
56
58
|
# Measure service stats
|
|
@@ -11,6 +11,7 @@ module Datadog
|
|
|
11
11
|
configuration = Datadog.configuration.tracing[:delayed_job]
|
|
12
12
|
|
|
13
13
|
Datadog::Tracing.trace(Ext::SPAN_RESERVE_JOB, service: configuration[:service_name]) do |span|
|
|
14
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
14
15
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
15
16
|
|
|
16
17
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -55,6 +55,7 @@ module Datadog
|
|
|
55
55
|
service: service,
|
|
56
56
|
on_error: on_error
|
|
57
57
|
) do |span|
|
|
58
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
58
59
|
connection = transport.connections.first
|
|
59
60
|
host = connection.host[:host] if connection
|
|
60
61
|
port = connection.host[:port] if connection
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative '../utils/quantization/
|
|
3
|
+
require_relative '../utils/quantization/hash_formatter'
|
|
4
4
|
|
|
5
5
|
module Datadog
|
|
6
6
|
module Tracing
|
|
@@ -40,7 +40,7 @@ module Datadog
|
|
|
40
40
|
# Parse each statement and quantize them.
|
|
41
41
|
statements.collect do |string|
|
|
42
42
|
reserialize_json(string, options[:placeholder]) do |obj|
|
|
43
|
-
Contrib::Utils::Quantization::
|
|
43
|
+
Contrib::Utils::Quantization::HashFormatter.format(obj, options)
|
|
44
44
|
end
|
|
45
45
|
end.join("\n")
|
|
46
46
|
end
|
|
@@ -133,6 +133,7 @@ module Datadog
|
|
|
133
133
|
|
|
134
134
|
def datadog_tag_request
|
|
135
135
|
span = @datadog_span
|
|
136
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
136
137
|
method = Ext::NOT_APPLICABLE_METHOD
|
|
137
138
|
method = @datadog_method.to_s if instance_variable_defined?(:@datadog_method) && !@datadog_method.nil?
|
|
138
139
|
span.resource = method
|
|
@@ -64,6 +64,7 @@ module Datadog
|
|
|
64
64
|
)
|
|
65
65
|
@datadog_multi_trace_digest = Tracing.active_trace.to_digest
|
|
66
66
|
|
|
67
|
+
@datadog_multi_span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
67
68
|
@datadog_multi_span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
68
69
|
@datadog_multi_span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_MULTI_REQUEST)
|
|
69
70
|
|
|
@@ -119,6 +119,7 @@ module Datadog
|
|
|
119
119
|
def annotate!(span, datum)
|
|
120
120
|
span.resource = datum[:method].to_s.upcase
|
|
121
121
|
span.service = service_name(datum[:host], @options)
|
|
122
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
122
123
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
|
|
123
124
|
|
|
124
125
|
if @options[:peer_service]
|
|
@@ -62,6 +62,9 @@ module Datadog
|
|
|
62
62
|
|
|
63
63
|
# Value of tag from which peer.service value was remapped from
|
|
64
64
|
TAG_PEER_SERVICE_REMAP = '_dd.peer.service.remapped_from'
|
|
65
|
+
|
|
66
|
+
# Set equal to the global service when contrib span.service is overriden
|
|
67
|
+
TAG_BASE_SERVICE = Tracing::Metadata::Ext::TAG_BASE_SERVICE
|
|
65
68
|
end
|
|
66
69
|
end
|
|
67
70
|
end
|
|
@@ -47,6 +47,7 @@ module Datadog
|
|
|
47
47
|
def annotate!(span, env, options)
|
|
48
48
|
span.resource = resource_name(env)
|
|
49
49
|
span.service = service_name(env[:url].host, options)
|
|
50
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
50
51
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
|
|
51
52
|
|
|
52
53
|
if options[:peer_service]
|
|
@@ -62,6 +62,7 @@ module Datadog
|
|
|
62
62
|
|
|
63
63
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
64
64
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ENDPOINT_RUN)
|
|
65
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
65
66
|
|
|
66
67
|
if (grape_route = env['grape.routing_args']) && grape_route[:route_info]
|
|
67
68
|
trace.set_tag(
|
|
@@ -162,6 +163,7 @@ module Datadog
|
|
|
162
163
|
|
|
163
164
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
164
165
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ENDPOINT_RENDER)
|
|
166
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
165
167
|
|
|
166
168
|
Thread.current[KEY_RENDER] = true
|
|
167
169
|
rescue => e
|
|
@@ -213,6 +215,7 @@ module Datadog
|
|
|
213
215
|
begin
|
|
214
216
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
215
217
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ENDPOINT_RUN_FILTERS)
|
|
218
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
216
219
|
|
|
217
220
|
# Set analytics sample rate
|
|
218
221
|
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
@@ -214,6 +214,7 @@ module Datadog
|
|
|
214
214
|
resource: resource,
|
|
215
215
|
service: @service_name
|
|
216
216
|
) do |span|
|
|
217
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
217
218
|
if Contrib::Analytics.enabled?(@analytics_enabled)
|
|
218
219
|
Contrib::Analytics.set_sample_rate(span, @analytics_sample_rate)
|
|
219
220
|
end
|
|
@@ -22,6 +22,7 @@ module Datadog
|
|
|
22
22
|
service: configuration[:service_name],
|
|
23
23
|
type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND
|
|
24
24
|
) do |span_op, trace_op|
|
|
25
|
+
span_op.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
25
26
|
span_op.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
26
27
|
span_op.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ACTION)
|
|
27
28
|
|
|
@@ -24,6 +24,7 @@ module Datadog
|
|
|
24
24
|
resource: action_klass.to_s,
|
|
25
25
|
type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND
|
|
26
26
|
) do |span_op, _trace_op|
|
|
27
|
+
span_op.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
27
28
|
span_op.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
28
29
|
span_op.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_RENDER)
|
|
29
30
|
|
|
@@ -17,6 +17,7 @@ module Datadog
|
|
|
17
17
|
service: configuration[:service_name],
|
|
18
18
|
type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND
|
|
19
19
|
) do |span_op, trace_op|
|
|
20
|
+
span_op.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
20
21
|
span_op.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
21
22
|
span_op.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTING)
|
|
22
23
|
|
|
@@ -32,6 +32,7 @@ module Datadog
|
|
|
32
32
|
|
|
33
33
|
Tracing.trace(Ext::SPAN_REQUEST) do |span, trace|
|
|
34
34
|
span.service = service_name(host, request_options, client_config)
|
|
35
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
35
36
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
|
|
36
37
|
span.resource = req.method
|
|
37
38
|
|
|
@@ -28,6 +28,7 @@ module Datadog
|
|
|
28
28
|
Tracing.trace(Ext::SPAN_REQUEST) do |span, trace|
|
|
29
29
|
begin
|
|
30
30
|
span.service = service_name(host, request_options, client_config)
|
|
31
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
31
32
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
|
|
32
33
|
|
|
33
34
|
if Tracing::Distributed::PropagationPolicy.enabled?(
|
|
@@ -28,6 +28,7 @@ module Datadog
|
|
|
28
28
|
Tracing.trace(Ext::SPAN_REQUEST) do |span, trace|
|
|
29
29
|
begin
|
|
30
30
|
span.service = service_name(host, request_options, client_config)
|
|
31
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
31
32
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
|
|
32
33
|
|
|
33
34
|
if Tracing::Distributed::PropagationPolicy.enabled?(
|
|
@@ -30,6 +30,7 @@ module Datadog
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def on_start(span, _event, _id, payload)
|
|
33
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
33
34
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
34
35
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_MESSAGING_SYSTEM)
|
|
35
36
|
|