datadog 2.33.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 +99 -1
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +20 -0
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +2 -15
- data/ext/datadog_profiling_native_extension/macos_sampler_thread.h +55 -0
- 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/component.rb +4 -1
- data/lib/datadog/appsec/compressed_json.rb +2 -2
- data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +3 -3
- data/lib/datadog/appsec/contrib/rack/ext.rb +1 -1
- 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/components.rb +8 -1
- data/lib/datadog/core/configuration/settings.rb +16 -7
- data/lib/datadog/core/configuration/supported_configurations.rb +10 -0
- data/lib/datadog/core/environment/ext.rb +4 -0
- data/lib/datadog/core/environment/identity.rb +15 -1
- data/lib/datadog/core/environment/process.rb +50 -27
- data/lib/datadog/core/remote/client/capabilities.rb +11 -2
- data/lib/datadog/core/remote/transport/http/config.rb +5 -5
- data/lib/datadog/core/telemetry/request.rb +0 -2
- data/lib/datadog/core/transport/response.rb +1 -1
- data/lib/datadog/core/utils/{base64.rb → base64_codec.rb} +3 -2
- data/lib/datadog/core/utils/{array.rb → enumerable_compat.rb} +2 -2
- data/lib/datadog/core/utils/hash.rb +0 -23
- data/lib/datadog/core/utils/spawn_monkey_patch.rb +46 -16
- data/lib/datadog/data_streams/pathway_context.rb +3 -3
- data/lib/datadog/di/code_tracker.rb +43 -22
- data/lib/datadog/di/contrib/active_record.rb +6 -2
- data/lib/datadog/di/instrumenter.rb +24 -4
- data/lib/datadog/di/probe_notification_builder.rb +1 -1
- data/lib/datadog/di/remote.rb +4 -4
- data/lib/datadog/di/serializer.rb +5 -5
- data/lib/datadog/di/utils.rb +42 -14
- data/lib/datadog/opentelemetry/configuration/settings.rb +65 -0
- data/lib/datadog/opentelemetry/ext.rb +9 -0
- data/lib/datadog/opentelemetry/logs.rb +98 -0
- data/lib/datadog/opentelemetry/metrics.rb +10 -46
- data/lib/datadog/opentelemetry/sdk/configurator.rb +40 -0
- data/lib/datadog/opentelemetry/sdk/logs_exporter.rb +37 -0
- data/lib/datadog/opentelemetry/signal_configuration.rb +53 -0
- data/lib/datadog/opentelemetry.rb +1 -0
- 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/component.rb +409 -0
- data/lib/datadog/symbol_database/configuration.rb +2 -2
- data/lib/datadog/symbol_database/extractor.rb +32 -4
- data/lib/datadog/symbol_database/remote.rb +175 -0
- data/lib/datadog/symbol_database/scope_batcher.rb +8 -0
- data/lib/datadog/symbol_database/service_version.rb +11 -2
- data/lib/datadog/symbol_database/symbol.rb +6 -3
- data/lib/datadog/symbol_database/uploader.rb +62 -8
- 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_pack/action_dispatch/instrumentation.rb +8 -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 -4
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +1 -4
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +1 -4
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +1 -5
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +1 -5
- 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 -5
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +2 -2
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +1 -5
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +1 -8
- data/lib/datadog/tracing/contrib/excon/middleware.rb +1 -5
- data/lib/datadog/tracing/contrib/ext.rb +3 -1
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +1 -5
- 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 -5
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -5
- 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 -5
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +1 -5
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +1 -5
- 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 -5
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +1 -5
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +1 -5
- data/lib/datadog/tracing/contrib/opensearch/quantize.rb +2 -2
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +1 -5
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -5
- 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 -5
- 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/tags.rb +0 -5
- 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 -5
- 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/sequel/utils.rb +0 -5
- 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 -5
- data/lib/datadog/tracing/contrib/utils/quantization/{hash.rb → hash_formatter.rb} +1 -1
- data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +0 -13
- data/lib/datadog/tracing/distributed/trace_context.rb +0 -28
- data/lib/datadog/tracing/metadata/ext.rb +10 -0
- data/lib/datadog/tracing/span_operation.rb +13 -0
- data/lib/datadog/tracing/trace_operation.rb +22 -0
- data/lib/datadog/tracing/tracer.rb +9 -0
- data/lib/datadog/tracing/transport/traces.rb +2 -2
- data/lib/datadog/version.rb +1 -1
- metadata +16 -10
|
@@ -25,7 +25,10 @@ module Datadog
|
|
|
25
25
|
begin
|
|
26
26
|
request_method = request.request_method.to_s.upcase
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
if configuration[:service_name]
|
|
29
|
+
span.service = configuration[:service_name]
|
|
30
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
31
|
+
end
|
|
29
32
|
|
|
30
33
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_INBOUND
|
|
31
34
|
|
|
@@ -51,11 +51,6 @@ module Datadog
|
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
def set_common_tags(span, db)
|
|
54
|
-
# Tag original global service name if not used
|
|
55
|
-
if span.service != Datadog.configuration.service
|
|
56
|
-
span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
54
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
60
55
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_QUERY)
|
|
61
56
|
|
|
@@ -20,6 +20,7 @@ module Datadog
|
|
|
20
20
|
type: Tracing::Metadata::Ext::AppTypes::TYPE_WORKER,
|
|
21
21
|
on_error: @on_error
|
|
22
22
|
) do |span|
|
|
23
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
23
24
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_MESSAGING_SYSTEM)
|
|
24
25
|
|
|
25
26
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
@@ -24,6 +24,7 @@ module Datadog
|
|
|
24
24
|
resource = job_resource(job)
|
|
25
25
|
|
|
26
26
|
Datadog::Tracing.trace(Ext::SPAN_PUSH, service: @sidekiq_service) do |span, trace_op|
|
|
27
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
27
28
|
if Tracing::Distributed::PropagationPolicy.enabled?(
|
|
28
29
|
global_config: configuration,
|
|
29
30
|
trace: trace_op
|
|
@@ -13,6 +13,7 @@ module Datadog
|
|
|
13
13
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
14
14
|
|
|
15
15
|
Datadog::Tracing.trace(Ext::SPAN_HEARTBEAT, service: configuration[:service_name]) do |span|
|
|
16
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
16
17
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
17
18
|
|
|
18
19
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -38,6 +39,7 @@ module Datadog
|
|
|
38
39
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
39
40
|
|
|
40
41
|
Datadog::Tracing.trace(Ext::SPAN_HEARTBEAT, service: configuration[:service_name]) do |span|
|
|
42
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
41
43
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
42
44
|
|
|
43
45
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -13,6 +13,7 @@ module Datadog
|
|
|
13
13
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
14
14
|
|
|
15
15
|
Datadog::Tracing.trace(Ext::SPAN_JOB_FETCH, service: configuration[:service_name]) do |span|
|
|
16
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
16
17
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
17
18
|
|
|
18
19
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -11,6 +11,7 @@ module Datadog
|
|
|
11
11
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
12
12
|
|
|
13
13
|
Datadog::Tracing.trace(Ext::SPAN_REDIS_INFO, 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)
|
|
@@ -12,6 +12,7 @@ module Datadog
|
|
|
12
12
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
13
13
|
|
|
14
14
|
Datadog::Tracing.trace(Ext::SPAN_SCHEDULED_PUSH, service: configuration[:service_name]) do |span|
|
|
15
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
15
16
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
16
17
|
|
|
17
18
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -34,6 +35,7 @@ module Datadog
|
|
|
34
35
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
35
36
|
|
|
36
37
|
Datadog::Tracing.trace(Ext::SPAN_SCHEDULED_WAIT, service: configuration[:service_name]) do |span|
|
|
38
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
37
39
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
38
40
|
|
|
39
41
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -11,6 +11,7 @@ module Datadog
|
|
|
11
11
|
configuration = Datadog.configuration.tracing[:sidekiq]
|
|
12
12
|
|
|
13
13
|
Datadog::Tracing.trace(Ext::SPAN_STOP, 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)
|
|
@@ -4,7 +4,7 @@ require_relative '../../metadata/ext'
|
|
|
4
4
|
require_relative '../analytics'
|
|
5
5
|
require_relative 'ext'
|
|
6
6
|
require_relative 'utils'
|
|
7
|
-
require_relative '../utils/quantization/
|
|
7
|
+
require_relative '../utils/quantization/hash_formatter'
|
|
8
8
|
require_relative 'distributed/propagation'
|
|
9
9
|
|
|
10
10
|
module Datadog
|
|
@@ -36,6 +36,7 @@ module Datadog
|
|
|
36
36
|
type: Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER,
|
|
37
37
|
on_error: @on_error
|
|
38
38
|
) do |span|
|
|
39
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
39
40
|
span.resource = resource
|
|
40
41
|
|
|
41
42
|
span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT)
|
|
@@ -68,7 +69,7 @@ module Datadog
|
|
|
68
69
|
|
|
69
70
|
args = job['args']
|
|
70
71
|
if args && !args.empty?
|
|
71
|
-
span.set_tag(Ext::TAG_JOB_ARGS, Contrib::Utils::Quantization::
|
|
72
|
+
span.set_tag(Ext::TAG_JOB_ARGS, Contrib::Utils::Quantization::HashFormatter.format(args, (@quantize[:args] || {})))
|
|
72
73
|
end
|
|
73
74
|
|
|
74
75
|
yield
|
|
@@ -57,6 +57,7 @@ module Datadog
|
|
|
57
57
|
type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND,
|
|
58
58
|
resource: "#{request.request_method} #{datadog_route}",
|
|
59
59
|
) do |span, trace|
|
|
60
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
60
61
|
span.set_tag(Ext::TAG_APP_NAME, settings.name || settings.superclass.name)
|
|
61
62
|
span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route)
|
|
62
63
|
|
|
@@ -28,6 +28,7 @@ module Datadog
|
|
|
28
28
|
service: configuration[:service_name],
|
|
29
29
|
type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND
|
|
30
30
|
) do |span|
|
|
31
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
31
32
|
# this is kept nil until we set a correct one (either in the route or with a fallback in the ensure below)
|
|
32
33
|
# the nil signals that there's no good one yet and is also seen by profiler, when sampling the resource
|
|
33
34
|
span.resource = nil
|
|
@@ -22,6 +22,7 @@ module Datadog
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
Tracing.trace(Ext::SPAN_JOB, **trace_options) do |request_span|
|
|
25
|
+
request_span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
25
26
|
request_span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_MESSAGING_SYSTEM)
|
|
26
27
|
|
|
27
28
|
request_span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
@@ -86,6 +86,7 @@ module Datadog
|
|
|
86
86
|
|
|
87
87
|
def __with_instrumentation(name)
|
|
88
88
|
Datadog::Tracing.trace(name, service: datadog_configuration[:service_name]) do |span|
|
|
89
|
+
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
89
90
|
span.type = Datadog::Tracing::Metadata::Ext::AppTypes::TYPE_WORKER
|
|
90
91
|
span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
91
92
|
span.set_tag(Ext::TAG_QUEUE, to_s)
|
|
@@ -23,6 +23,7 @@ module Datadog
|
|
|
23
23
|
service = Datadog.configuration_for(self, :service_name) || datadog_configuration[:service_name]
|
|
24
24
|
|
|
25
25
|
Tracing.trace(Ext::SPAN_QUERY, service: service) do |span, trace_op|
|
|
26
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
26
27
|
span.resource = sql
|
|
27
28
|
span.type = Tracing::Metadata::Ext::SQL::TYPE
|
|
28
29
|
|
|
@@ -33,11 +34,6 @@ module Datadog
|
|
|
33
34
|
)
|
|
34
35
|
end
|
|
35
36
|
|
|
36
|
-
# Tag original global service name if not used
|
|
37
|
-
if span.service != Datadog.configuration.service
|
|
38
|
-
span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
37
|
span.set_tag(Contrib::Ext::DB::TAG_SYSTEM, Ext::TAG_SYSTEM)
|
|
42
38
|
span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
|
|
43
39
|
|
|
@@ -6,19 +6,6 @@ module Datadog
|
|
|
6
6
|
# Encodes and decodes distributed 'x-datadog-tags' tags for transport
|
|
7
7
|
# to and from external processes.
|
|
8
8
|
module DatadogTagsCodec
|
|
9
|
-
# Backport `Regexp::match?` because it is measurably the most performant
|
|
10
|
-
# way to check if a string matches a regular expression.
|
|
11
|
-
module RefineRegexp
|
|
12
|
-
unless Regexp.method_defined?(:match?)
|
|
13
|
-
refine ::Regexp do
|
|
14
|
-
def match?(*args)
|
|
15
|
-
!match(*args).nil?
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
using RefineRegexp
|
|
21
|
-
|
|
22
9
|
# ASCII characters 32-126, except `,`, `=`, and ` `. At least one character.
|
|
23
10
|
VALID_KEY_CHARS = /\A(?:(?![,= ])[\u0020-\u007E])+\Z/.freeze
|
|
24
11
|
# ASCII characters 32-126, except `,`. At least one character.
|
|
@@ -75,34 +75,6 @@ module Datadog
|
|
|
75
75
|
|
|
76
76
|
private
|
|
77
77
|
|
|
78
|
-
# Refinements to ensure newer rubies do not suffer performance impact
|
|
79
|
-
# by needing to use older APIs.
|
|
80
|
-
module Refine
|
|
81
|
-
# Backport `Regexp::match?` because it is measurably the most performant
|
|
82
|
-
# way to check if a string matches a regular expression.
|
|
83
|
-
unless Regexp.method_defined?(:match?)
|
|
84
|
-
refine ::Regexp do
|
|
85
|
-
def match?(*args)
|
|
86
|
-
!match(*args).nil?
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
unless String.method_defined?(:delete_prefix)
|
|
92
|
-
refine ::String do
|
|
93
|
-
def delete_prefix(prefix)
|
|
94
|
-
prefix = prefix.to_s
|
|
95
|
-
if rindex(prefix, 0)
|
|
96
|
-
self[prefix.length..-1]
|
|
97
|
-
else
|
|
98
|
-
dup
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
using Refine
|
|
105
|
-
|
|
106
78
|
# @see https://www.w3.org/TR/trace-context/#traceparent-header
|
|
107
79
|
def build_traceparent(digest)
|
|
108
80
|
build_traceparent_string(
|
|
@@ -33,6 +33,16 @@ module Datadog
|
|
|
33
33
|
|
|
34
34
|
TAG_APM_ENABLED = '_dd.apm.enabled'
|
|
35
35
|
|
|
36
|
+
# Set to the global service name when a span's service is overridden
|
|
37
|
+
TAG_BASE_SERVICE = '_dd.base_service'
|
|
38
|
+
|
|
39
|
+
# Set to the source of a span's service override: the component name for Datadog-instrumented spans
|
|
40
|
+
# (e.g. 'redis', 'pg'), or {SVC_SRC_MANUAL} for manually-instrumented spans
|
|
41
|
+
TAG_SVC_SRC = '_dd.svc_src'
|
|
42
|
+
|
|
43
|
+
# Value for {TAG_SVC_SRC} indicating that a span was manually instrumented via the Tracing API
|
|
44
|
+
SVC_SRC_MANUAL = 'm'
|
|
45
|
+
|
|
36
46
|
# Defines constants for trace analytics
|
|
37
47
|
# @public_api
|
|
38
48
|
module Analytics
|
|
@@ -270,6 +270,9 @@ module Datadog
|
|
|
270
270
|
# Stop timing
|
|
271
271
|
stop(end_time)
|
|
272
272
|
|
|
273
|
+
# Allow subscribers to enrich the span before it is finalized.
|
|
274
|
+
events.before_finish.publish(self)
|
|
275
|
+
|
|
273
276
|
# Build span
|
|
274
277
|
# Memoize for performance reasons
|
|
275
278
|
@span = build_span
|
|
@@ -400,12 +403,14 @@ module Datadog
|
|
|
400
403
|
:logger,
|
|
401
404
|
:after_finish,
|
|
402
405
|
:after_stop,
|
|
406
|
+
:before_finish,
|
|
403
407
|
:before_start
|
|
404
408
|
|
|
405
409
|
def initialize(logger: Datadog.logger)
|
|
406
410
|
@logger = logger
|
|
407
411
|
@after_finish = AfterFinish.new
|
|
408
412
|
@after_stop = AfterStop.new
|
|
413
|
+
@before_finish = BeforeFinish.new
|
|
409
414
|
@before_start = BeforeStart.new
|
|
410
415
|
end
|
|
411
416
|
|
|
@@ -429,6 +434,14 @@ module Datadog
|
|
|
429
434
|
end
|
|
430
435
|
end
|
|
431
436
|
|
|
437
|
+
# Triggered just before the span is finalized into a Span object.
|
|
438
|
+
# Subscribers can still mutate tags on the SpanOperation at this point.
|
|
439
|
+
class BeforeFinish < Tracing::Event
|
|
440
|
+
def initialize
|
|
441
|
+
super(:before_finish)
|
|
442
|
+
end
|
|
443
|
+
end
|
|
444
|
+
|
|
432
445
|
# Triggered just before the span is started.
|
|
433
446
|
class BeforeStart < Tracing::Event
|
|
434
447
|
def initialize
|
|
@@ -301,6 +301,11 @@ module Datadog
|
|
|
301
301
|
start_span(span_op)
|
|
302
302
|
end
|
|
303
303
|
|
|
304
|
+
# Before finish: allow enrichment before the span is finalized, publish events.
|
|
305
|
+
span_events.before_finish.subscribe do |span_op|
|
|
306
|
+
before_finish_span(span_op)
|
|
307
|
+
end
|
|
308
|
+
|
|
304
309
|
# After finish: deactivate the span, record, publish events.
|
|
305
310
|
span_events.after_finish.subscribe do |span, span_op|
|
|
306
311
|
finish_span(span, span_op, parent)
|
|
@@ -449,6 +454,7 @@ module Datadog
|
|
|
449
454
|
include Tracing::Events
|
|
450
455
|
|
|
451
456
|
attr_reader \
|
|
457
|
+
:span_before_finish,
|
|
452
458
|
:span_before_start,
|
|
453
459
|
:span_finished,
|
|
454
460
|
:trace_finished,
|
|
@@ -456,6 +462,7 @@ module Datadog
|
|
|
456
462
|
:trace_resource_change
|
|
457
463
|
|
|
458
464
|
def initialize
|
|
465
|
+
@span_before_finish = SpanBeforeFinish.new
|
|
459
466
|
@span_before_start = SpanBeforeStart.new
|
|
460
467
|
@span_finished = SpanFinished.new
|
|
461
468
|
@trace_finished = TraceFinished.new
|
|
@@ -463,6 +470,14 @@ module Datadog
|
|
|
463
470
|
@trace_resource_change = TraceResourceChange.new
|
|
464
471
|
end
|
|
465
472
|
|
|
473
|
+
# Triggered just before a span is finalized, mirroring SpanOperation::Events::BeforeFinish.
|
|
474
|
+
# Subscribers can still mutate tags on the SpanOperation at this point.
|
|
475
|
+
class SpanBeforeFinish < Tracing::Event
|
|
476
|
+
def initialize
|
|
477
|
+
super(:span_before_finish)
|
|
478
|
+
end
|
|
479
|
+
end
|
|
480
|
+
|
|
466
481
|
# Triggered before a span starts.
|
|
467
482
|
class SpanBeforeStart < Tracing::Event
|
|
468
483
|
def initialize
|
|
@@ -546,6 +561,13 @@ module Datadog
|
|
|
546
561
|
logger.debug { "Error starting span on trace: #{e.class}: #{e.message} Backtrace: #{e.backtrace.first(3)}" }
|
|
547
562
|
end
|
|
548
563
|
|
|
564
|
+
def before_finish_span(span_op)
|
|
565
|
+
# Publish :span_before_finish event
|
|
566
|
+
events.span_before_finish.publish(span_op, self)
|
|
567
|
+
rescue => e
|
|
568
|
+
logger.debug { "Error in before_finish_span on trace: #{e.class}: #{e.message} Backtrace: #{e.backtrace.first(3)}" }
|
|
569
|
+
end
|
|
570
|
+
|
|
549
571
|
# For traces with automatic context management (auto_finish),
|
|
550
572
|
# when the local root span finishes, the trace also finishes.
|
|
551
573
|
# The trace cannot receive new spans after finished.
|
|
@@ -417,6 +417,15 @@ module Datadog
|
|
|
417
417
|
event_span_op.service ||= @default_service
|
|
418
418
|
end
|
|
419
419
|
|
|
420
|
+
events.span_before_finish.subscribe do |event_span_op, _event_trace_op|
|
|
421
|
+
if event_span_op.service && event_span_op.service != @default_service
|
|
422
|
+
event_span_op.set_tag(Tracing::Metadata::Ext::TAG_BASE_SERVICE, @default_service)
|
|
423
|
+
event_span_op.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Tracing::Metadata::Ext::SVC_SRC_MANUAL) unless event_span_op.get_tag(Tracing::Metadata::Ext::TAG_SVC_SRC)
|
|
424
|
+
else
|
|
425
|
+
event_span_op.send(:meta).delete(Tracing::Metadata::Ext::TAG_SVC_SRC)
|
|
426
|
+
end
|
|
427
|
+
end
|
|
428
|
+
|
|
420
429
|
events.trace_propagated.subscribe do |event_trace_op|
|
|
421
430
|
sample_trace(event_trace_op)
|
|
422
431
|
end
|
|
@@ -4,7 +4,7 @@ require_relative '../../core/chunker'
|
|
|
4
4
|
require_relative '../../core/transport/parcel'
|
|
5
5
|
require_relative '../../core/transport/request'
|
|
6
6
|
require_relative '../../core/transport/transport'
|
|
7
|
-
require_relative '../../core/utils/
|
|
7
|
+
require_relative '../../core/utils/enumerable_compat'
|
|
8
8
|
require_relative 'http/client'
|
|
9
9
|
require_relative 'serializable_trace'
|
|
10
10
|
require_relative 'trace_formatter'
|
|
@@ -62,7 +62,7 @@ module Datadog
|
|
|
62
62
|
# @return [Enumerable[Array[Bytes,Integer]]] list of encoded chunks: each containing a byte array and
|
|
63
63
|
# number of traces
|
|
64
64
|
def encode_in_chunks(traces)
|
|
65
|
-
encoded_traces = Core::Utils::
|
|
65
|
+
encoded_traces = Core::Utils::EnumerableCompat.filter_map(traces) do |trace|
|
|
66
66
|
encode_one(trace)
|
|
67
67
|
end
|
|
68
68
|
|
data/lib/datadog/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: datadog
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.35.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Datadog, Inc.
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: msgpack
|
|
@@ -153,6 +152,7 @@ files:
|
|
|
153
152
|
- ext/datadog_profiling_native_extension/http_transport.c
|
|
154
153
|
- ext/datadog_profiling_native_extension/libdatadog_helpers.c
|
|
155
154
|
- ext/datadog_profiling_native_extension/libdatadog_helpers.h
|
|
155
|
+
- ext/datadog_profiling_native_extension/macos_sampler_thread.h
|
|
156
156
|
- ext/datadog_profiling_native_extension/native_extension_helpers.rb
|
|
157
157
|
- ext/datadog_profiling_native_extension/private_vm_api_access.c
|
|
158
158
|
- ext/datadog_profiling_native_extension/private_vm_api_access.h
|
|
@@ -295,6 +295,7 @@ files:
|
|
|
295
295
|
- lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb
|
|
296
296
|
- lib/datadog/appsec/contrib/sinatra/request_middleware.rb
|
|
297
297
|
- lib/datadog/appsec/counter_sampler.rb
|
|
298
|
+
- lib/datadog/appsec/default_header_tags.rb
|
|
298
299
|
- lib/datadog/appsec/event.rb
|
|
299
300
|
- lib/datadog/appsec/ext.rb
|
|
300
301
|
- lib/datadog/appsec/extensions.rb
|
|
@@ -468,10 +469,10 @@ files:
|
|
|
468
469
|
- lib/datadog/core/transport/response.rb
|
|
469
470
|
- lib/datadog/core/transport/transport.rb
|
|
470
471
|
- lib/datadog/core/utils.rb
|
|
471
|
-
- lib/datadog/core/utils/array.rb
|
|
472
472
|
- lib/datadog/core/utils/at_fork_monkey_patch.rb
|
|
473
|
-
- lib/datadog/core/utils/
|
|
473
|
+
- lib/datadog/core/utils/base64_codec.rb
|
|
474
474
|
- lib/datadog/core/utils/duration.rb
|
|
475
|
+
- lib/datadog/core/utils/enumerable_compat.rb
|
|
475
476
|
- lib/datadog/core/utils/fnv.rb
|
|
476
477
|
- lib/datadog/core/utils/forking.rb
|
|
477
478
|
- lib/datadog/core/utils/hash.rb
|
|
@@ -582,13 +583,17 @@ files:
|
|
|
582
583
|
- lib/datadog/opentelemetry/api/context.rb
|
|
583
584
|
- lib/datadog/opentelemetry/api/trace/span.rb
|
|
584
585
|
- lib/datadog/opentelemetry/configuration/settings.rb
|
|
586
|
+
- lib/datadog/opentelemetry/ext.rb
|
|
587
|
+
- lib/datadog/opentelemetry/logs.rb
|
|
585
588
|
- lib/datadog/opentelemetry/metrics.rb
|
|
586
589
|
- lib/datadog/opentelemetry/sdk/configurator.rb
|
|
587
590
|
- lib/datadog/opentelemetry/sdk/id_generator.rb
|
|
591
|
+
- lib/datadog/opentelemetry/sdk/logs_exporter.rb
|
|
588
592
|
- lib/datadog/opentelemetry/sdk/metrics_exporter.rb
|
|
589
593
|
- lib/datadog/opentelemetry/sdk/propagator.rb
|
|
590
594
|
- lib/datadog/opentelemetry/sdk/span_processor.rb
|
|
591
595
|
- lib/datadog/opentelemetry/sdk/trace/span.rb
|
|
596
|
+
- lib/datadog/opentelemetry/signal_configuration.rb
|
|
592
597
|
- lib/datadog/opentelemetry/trace.rb
|
|
593
598
|
- lib/datadog/profiling.rb
|
|
594
599
|
- lib/datadog/profiling/collectors/code_provenance.rb
|
|
@@ -619,10 +624,12 @@ files:
|
|
|
619
624
|
- lib/datadog/profiling/tasks/setup.rb
|
|
620
625
|
- lib/datadog/single_step_instrument.rb
|
|
621
626
|
- lib/datadog/symbol_database.rb
|
|
627
|
+
- lib/datadog/symbol_database/component.rb
|
|
622
628
|
- lib/datadog/symbol_database/configuration.rb
|
|
623
629
|
- lib/datadog/symbol_database/extractor.rb
|
|
624
630
|
- lib/datadog/symbol_database/file_hash.rb
|
|
625
631
|
- lib/datadog/symbol_database/logger.rb
|
|
632
|
+
- lib/datadog/symbol_database/remote.rb
|
|
626
633
|
- lib/datadog/symbol_database/scope.rb
|
|
627
634
|
- lib/datadog/symbol_database/scope_batcher.rb
|
|
628
635
|
- lib/datadog/symbol_database/service_version.rb
|
|
@@ -1045,7 +1052,7 @@ files:
|
|
|
1045
1052
|
- lib/datadog/tracing/contrib/trilogy/integration.rb
|
|
1046
1053
|
- lib/datadog/tracing/contrib/trilogy/patcher.rb
|
|
1047
1054
|
- lib/datadog/tracing/contrib/utils/database.rb
|
|
1048
|
-
- lib/datadog/tracing/contrib/utils/quantization/
|
|
1055
|
+
- lib/datadog/tracing/contrib/utils/quantization/hash_formatter.rb
|
|
1049
1056
|
- lib/datadog/tracing/contrib/utils/quantization/http.rb
|
|
1050
1057
|
- lib/datadog/tracing/contrib/waterdrop.rb
|
|
1051
1058
|
- lib/datadog/tracing/contrib/waterdrop/configuration/settings.rb
|
|
@@ -1130,8 +1137,8 @@ licenses:
|
|
|
1130
1137
|
- Apache-2.0
|
|
1131
1138
|
metadata:
|
|
1132
1139
|
allowed_push_host: https://rubygems.org
|
|
1133
|
-
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.
|
|
1134
|
-
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.
|
|
1140
|
+
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.35.0/CHANGELOG.md
|
|
1141
|
+
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.35.0
|
|
1135
1142
|
post_install_message: 'JRuby support in the datadog gem is deprecated. Details: https://dtdg.co/jruby-deprecation'
|
|
1136
1143
|
rdoc_options: []
|
|
1137
1144
|
require_paths:
|
|
@@ -1150,8 +1157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
1150
1157
|
- !ruby/object:Gem::Version
|
|
1151
1158
|
version: 2.0.0
|
|
1152
1159
|
requirements: []
|
|
1153
|
-
rubygems_version:
|
|
1154
|
-
signing_key:
|
|
1160
|
+
rubygems_version: 4.0.3
|
|
1155
1161
|
specification_version: 4
|
|
1156
1162
|
summary: Datadog tracing code for your Ruby applications
|
|
1157
1163
|
test_files: []
|