datadog 2.39.0 → 2.47.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 +269 -44
- data/README.md +3 -0
- data/ext/datadog_profiling_native_extension/NativeExtensionDesign.md +12 -24
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +256 -193
- data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -5
- data/ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.c +0 -2
- data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +19 -20
- data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.h +5 -1
- data/ext/datadog_profiling_native_extension/collectors_stack.c +267 -171
- data/ext/datadog_profiling_native_extension/collectors_stack.h +17 -3
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +307 -217
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +10 -5
- data/ext/datadog_profiling_native_extension/crashtracking_runtime_stacks.c +5 -4
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +19 -11
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +7 -10
- data/ext/datadog_profiling_native_extension/extconf.rb +67 -99
- data/ext/datadog_profiling_native_extension/heap_recorder.c +353 -257
- data/ext/datadog_profiling_native_extension/heap_recorder.h +50 -31
- data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +3 -27
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +853 -496
- data/ext/datadog_profiling_native_extension/private_vm_api_access.h +42 -15
- data/ext/datadog_profiling_native_extension/profiling.c +30 -23
- data/ext/datadog_profiling_native_extension/ruby_helpers.c +4 -80
- data/ext/datadog_profiling_native_extension/ruby_helpers.h +4 -7
- data/ext/datadog_profiling_native_extension/setup_signal_handler.c +0 -2
- data/ext/datadog_profiling_native_extension/stack_recorder.c +116 -89
- data/ext/datadog_profiling_native_extension/stack_recorder.h +12 -5
- data/ext/datadog_profiling_native_extension/time_helpers.c +2 -4
- data/ext/datadog_profiling_native_extension/time_helpers.h +15 -15
- data/ext/libdatadog_api/datadog_ruby_common.c +19 -11
- data/ext/libdatadog_api/datadog_ruby_common.h +7 -10
- data/ext/libdatadog_api/di.c +43 -3
- data/ext/libdatadog_api/extconf.rb +6 -1
- data/ext/libdatadog_api/feature_flags.c +8 -0
- data/ext/libdatadog_api/init.c +9 -1
- data/ext/libdatadog_api/otel_thread_context.c +274 -0
- data/ext/libdatadog_api/otel_thread_context.h +5 -0
- data/ext/libdatadog_api/process_discovery.c +15 -1
- data/ext/libdatadog_api/trace_exporter.c +2078 -0
- data/ext/libdatadog_api/trace_exporter.h +5 -0
- data/ext/libdatadog_extconf_helpers.rb +14 -9
- data/lib/datadog/ai_guard/component.rb +17 -8
- data/lib/datadog/ai_guard/configuration/ext.rb +2 -0
- data/lib/datadog/ai_guard/configuration.rb +13 -0
- data/lib/datadog/ai_guard/contrib/ruby_llm/chat_instrumentation.rb +48 -55
- data/lib/datadog/ai_guard/contrib/ruby_llm/integration.rb +1 -1
- data/lib/datadog/ai_guard/contrib/ruby_llm/message_adapter.rb +76 -0
- data/lib/datadog/ai_guard/contrib/ruby_llm/patcher.rb +1 -0
- data/lib/datadog/ai_guard/contrib/ruby_llm/redaction_change_set.rb +135 -0
- data/lib/datadog/ai_guard/evaluation/client.rb +50 -0
- data/lib/datadog/ai_guard/evaluation/content_part.rb +12 -0
- data/lib/datadog/ai_guard/evaluation/message.rb +25 -7
- data/lib/datadog/ai_guard/evaluation/message_builder.rb +31 -0
- data/lib/datadog/ai_guard/evaluation/no_op_result.rb +6 -6
- data/lib/datadog/ai_guard/evaluation/outcome.rb +24 -0
- data/lib/datadog/ai_guard/evaluation/request.rb +8 -64
- data/lib/datadog/ai_guard/evaluation/response.rb +33 -0
- data/lib/datadog/ai_guard/evaluation/result.rb +11 -18
- data/lib/datadog/ai_guard/evaluation/tool_call.rb +15 -2
- data/lib/datadog/ai_guard/evaluation.rb +36 -14
- data/lib/datadog/ai_guard/ext.rb +4 -1
- data/lib/datadog/ai_guard/{api_client.rb → http_client.rb} +7 -5
- data/lib/datadog/ai_guard/metrics/telemetry.rb +43 -0
- data/lib/datadog/ai_guard/redaction/replacements.rb +97 -0
- data/lib/datadog/ai_guard/redaction/result.rb +29 -0
- data/lib/datadog/ai_guard/redaction.rb +80 -0
- data/lib/datadog/ai_guard.rb +58 -57
- data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +21 -42
- data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +1 -1
- data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +1 -1
- data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +1 -1
- data/lib/datadog/appsec/assets/blocked.html +1 -108
- data/lib/datadog/appsec/configuration.rb +11 -2
- data/lib/datadog/appsec/context.rb +1 -1
- data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +1 -1
- data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +2 -2
- data/lib/datadog/appsec/contrib/devise/configuration.rb +1 -1
- data/lib/datadog/appsec/contrib/devise/patcher.rb +1 -1
- data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +2 -2
- data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +2 -2
- data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/ext.rb +2 -2
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +2 -2
- data/lib/datadog/appsec/contrib/rack/patcher.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +6 -3
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +30 -3
- data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +8 -7
- data/lib/datadog/appsec/contrib/rails/request_middleware.rb +2 -1
- data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +2 -2
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +15 -3
- data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +8 -7
- data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +2 -1
- data/lib/datadog/appsec/processor/rule_loader.rb +12 -12
- data/lib/datadog/appsec/response.rb +1 -1
- data/lib/datadog/appsec/route_normalizer/route_pattern.rb +3 -3
- data/lib/datadog/appsec/security_engine/engine.rb +5 -4
- data/lib/datadog/core/configuration/components.rb +50 -19
- data/lib/datadog/core/configuration/components_state.rb +8 -1
- data/lib/datadog/core/configuration/option_definition.rb +1 -1
- data/lib/datadog/core/configuration/options.rb +1 -1
- data/lib/datadog/core/configuration/settings.rb +38 -43
- data/lib/datadog/core/configuration/supported_configurations.rb +18 -2
- data/lib/datadog/core/crashtracking/component.rb +5 -1
- data/lib/datadog/core/diagnostics/environment_logger.rb +36 -1
- data/lib/datadog/core/environment/gc.rb +1 -1
- data/lib/datadog/core/environment/vm_cache.rb +1 -1
- data/lib/datadog/core/environment/yjit.rb +2 -2
- data/lib/datadog/core/metrics/helpers.rb +1 -1
- data/lib/datadog/core/metrics/options.rb +2 -2
- data/lib/datadog/core/process_discovery.rb +6 -2
- data/lib/datadog/core/remote/client/capabilities.rb +32 -21
- data/lib/datadog/core/remote/client.rb +45 -4
- data/lib/datadog/core/remote/component.rb +30 -7
- data/lib/datadog/core/remote/configuration/repository.rb +2 -2
- data/lib/datadog/core/remote/dispatcher.rb +47 -6
- data/lib/datadog/core/remote/worker.rb +8 -0
- data/lib/datadog/core/telemetry/configuration_value.rb +38 -0
- data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +3 -1
- data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +1 -1
- data/lib/datadog/core/telemetry/event/app_started.rb +5 -24
- data/lib/datadog/core/telemetry/event/generate_metrics.rb +1 -1
- data/lib/datadog/core/telemetry/event/log.rb +2 -2
- data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +1 -1
- data/lib/datadog/core/telemetry/metric.rb +2 -2
- data/lib/datadog/core/telemetry/request.rb +2 -2
- data/lib/datadog/core/transport/http.rb +1 -1
- data/lib/datadog/core/transport/transport.rb +1 -1
- data/lib/datadog/core/utils/at_fork_monkey_patch.rb +170 -18
- data/lib/datadog/core/utils/sequence.rb +3 -6
- data/lib/datadog/core/utils/time.rb +16 -54
- data/lib/datadog/core/workers/runtime_metrics.rb +1 -1
- data/lib/datadog/data_streams/pathway_context.rb +20 -22
- data/lib/datadog/data_streams/processor.rb +45 -14
- data/lib/datadog/di/boot.rb +1 -0
- data/lib/datadog/di/capture_expression_evaluator/result.rb +30 -0
- data/lib/datadog/di/capture_expression_evaluator.rb +39 -9
- data/lib/datadog/di/component.rb +108 -3
- data/lib/datadog/di/configuration.rb +53 -2
- data/lib/datadog/di/context.rb +7 -2
- data/lib/datadog/di/contrib/active_record.rb +8 -2
- data/lib/datadog/di/el/compiler.rb +88 -12
- data/lib/datadog/di/el/evaluator.rb +82 -2
- data/lib/datadog/di/el/expression.rb +13 -2
- data/lib/datadog/di/evaluation_failure.rb +28 -0
- data/lib/datadog/di/guardrails_telemetry/reason.rb +87 -0
- data/lib/datadog/di/guardrails_telemetry.rb +203 -0
- data/lib/datadog/di/instrumenter.rb +106 -15
- data/lib/datadog/di/logger.rb +32 -10
- data/lib/datadog/di/probe.rb +9 -1
- data/lib/datadog/di/probe_builder.rb +7 -6
- data/lib/datadog/di/probe_manager.rb +56 -8
- data/lib/datadog/di/probe_notification_builder.rb +31 -28
- data/lib/datadog/di/probe_notifier_worker.rb +56 -6
- data/lib/datadog/di/proc_responder.rb +1 -1
- data/lib/datadog/di/remote.rb +49 -5
- data/lib/datadog/di/serializer.rb +172 -55
- data/lib/datadog/di/snapshot_event.rb +38 -0
- data/lib/datadog/di/transport/http.rb +13 -3
- data/lib/datadog/di/transport/input.rb +32 -7
- data/lib/datadog/error_tracking/component.rb +1 -1
- data/lib/datadog/kit/appsec/events/v2.rb +2 -2
- data/lib/datadog/open_feature/activation.rb +268 -0
- data/lib/datadog/open_feature/agentless/configuration_source.rb +246 -0
- data/lib/datadog/open_feature/agentless/parser.rb +43 -0
- data/lib/datadog/open_feature/agentless/response.rb +19 -0
- data/lib/datadog/open_feature/agentless/transport.rb +103 -0
- data/lib/datadog/open_feature/component.rb +85 -13
- data/lib/datadog/open_feature/configuration/agentless_endpoint.rb +90 -0
- data/lib/datadog/open_feature/configuration/source/resolution.rb +22 -0
- data/lib/datadog/open_feature/configuration/source.rb +43 -0
- data/lib/datadog/open_feature/configuration.rb +124 -0
- data/lib/datadog/open_feature/evaluation_engine.rb +29 -3
- data/lib/datadog/open_feature/exposures/batch_builder.rb +1 -1
- data/lib/datadog/open_feature/exposures/event.rb +15 -8
- data/lib/datadog/open_feature/ext.rb +19 -0
- data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +236 -80
- data/lib/datadog/open_feature/flag_evaluation/writer.rb +179 -68
- data/lib/datadog/open_feature/hooks/evaluation_telemetry_opt_out_hook.rb +25 -0
- data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +24 -21
- data/lib/datadog/open_feature/native_evaluator.rb +20 -6
- data/lib/datadog/open_feature/noop_evaluator.rb +5 -0
- data/lib/datadog/open_feature/provider.rb +315 -10
- data/lib/datadog/open_feature/remote.rb +5 -5
- data/lib/datadog/open_feature/transport.rb +5 -0
- data/lib/datadog/open_feature.rb +31 -1
- data/lib/datadog/opentelemetry/sdk/propagator.rb +1 -1
- data/lib/datadog/opentelemetry/signal_configuration.rb +13 -9
- data/lib/datadog/opentelemetry/trace.rb +3 -0
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +10 -2
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +5 -7
- data/lib/datadog/profiling/collectors/info.rb +40 -13
- data/lib/datadog/profiling/collectors/thread_context.rb +6 -17
- data/lib/datadog/profiling/component.rb +33 -39
- data/lib/datadog/profiling/exporter.rb +10 -10
- data/lib/datadog/profiling/tasks/exec.rb +1 -1
- data/lib/datadog/profiling.rb +4 -0
- data/lib/datadog/symbol_database/extractor.rb +89 -107
- data/lib/datadog/tracing/component.rb +44 -2
- data/lib/datadog/tracing/configuration/dynamic/option.rb +4 -0
- data/lib/datadog/tracing/configuration/dynamic.rb +5 -3
- data/lib/datadog/tracing/configuration/ext.rb +4 -0
- data/lib/datadog/tracing/configuration/settings.rb +36 -0
- data/lib/datadog/tracing/context.rb +24 -2
- data/lib/datadog/tracing/context_provider.rb +17 -5
- data/lib/datadog/tracing/contrib/action_cable/events.rb +1 -1
- data/lib/datadog/tracing/contrib/action_mailer/events.rb +1 -1
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +2 -2
- data/lib/datadog/tracing/contrib/action_view/events.rb +1 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/events.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +2 -2
- data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
- data/lib/datadog/tracing/contrib/aws/services.rb +1 -1
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -1
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +10 -5
- data/lib/datadog/tracing/contrib/excon/middleware.rb +10 -3
- data/lib/datadog/tracing/contrib/ext.rb +3 -3
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +10 -4
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +32 -5
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +1 -1
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -1
- data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +1 -1
- data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +2 -1
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +16 -1
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +8 -2
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +10 -4
- data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +4 -0
- data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +7 -2
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +7 -2
- data/lib/datadog/tracing/contrib/kafka/events.rb +1 -1
- data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +1 -1
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
- data/lib/datadog/tracing/contrib/opensearch/ext.rb +1 -1
- data/lib/datadog/tracing/contrib/opensearch/quantize.rb +1 -1
- data/lib/datadog/tracing/contrib/patchable.rb +1 -1
- data/lib/datadog/tracing/contrib/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
- data/lib/datadog/tracing/contrib/racecar/events.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/header_tagging.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/quantize.rb +36 -2
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +9 -3
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +10 -3
- data/lib/datadog/tracing/contrib/sequel/database.rb +1 -5
- data/lib/datadog/tracing/contrib/sequel/jdbc_connection_string.rb +140 -0
- data/lib/datadog/tracing/contrib/sequel/utils.rb +50 -63
- data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +1 -1
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +1 -1
- data/lib/datadog/tracing/contrib/utils/quantization/hash_formatter.rb +1 -1
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +108 -3
- data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +1 -1
- data/lib/datadog/tracing/correlation.rb +2 -2
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +3 -2
- data/lib/datadog/tracing/distributed/baggage.rb +1 -3
- data/lib/datadog/tracing/distributed/datadog.rb +3 -3
- data/lib/datadog/tracing/distributed/propagation.rb +3 -0
- data/lib/datadog/tracing/distributed/propagation_policy.rb +5 -0
- data/lib/datadog/tracing/distributed/trace_context.rb +14 -271
- data/lib/datadog/tracing/distributed/trace_state/datadog.rb +233 -0
- data/lib/datadog/tracing/distributed/trace_state/ext.rb +44 -0
- data/lib/datadog/tracing/distributed/trace_state/open_telemetry.rb +156 -0
- data/lib/datadog/tracing/distributed/trace_state.rb +121 -0
- data/lib/datadog/tracing/metadata/ext.rb +3 -0
- data/lib/datadog/tracing/metadata/tagging.rb +1 -1
- data/lib/datadog/tracing/otel_thread_context.rb +97 -0
- data/lib/datadog/tracing/remote.rb +236 -37
- data/lib/datadog/tracing/sampling/rule_sampler.rb +2 -0
- data/lib/datadog/tracing/span.rb +1 -1
- data/lib/datadog/tracing/span_operation.rb +1 -1
- data/lib/datadog/tracing/sync_writer.rb +8 -3
- data/lib/datadog/tracing/trace_digest.rb +22 -4
- data/lib/datadog/tracing/trace_operation.rb +22 -10
- data/lib/datadog/tracing/tracer.rb +28 -7
- data/lib/datadog/tracing/transport/http/telemetry.rb +94 -0
- data/lib/datadog/tracing/transport/http/traces.rb +2 -0
- data/lib/datadog/tracing/transport/io/traces.rb +1 -1
- data/lib/datadog/tracing/transport/native/response.rb +71 -0
- data/lib/datadog/tracing/transport/native/telemetry.rb +17 -0
- data/lib/datadog/tracing/transport/native.rb +395 -0
- data/lib/datadog/tracing/transport/span_events_negotiation.rb +41 -0
- data/lib/datadog/tracing/transport/telemetry.rb +62 -0
- data/lib/datadog/tracing/transport/trace_formatter.rb +14 -4
- data/lib/datadog/tracing/transport/traces.rb +85 -38
- data/lib/datadog/tracing/writer.rb +17 -4
- data/lib/datadog/version.rb +1 -1
- metadata +51 -13
- data/lib/datadog/ai_guard/evaluation/content_builder.rb +0 -31
- data/lib/datadog/appsec/utils/hash_coercion.rb +0 -23
- data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +0 -69
|
@@ -108,9 +108,9 @@ module Datadog
|
|
|
108
108
|
headers: {
|
|
109
109
|
# The exception this controller was given in the request,
|
|
110
110
|
# which is typical if the controller is configured to handle exceptions.
|
|
111
|
-
request_exception: request.headers["action_dispatch.exception"]
|
|
111
|
+
request_exception: request.headers["action_dispatch.exception"],
|
|
112
112
|
},
|
|
113
|
-
tracing_context: {}
|
|
113
|
+
tracing_context: {},
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
begin
|
|
@@ -46,6 +46,7 @@ module Datadog
|
|
|
46
46
|
span.resource = payload.fetch(:sql)
|
|
47
47
|
span.type = Tracing::Metadata::Ext::SQL::TYPE
|
|
48
48
|
|
|
49
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
|
|
49
50
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
50
51
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_SQL)
|
|
51
52
|
|
|
@@ -32,7 +32,7 @@ module Datadog
|
|
|
32
32
|
|
|
33
33
|
def span_options
|
|
34
34
|
{
|
|
35
|
-
type: Ext::SPAN_TYPE_CACHE
|
|
35
|
+
type: Ext::SPAN_TYPE_CACHE,
|
|
36
36
|
}
|
|
37
37
|
end
|
|
38
38
|
|
|
@@ -42,7 +42,7 @@ module Datadog
|
|
|
42
42
|
"cache_read.active_support" => {resource: Ext::RESOURCE_CACHE_GET},
|
|
43
43
|
"cache_read_multi.active_support" => {resource: Ext::RESOURCE_CACHE_MGET, multi_key: true},
|
|
44
44
|
"cache_write.active_support" => {resource: Ext::RESOURCE_CACHE_SET},
|
|
45
|
-
"cache_write_multi.active_support" => {resource: Ext::RESOURCE_CACHE_MSET, multi_key: true}
|
|
45
|
+
"cache_write_multi.active_support" => {resource: Ext::RESOURCE_CACHE_MSET, multi_key: true},
|
|
46
46
|
}.freeze
|
|
47
47
|
|
|
48
48
|
def trace?(event, payload)
|
|
@@ -42,7 +42,7 @@ module Datadog
|
|
|
42
42
|
TAG_STATE_MACHINE_NAME,
|
|
43
43
|
Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
|
|
44
44
|
Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
|
|
45
|
-
Tracing::Metadata::Ext::NET::TAG_TARGET_HOST
|
|
45
|
+
Tracing::Metadata::Ext::NET::TAG_TARGET_HOST].freeze
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
end
|
|
@@ -7,6 +7,7 @@ require_relative "../../metadata/ext"
|
|
|
7
7
|
require_relative "../http"
|
|
8
8
|
require_relative "ext"
|
|
9
9
|
require_relative "../http_annotation_helper"
|
|
10
|
+
require_relative "../utils/quantization/http"
|
|
10
11
|
|
|
11
12
|
module Datadog
|
|
12
13
|
module Tracing
|
|
@@ -111,7 +112,7 @@ module Datadog
|
|
|
111
112
|
)
|
|
112
113
|
datadog_trace = Tracing.active_trace
|
|
113
114
|
|
|
114
|
-
datadog_tag_request
|
|
115
|
+
datadog_tag_request(uri)
|
|
115
116
|
|
|
116
117
|
if Tracing::Distributed::PropagationPolicy.enabled?(
|
|
117
118
|
global_config: datadog_configuration,
|
|
@@ -131,12 +132,17 @@ module Datadog
|
|
|
131
132
|
|
|
132
133
|
attr_reader :datadog_configuration
|
|
133
134
|
|
|
134
|
-
def datadog_tag_request
|
|
135
|
+
def datadog_tag_request(uri)
|
|
135
136
|
span = @datadog_span
|
|
136
137
|
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
137
138
|
method = Ext::NOT_APPLICABLE_METHOD
|
|
138
139
|
method = @datadog_method.to_s if instance_variable_defined?(:@datadog_method) && !@datadog_method.nil?
|
|
139
|
-
|
|
140
|
+
path = uri&.path
|
|
141
|
+
span.resource = Contrib::Utils::Quantization::HTTP.client_resource(
|
|
142
|
+
method,
|
|
143
|
+
path,
|
|
144
|
+
enabled: Datadog.configuration.tracing.http_client_resource_name_quantize
|
|
145
|
+
)
|
|
140
146
|
|
|
141
147
|
if datadog_configuration[:peer_service]
|
|
142
148
|
span.set_tag(
|
|
@@ -153,10 +159,9 @@ module Datadog
|
|
|
153
159
|
|
|
154
160
|
span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
|
|
155
161
|
|
|
156
|
-
uri = try_parse_uri
|
|
157
162
|
return unless uri
|
|
158
163
|
|
|
159
|
-
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL,
|
|
164
|
+
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path)
|
|
160
165
|
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, method)
|
|
161
166
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, uri.host)
|
|
162
167
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, uri.port)
|
|
@@ -8,6 +8,7 @@ require_relative "../http"
|
|
|
8
8
|
require_relative "../analytics"
|
|
9
9
|
require_relative "ext"
|
|
10
10
|
require_relative "../http_annotation_helper"
|
|
11
|
+
require_relative "../utils/quantization/http"
|
|
11
12
|
|
|
12
13
|
module Datadog
|
|
13
14
|
module Tracing
|
|
@@ -117,7 +118,13 @@ module Datadog
|
|
|
117
118
|
end
|
|
118
119
|
|
|
119
120
|
def annotate!(span, datum)
|
|
120
|
-
|
|
121
|
+
http_method = datum[:method].to_s.upcase
|
|
122
|
+
path = datum[:path]
|
|
123
|
+
span.resource = Contrib::Utils::Quantization::HTTP.client_resource(
|
|
124
|
+
http_method,
|
|
125
|
+
path,
|
|
126
|
+
enabled: Datadog.configuration.tracing.http_client_resource_name_quantize
|
|
127
|
+
)
|
|
121
128
|
span.service = service_name(datum[:host], @options)
|
|
122
129
|
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
123
130
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
|
|
@@ -139,8 +146,8 @@ module Datadog
|
|
|
139
146
|
# Set analytics sample rate
|
|
140
147
|
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
141
148
|
|
|
142
|
-
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL,
|
|
143
|
-
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD,
|
|
149
|
+
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path)
|
|
150
|
+
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, http_method)
|
|
144
151
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, datum[:host])
|
|
145
152
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, datum[:port])
|
|
146
153
|
span.set_tags(
|
|
@@ -31,7 +31,7 @@ module Datadog
|
|
|
31
31
|
PEER_SERVICE_SOURCES = [TAG_INSTANCE,
|
|
32
32
|
Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
|
|
33
33
|
Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
|
|
34
|
-
Tracing::Metadata::Ext::NET::TAG_TARGET_HOST
|
|
34
|
+
Tracing::Metadata::Ext::NET::TAG_TARGET_HOST].freeze
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
module RPC
|
|
@@ -41,7 +41,7 @@ module Datadog
|
|
|
41
41
|
PEER_SERVICE_SOURCES = [TAG_SERVICE,
|
|
42
42
|
Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
|
|
43
43
|
Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
|
|
44
|
-
Tracing::Metadata::Ext::NET::TAG_TARGET_HOST
|
|
44
|
+
Tracing::Metadata::Ext::NET::TAG_TARGET_HOST].freeze
|
|
45
45
|
module GRPC
|
|
46
46
|
TAG_STATUS_CODE = "rpc.grpc.status_code"
|
|
47
47
|
TAG_FULL_METHOD = "rpc.grpc.full_method"
|
|
@@ -53,7 +53,7 @@ module Datadog
|
|
|
53
53
|
TAG_DESTINATION = "messaging.destination"
|
|
54
54
|
PEER_SERVICE_SOURCES = [Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
|
|
55
55
|
Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
|
|
56
|
-
Tracing::Metadata::Ext::NET::TAG_TARGET_HOST
|
|
56
|
+
Tracing::Metadata::Ext::NET::TAG_TARGET_HOST].freeze
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
module Metadata
|
|
@@ -7,6 +7,7 @@ require_relative "../http"
|
|
|
7
7
|
require_relative "../analytics"
|
|
8
8
|
require_relative "ext"
|
|
9
9
|
require_relative "../http_annotation_helper"
|
|
10
|
+
require_relative "../utils/quantization/http"
|
|
10
11
|
require_relative "../../../core/telemetry/logger"
|
|
11
12
|
|
|
12
13
|
module Datadog
|
|
@@ -45,7 +46,8 @@ module Datadog
|
|
|
45
46
|
|
|
46
47
|
# rubocop:disable Metrics/AbcSize
|
|
47
48
|
def annotate!(span, env, options)
|
|
48
|
-
|
|
49
|
+
path = env[:url].path
|
|
50
|
+
span.resource = resource_name(env, path)
|
|
49
51
|
span.service = service_name(env[:url].host, options)
|
|
50
52
|
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
51
53
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
|
|
@@ -69,7 +71,7 @@ module Datadog
|
|
|
69
71
|
Contrib::Analytics.set_sample_rate(span, options[:analytics_sample_rate])
|
|
70
72
|
end
|
|
71
73
|
|
|
72
|
-
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL,
|
|
74
|
+
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path)
|
|
73
75
|
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, env[:method].to_s.upcase)
|
|
74
76
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, env[:url].host)
|
|
75
77
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, env[:url].port)
|
|
@@ -103,8 +105,12 @@ module Datadog
|
|
|
103
105
|
Contrib::HTTP.inject(trace, env[:request_headers])
|
|
104
106
|
end
|
|
105
107
|
|
|
106
|
-
def resource_name(env)
|
|
107
|
-
|
|
108
|
+
def resource_name(env, path)
|
|
109
|
+
Contrib::Utils::Quantization::HTTP.client_resource(
|
|
110
|
+
env[:method].to_s.upcase,
|
|
111
|
+
path,
|
|
112
|
+
enabled: Datadog.configuration.tracing.http_client_resource_name_quantize
|
|
113
|
+
)
|
|
108
114
|
end
|
|
109
115
|
|
|
110
116
|
def build_request_options!(env)
|
|
@@ -15,6 +15,7 @@ module Datadog
|
|
|
15
15
|
module Endpoint
|
|
16
16
|
KEY_RUN = "datadog_grape_endpoint_run"
|
|
17
17
|
KEY_RENDER = "datadog_grape_endpoint_render"
|
|
18
|
+
FORMAT_SEGMENT = /\(\.:?\w+\)\z/
|
|
18
19
|
|
|
19
20
|
class << self
|
|
20
21
|
def subscribe
|
|
@@ -43,8 +44,8 @@ module Datadog
|
|
|
43
44
|
# collect endpoint details
|
|
44
45
|
endpoint = payload.fetch(:endpoint)
|
|
45
46
|
env = payload.fetch(:env)
|
|
46
|
-
api_view = api_view(endpoint
|
|
47
|
-
request_method = endpoint
|
|
47
|
+
api_view = api_view(endpoint_api(endpoint))
|
|
48
|
+
request_method = endpoint_request_method(endpoint)
|
|
48
49
|
path = endpoint_expand_path(endpoint)
|
|
49
50
|
resource = "#{api_view} #{request_method} #{path}"
|
|
50
51
|
|
|
@@ -65,12 +66,16 @@ module Datadog
|
|
|
65
66
|
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
66
67
|
|
|
67
68
|
if (grape_route = env["grape.routing_args"]) && grape_route[:route_info]
|
|
69
|
+
route_info = grape_route[:route_info]
|
|
70
|
+
# Grape 2.3 through 3.0 return nil from GreedyRoute#path; the
|
|
71
|
+
# path lives at pattern.path in those versions.
|
|
72
|
+
route_path = route_info.path || route_info.pattern&.path
|
|
68
73
|
trace.set_tag(
|
|
69
74
|
Tracing::Metadata::Ext::HTTP::TAG_ROUTE,
|
|
70
75
|
# here we are removing the format from the path:
|
|
71
76
|
# e.g. /path/to/resource(.json) => /path/to/resource
|
|
72
77
|
# e.g. /path/to/resource(.:format) => /path/to/resource
|
|
73
|
-
|
|
78
|
+
route_path&.gsub(FORMAT_SEGMENT, "")
|
|
74
79
|
)
|
|
75
80
|
|
|
76
81
|
trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, env["SCRIPT_NAME"])
|
|
@@ -96,8 +101,8 @@ module Datadog
|
|
|
96
101
|
begin
|
|
97
102
|
# collect endpoint details
|
|
98
103
|
endpoint = payload.fetch(:endpoint)
|
|
99
|
-
api_view = api_view(endpoint
|
|
100
|
-
request_method = endpoint
|
|
104
|
+
api_view = api_view(endpoint_api(endpoint))
|
|
105
|
+
request_method = endpoint_request_method(endpoint)
|
|
101
106
|
path = endpoint_expand_path(endpoint)
|
|
102
107
|
|
|
103
108
|
trace.resource = span.resource
|
|
@@ -266,8 +271,25 @@ module Datadog
|
|
|
266
271
|
end
|
|
267
272
|
end
|
|
268
273
|
|
|
274
|
+
# Grape 4 moved three values off the endpoint's public options Hash: the
|
|
275
|
+
# API class became the #api reader (ruby-grape/grape#2778), and the verb
|
|
276
|
+
# and path are read off the route (#2775, #2776). Each reader prefers the
|
|
277
|
+
# options Hash, so Grape 1.x through 3.x resolve as they did before.
|
|
278
|
+
def endpoint_api(endpoint)
|
|
279
|
+
endpoint.options.fetch(:for) { endpoint.api }
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
def endpoint_request_method(endpoint)
|
|
283
|
+
request_methods = endpoint.options[:method]
|
|
284
|
+
return request_methods.first if request_methods
|
|
285
|
+
|
|
286
|
+
endpoint.routes.first&.request_method
|
|
287
|
+
end
|
|
288
|
+
|
|
269
289
|
def endpoint_expand_path(endpoint)
|
|
270
290
|
route_path = endpoint.options[:path]
|
|
291
|
+
return endpoint_route_path(endpoint) if route_path.nil? || route_path.empty?
|
|
292
|
+
|
|
271
293
|
namespace = endpoint.routes.first&.namespace || ""
|
|
272
294
|
|
|
273
295
|
path = (namespace.split("/") + route_path)
|
|
@@ -277,6 +299,11 @@ module Datadog
|
|
|
277
299
|
path
|
|
278
300
|
end
|
|
279
301
|
|
|
302
|
+
# A compiled path already carries the namespace, so it is used whole.
|
|
303
|
+
def endpoint_route_path(endpoint)
|
|
304
|
+
endpoint.routes.first&.path&.sub(FORMAT_SEGMENT, "") || "/"
|
|
305
|
+
end
|
|
306
|
+
|
|
280
307
|
def service_name
|
|
281
308
|
datadog_configuration[:service_name]
|
|
282
309
|
end
|
|
@@ -25,7 +25,7 @@ module Datadog
|
|
|
25
25
|
type: Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND,
|
|
26
26
|
service: service_name, # Maintain client-side service name configuration
|
|
27
27
|
resource: formatter.resource_name,
|
|
28
|
-
on_error: on_error
|
|
28
|
+
on_error: on_error,
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
Tracing.trace(Ext::SPAN_CLIENT, **options) do |span, trace|
|
|
@@ -26,7 +26,7 @@ module Datadog
|
|
|
26
26
|
type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND,
|
|
27
27
|
service: service_name, # TODO: Remove server-side service name configuration
|
|
28
28
|
resource: formatter.resource_name,
|
|
29
|
-
on_error: on_error
|
|
29
|
+
on_error: on_error,
|
|
30
30
|
}
|
|
31
31
|
metadata = keywords[:call].metadata
|
|
32
32
|
|
|
@@ -35,7 +35,7 @@ module Datadog
|
|
|
35
35
|
Tracing::Distributed::TraceContext.new(fetcher: Fetcher),
|
|
36
36
|
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_BAGGAGE =>
|
|
37
37
|
Tracing::Distributed::Baggage.new(fetcher: Fetcher),
|
|
38
|
-
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_NONE => Tracing::Distributed::None.new
|
|
38
|
+
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_NONE => Tracing::Distributed::None.new,
|
|
39
39
|
},
|
|
40
40
|
propagation_style_inject: propagation_style_inject,
|
|
41
41
|
propagation_style_extract: propagation_style_extract,
|
|
@@ -10,7 +10,8 @@ module Datadog
|
|
|
10
10
|
# Hanami Instrumentation for `hanami.routing`
|
|
11
11
|
module RouterTracing
|
|
12
12
|
def call(env)
|
|
13
|
-
|
|
13
|
+
active_span = Tracing.active_span
|
|
14
|
+
return super if active_span && active_span.name == Ext::SPAN_ROUTING
|
|
14
15
|
|
|
15
16
|
Tracing.trace(
|
|
16
17
|
Ext::SPAN_ROUTING,
|
|
@@ -34,7 +34,12 @@ module Datadog
|
|
|
34
34
|
span.service = service_name(host, request_options, client_config)
|
|
35
35
|
span.set_tag(Tracing::Metadata::Ext::TAG_SVC_SRC, Ext::TAG_COMPONENT)
|
|
36
36
|
span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
|
|
37
|
-
|
|
37
|
+
quantize_resource = Datadog.configuration.tracing.http_client_resource_name_quantize
|
|
38
|
+
span.resource = Contrib::Utils::Quantization::HTTP.client_resource(
|
|
39
|
+
req.method,
|
|
40
|
+
quantize_resource ? request_uri_path(req) : nil,
|
|
41
|
+
enabled: quantize_resource
|
|
42
|
+
)
|
|
38
43
|
|
|
39
44
|
if Tracing::Distributed::PropagationPolicy.enabled?(
|
|
40
45
|
pin_config: client_config,
|
|
@@ -116,6 +121,16 @@ module Datadog
|
|
|
116
121
|
|
|
117
122
|
private
|
|
118
123
|
|
|
124
|
+
def request_uri_path(request)
|
|
125
|
+
uri = request.uri if request.respond_to?(:uri)
|
|
126
|
+
return uri.path if uri
|
|
127
|
+
return request.path.split(/[?#]/, 2).first if request.path.start_with?("/")
|
|
128
|
+
|
|
129
|
+
URI.parse(request.path).path
|
|
130
|
+
rescue URI::InvalidURIError
|
|
131
|
+
nil
|
|
132
|
+
end
|
|
133
|
+
|
|
119
134
|
def host_and_port(request)
|
|
120
135
|
if request.respond_to?(:uri) && request.uri
|
|
121
136
|
[request.uri.host, request.uri.port]
|
|
@@ -4,6 +4,7 @@ require_relative "../../metadata/ext"
|
|
|
4
4
|
require_relative "../http"
|
|
5
5
|
require_relative "../analytics"
|
|
6
6
|
require_relative "../http_annotation_helper"
|
|
7
|
+
require_relative "../utils/quantization/http"
|
|
7
8
|
require_relative "../../../core/telemetry/logger"
|
|
8
9
|
|
|
9
10
|
module Datadog
|
|
@@ -74,10 +75,15 @@ module Datadog
|
|
|
74
75
|
|
|
75
76
|
http_method = req.header.request_method.upcase
|
|
76
77
|
uri = req.header.request_uri
|
|
78
|
+
path = uri.path
|
|
77
79
|
|
|
78
|
-
span.resource =
|
|
80
|
+
span.resource = Contrib::Utils::Quantization::HTTP.client_resource(
|
|
81
|
+
http_method,
|
|
82
|
+
path,
|
|
83
|
+
enabled: Datadog.configuration.tracing.http_client_resource_name_quantize
|
|
84
|
+
)
|
|
79
85
|
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, http_method)
|
|
80
|
-
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL,
|
|
86
|
+
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path)
|
|
81
87
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, uri.host)
|
|
82
88
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, uri.port)
|
|
83
89
|
|
|
@@ -4,6 +4,7 @@ require_relative "../../metadata/ext"
|
|
|
4
4
|
require_relative "../http"
|
|
5
5
|
require_relative "../analytics"
|
|
6
6
|
require_relative "../http_annotation_helper"
|
|
7
|
+
require_relative "../utils/quantization/http"
|
|
7
8
|
require_relative "../../../core/telemetry/logger"
|
|
8
9
|
|
|
9
10
|
module Datadog
|
|
@@ -70,17 +71,22 @@ module Datadog
|
|
|
70
71
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
71
72
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_REQUEST)
|
|
72
73
|
|
|
74
|
+
uri = req.uri
|
|
75
|
+
path = uri&.path
|
|
73
76
|
if req.verb&.is_a?(String) || req.verb.is_a?(Symbol)
|
|
74
77
|
http_method = req.verb.to_s.upcase
|
|
75
|
-
span.resource =
|
|
78
|
+
span.resource = Contrib::Utils::Quantization::HTTP.client_resource(
|
|
79
|
+
http_method,
|
|
80
|
+
path,
|
|
81
|
+
enabled: Datadog.configuration.tracing.http_client_resource_name_quantize
|
|
82
|
+
)
|
|
76
83
|
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, http_method)
|
|
77
84
|
else
|
|
78
85
|
logger.debug("service #{req_options[:service_name]} span #{Ext::SPAN_REQUEST} missing request verb")
|
|
79
86
|
end
|
|
80
87
|
|
|
81
|
-
if
|
|
82
|
-
|
|
83
|
-
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, uri.path)
|
|
88
|
+
if uri
|
|
89
|
+
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path)
|
|
84
90
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, uri.host)
|
|
85
91
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, uri.port)
|
|
86
92
|
|
|
@@ -21,6 +21,10 @@ module Datadog
|
|
|
21
21
|
super
|
|
22
22
|
|
|
23
23
|
span.resource = payload[:api]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def on_finish(span, _event, _id, payload)
|
|
27
|
+
super
|
|
24
28
|
|
|
25
29
|
span.set_tag(Ext::TAG_REQUEST_SIZE, payload[:request_size]) if payload.key?(:request_size)
|
|
26
30
|
span.set_tag(Ext::TAG_RESPONSE_SIZE, payload[:response_size]) if payload.key?(:response_size)
|
|
@@ -17,12 +17,17 @@ module Datadog
|
|
|
17
17
|
|
|
18
18
|
module_function
|
|
19
19
|
|
|
20
|
-
def on_start(span, _event, _id,
|
|
20
|
+
def on_start(span, _event, _id, _payload)
|
|
21
|
+
super
|
|
22
|
+
|
|
23
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_PRODUCER)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def on_finish(span, _event, _id, payload)
|
|
21
27
|
super
|
|
22
28
|
|
|
23
29
|
span.set_tag(Ext::TAG_MESSAGE_COUNT, payload[:message_count]) if payload.key?(:message_count)
|
|
24
30
|
span.set_tag(Ext::TAG_SENT_MESSAGE_COUNT, payload[:sent_message_count]) if payload.key?(:sent_message_count)
|
|
25
|
-
span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_PRODUCER)
|
|
26
31
|
end
|
|
27
32
|
|
|
28
33
|
def span_name
|
|
@@ -17,7 +17,13 @@ module Datadog
|
|
|
17
17
|
|
|
18
18
|
module_function
|
|
19
19
|
|
|
20
|
-
def on_start(span, _event, _id,
|
|
20
|
+
def on_start(span, _event, _id, _payload)
|
|
21
|
+
super
|
|
22
|
+
|
|
23
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_PRODUCER)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def on_finish(span, _event, _id, payload)
|
|
21
27
|
super
|
|
22
28
|
|
|
23
29
|
span.set_tag(Ext::TAG_ATTEMPTS, payload[:attempts]) if payload.key?(:attempts)
|
|
@@ -25,7 +31,6 @@ module Datadog
|
|
|
25
31
|
if payload.key?(:delivered_message_count)
|
|
26
32
|
span.set_tag(Ext::TAG_DELIVERED_MESSAGE_COUNT, payload[:delivered_message_count])
|
|
27
33
|
end
|
|
28
|
-
span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_PRODUCER)
|
|
29
34
|
end
|
|
30
35
|
|
|
31
36
|
def span_name
|
|
@@ -34,7 +34,7 @@ module Datadog
|
|
|
34
34
|
Tracing::Distributed::TraceContext.new(fetcher: Tracing::Distributed::Fetcher),
|
|
35
35
|
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_BAGGAGE =>
|
|
36
36
|
Tracing::Distributed::Baggage.new(fetcher: Tracing::Distributed::Fetcher),
|
|
37
|
-
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_NONE => Tracing::Distributed::None.new
|
|
37
|
+
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_NONE => Tracing::Distributed::None.new,
|
|
38
38
|
},
|
|
39
39
|
propagation_style_inject: propagation_style_inject,
|
|
40
40
|
propagation_style_extract: propagation_style_extract,
|
|
@@ -18,7 +18,7 @@ module Datadog
|
|
|
18
18
|
RELATIVE_RESOURCE_PATTERN = "relative"
|
|
19
19
|
VALID_RESOURCE_PATTERNS = [
|
|
20
20
|
ABSOLUTE_RESOURCE_PATTERN,
|
|
21
|
-
RELATIVE_RESOURCE_PATTERN
|
|
21
|
+
RELATIVE_RESOURCE_PATTERN,
|
|
22
22
|
].freeze
|
|
23
23
|
# Default should be changed to RELATIVE in 3.0 to match the Elasticsearch integration
|
|
24
24
|
DEFAULT_RESOURCE_PATTERN = ABSOLUTE_RESOURCE_PATTERN
|
|
@@ -12,7 +12,7 @@ module Datadog
|
|
|
12
12
|
trace_options = {
|
|
13
13
|
service: configuration[:service_name],
|
|
14
14
|
type: Tracing::Metadata::Ext::AppTypes::TYPE_WORKER,
|
|
15
|
-
on_error: configuration[:on_error]
|
|
15
|
+
on_error: configuration[:on_error],
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
Tracing.trace(Ext::SPAN_JOB, **trace_options) do |request_span|
|