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
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module Tracing
|
|
5
|
+
module Transport
|
|
6
|
+
class Telemetry
|
|
7
|
+
# Observation schema: Symbol keys with non-negative Integer values.
|
|
8
|
+
# COUNTS maps per-send count deltas to [metric name, additional tags].
|
|
9
|
+
# :bytes_sent is one successful payload's byte-size distribution sample;
|
|
10
|
+
# record each payload separately rather than summing its samples.
|
|
11
|
+
# :responses_count requires :status_code; omit both when the code is unknown.
|
|
12
|
+
# Missing and zero measurements emit nothing. All metrics use namespace
|
|
13
|
+
# "tracers" and common: true; trace_* metrics gain src_library:<source>, while
|
|
14
|
+
# span metrics keep their source-free tags.
|
|
15
|
+
COUNTS = {
|
|
16
|
+
requests_count: ["trace_api.requests", []],
|
|
17
|
+
errors_network: ["trace_api.errors", ["type:network"]],
|
|
18
|
+
errors_timeout: ["trace_api.errors", ["type:timeout"]],
|
|
19
|
+
errors_status_code: ["trace_api.errors", ["type:status_code"]],
|
|
20
|
+
chunks_sent: ["trace_chunks_sent", []],
|
|
21
|
+
chunks_dropped_serialization_error: ["trace_chunks_dropped", ["reason:serialization_error"]],
|
|
22
|
+
chunks_dropped_send_failure: ["trace_chunks_dropped", ["reason:send_failure"]],
|
|
23
|
+
chunks_dropped_payload_too_large: ["trace_chunks_dropped", ["reason:payload_too_large"]],
|
|
24
|
+
spans_enqueued_for_serialization: ["spans_enqueued_for_serialization", []],
|
|
25
|
+
spans_dropped_serialization_error: ["spans_dropped", ["reason:serialization_error"]],
|
|
26
|
+
spans_dropped_api_error: ["spans_dropped", ["reason:api_error"]],
|
|
27
|
+
spans_dropped_payload_too_large: ["spans_dropped", ["reason:payload_too_large"]],
|
|
28
|
+
}.freeze #: Hash[Symbol, [String, Array[String]]]
|
|
29
|
+
|
|
30
|
+
attr_writer :client
|
|
31
|
+
|
|
32
|
+
def initialize(client, source:)
|
|
33
|
+
@client = client
|
|
34
|
+
@source_tags = ["src_library:#{source}"]
|
|
35
|
+
@counts = COUNTS.map do |key, (name, tags)|
|
|
36
|
+
[key, name, name.start_with?("trace_") ? @source_tags + tags : tags]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def record(observations)
|
|
41
|
+
client = @client
|
|
42
|
+
return unless client.enabled?
|
|
43
|
+
|
|
44
|
+
@counts.each do |key, name, tags|
|
|
45
|
+
value = observations.fetch(key, 0)
|
|
46
|
+
client.inc("tracers", name, value, tags: tags) if value > 0
|
|
47
|
+
end
|
|
48
|
+
bytes = observations.fetch(:bytes_sent, 0)
|
|
49
|
+
client.distribution("tracers", "trace_api.bytes", bytes, tags: @source_tags) if bytes > 0
|
|
50
|
+
responses = observations.fetch(:responses_count, 0)
|
|
51
|
+
if responses > 0
|
|
52
|
+
client.inc("tracers", "trace_api.responses", responses,
|
|
53
|
+
tags: @source_tags + ["status_code:#{observations.fetch(:status_code)}"],)
|
|
54
|
+
end
|
|
55
|
+
nil
|
|
56
|
+
rescue
|
|
57
|
+
nil
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -19,8 +19,8 @@ module Datadog
|
|
|
19
19
|
:first_span,
|
|
20
20
|
:trace
|
|
21
21
|
|
|
22
|
-
def self.format!(trace)
|
|
23
|
-
new(trace).format!
|
|
22
|
+
def self.format!(trace, transport: nil)
|
|
23
|
+
new(trace).format!(transport: transport)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def initialize(trace)
|
|
@@ -32,7 +32,7 @@ module Datadog
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
# Modifies a trace so suitable for transport
|
|
35
|
-
def format!
|
|
35
|
+
def format!(transport: nil)
|
|
36
36
|
return unless trace
|
|
37
37
|
return trace unless root_span
|
|
38
38
|
|
|
@@ -65,10 +65,13 @@ module Datadog
|
|
|
65
65
|
|
|
66
66
|
if first_span
|
|
67
67
|
tag_process_tags!
|
|
68
|
+
tag_sdk_otlp_export!
|
|
68
69
|
tag_git_repository_url!
|
|
69
70
|
tag_git_commit_sha!
|
|
70
71
|
end
|
|
71
72
|
|
|
73
|
+
root_span.set_tag("_dd.tracing.transport", transport) if transport && !partial?
|
|
74
|
+
|
|
72
75
|
trace
|
|
73
76
|
end
|
|
74
77
|
|
|
@@ -213,7 +216,7 @@ module Datadog
|
|
|
213
216
|
def tag_apm_tracing_disabled!
|
|
214
217
|
return if trace.apm_tracing_enabled
|
|
215
218
|
|
|
216
|
-
|
|
219
|
+
trace.spans.each { |span| span.set_metric(Tracing::Metadata::Ext::TAG_APM_ENABLED, 0) }
|
|
217
220
|
end
|
|
218
221
|
|
|
219
222
|
def tag_git_repository_url!
|
|
@@ -237,6 +240,13 @@ module Datadog
|
|
|
237
240
|
)
|
|
238
241
|
end
|
|
239
242
|
|
|
243
|
+
# TODO: Revisit when OTLP trace export support lands. The OTLP path sets
|
|
244
|
+
# `_dd.sdk.otlp_export: "true"` on the OTLP resource, so this tag must not
|
|
245
|
+
# also be set to "false" on the first span of a chunk exported over OTLP.
|
|
246
|
+
def tag_sdk_otlp_export!
|
|
247
|
+
first_span.set_tag(Tracing::Metadata::Ext::TAG_SDK_OTLP_EXPORT, "false")
|
|
248
|
+
end
|
|
249
|
+
|
|
240
250
|
private
|
|
241
251
|
|
|
242
252
|
def partial?
|
|
@@ -6,7 +6,9 @@ require_relative "../../core/transport/request"
|
|
|
6
6
|
require_relative "../../core/transport/transport"
|
|
7
7
|
require_relative "../../core/utils/enumerable_compat"
|
|
8
8
|
require_relative "http/client"
|
|
9
|
+
require_relative "http/telemetry"
|
|
9
10
|
require_relative "serializable_trace"
|
|
11
|
+
require_relative "span_events_negotiation"
|
|
10
12
|
require_relative "trace_formatter"
|
|
11
13
|
|
|
12
14
|
module Datadog
|
|
@@ -25,6 +27,30 @@ module Datadog
|
|
|
25
27
|
|
|
26
28
|
# Traces request
|
|
27
29
|
class Request < Datadog::Core::Transport::Request
|
|
30
|
+
attr_reader :http_status, :http_success
|
|
31
|
+
attr_writer :capture_telemetry
|
|
32
|
+
|
|
33
|
+
def initialize(parcel = nil)
|
|
34
|
+
super
|
|
35
|
+
@http_status = nil
|
|
36
|
+
@http_success = nil
|
|
37
|
+
@capture_telemetry = false
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Built-in adapters return integer codes. Custom status inspection is
|
|
41
|
+
# best-effort: telemetry must not change trace delivery.
|
|
42
|
+
def capture_status(response)
|
|
43
|
+
return unless @capture_telemetry
|
|
44
|
+
|
|
45
|
+
if response.respond_to?(:code)
|
|
46
|
+
code = response.code
|
|
47
|
+
@http_status = code if code.is_a?(Integer) && code.between?(100, 999)
|
|
48
|
+
end
|
|
49
|
+
@http_success = response.ok? if @http_status.nil? && response.respond_to?(:ok?)
|
|
50
|
+
nil
|
|
51
|
+
rescue
|
|
52
|
+
nil
|
|
53
|
+
end
|
|
28
54
|
end
|
|
29
55
|
|
|
30
56
|
# Traces response
|
|
@@ -47,44 +73,65 @@ module Datadog
|
|
|
47
73
|
#
|
|
48
74
|
# @param encoder [Datadog::Core::Encoding::Encoder]
|
|
49
75
|
# @param logger [Datadog::Core::Logger]
|
|
50
|
-
# @param
|
|
51
|
-
|
|
76
|
+
# @param native_events_supported [Boolean] whether to encode native span events
|
|
77
|
+
# @param max_size [Integer] maximum acceptable payload size in bytes
|
|
78
|
+
# @param telemetry [HTTP::Telemetry::Batch, nil] optional per-send accounting batch
|
|
79
|
+
def initialize(encoder, logger:, native_events_supported:, max_size: DEFAULT_MAX_PAYLOAD_SIZE, telemetry: nil)
|
|
52
80
|
@encoder = encoder
|
|
53
81
|
@logger = logger
|
|
54
82
|
@native_events_supported = native_events_supported
|
|
55
83
|
@max_size = max_size
|
|
84
|
+
@batch = telemetry
|
|
56
85
|
end
|
|
57
86
|
|
|
58
87
|
# Encodes a list of traces in chunks.
|
|
59
88
|
# Before serializing, all traces are normalized. Trace nesting is not changed.
|
|
60
89
|
#
|
|
61
90
|
# @param traces [Enumerable<Trace>] list of traces
|
|
62
|
-
# @return [Enumerable
|
|
63
|
-
#
|
|
91
|
+
# @return [Enumerable<Array>] tuples of encoded bytes and trace count,
|
|
92
|
+
# plus span count when telemetry accounting is enabled
|
|
64
93
|
def encode_in_chunks(traces)
|
|
94
|
+
span_counts = [] if @batch
|
|
65
95
|
encoded_traces = Core::Utils::EnumerableCompat.filter_map(traces) do |trace|
|
|
66
|
-
encode_one(trace)
|
|
96
|
+
encoded = encode_one(trace)
|
|
97
|
+
span_counts << trace.length if encoded && span_counts
|
|
98
|
+
encoded
|
|
67
99
|
end
|
|
68
100
|
|
|
69
101
|
Datadog::Core::Chunker.chunk_by_size(encoded_traces, max_size).map do |chunk|
|
|
70
|
-
[
|
|
102
|
+
payload = [join(chunk), chunk.size]
|
|
103
|
+
payload << span_counts.shift(chunk.size).sum if span_counts
|
|
104
|
+
payload
|
|
71
105
|
end
|
|
72
106
|
end
|
|
73
107
|
|
|
74
108
|
private
|
|
75
109
|
|
|
110
|
+
def join(chunk)
|
|
111
|
+
encoder.join(chunk)
|
|
112
|
+
rescue
|
|
113
|
+
@batch&.serialization_failed
|
|
114
|
+
raise
|
|
115
|
+
end
|
|
116
|
+
|
|
76
117
|
def encode_one(trace)
|
|
77
|
-
encoded =
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
118
|
+
encoded = begin
|
|
119
|
+
Encoder.encode_trace(
|
|
120
|
+
encoder,
|
|
121
|
+
trace,
|
|
122
|
+
logger: logger,
|
|
123
|
+
native_events_supported: @native_events_supported
|
|
124
|
+
)
|
|
125
|
+
rescue
|
|
126
|
+
@batch&.serialization_failed
|
|
127
|
+
raise
|
|
128
|
+
end
|
|
83
129
|
|
|
84
130
|
if encoded.size > max_size
|
|
85
131
|
# This single trace is too large, we can't flush it
|
|
86
132
|
logger.debug { "Dropping trace. Payload too large: '#{trace.inspect}'" }
|
|
87
133
|
Datadog.health_metrics.transport_trace_too_large(1)
|
|
134
|
+
@batch&.record_oversized_drop(trace.length)
|
|
88
135
|
|
|
89
136
|
return nil
|
|
90
137
|
end
|
|
@@ -99,7 +146,7 @@ module Datadog
|
|
|
99
146
|
|
|
100
147
|
def encode_trace(encoder, trace, logger:, native_events_supported:)
|
|
101
148
|
# Format the trace for transport
|
|
102
|
-
TraceFormatter.format!(trace)
|
|
149
|
+
TraceFormatter.format!(trace, transport: "ruby")
|
|
103
150
|
|
|
104
151
|
# Make the trace serializable
|
|
105
152
|
serializable_trace = SerializableTrace.new(trace, native_events_supported: native_events_supported)
|
|
@@ -118,21 +165,43 @@ module Datadog
|
|
|
118
165
|
# batches of traces into smaller chunks and handles
|
|
119
166
|
# API version downgrade handshake.
|
|
120
167
|
class Transport < Core::Transport::Transport
|
|
168
|
+
include SpanEventsNegotiation
|
|
121
169
|
self.http_client_class = Tracing::Transport::HTTP::Client
|
|
122
170
|
|
|
171
|
+
def initialize(apis, default_api, logger:)
|
|
172
|
+
super
|
|
173
|
+
@reporter = nil
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Reconfiguration can retain this transport, so rebind its reporter to
|
|
177
|
+
# the new telemetry client. Each later send creates its own accounting batch.
|
|
178
|
+
def telemetry=(telemetry_client)
|
|
179
|
+
if (reporter = @reporter)
|
|
180
|
+
reporter.client = telemetry_client
|
|
181
|
+
else
|
|
182
|
+
@reporter = HTTP::Telemetry.new(telemetry_client)
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
123
186
|
def send_traces(traces)
|
|
124
187
|
encoder = current_api.encoder
|
|
188
|
+
native_events_supported = native_events_supported?
|
|
189
|
+
batch = @reporter&.batch(traces)
|
|
125
190
|
chunker = Datadog::Tracing::Transport::Traces::Chunker.new(
|
|
126
191
|
encoder,
|
|
127
192
|
logger: logger,
|
|
128
|
-
native_events_supported: native_events_supported
|
|
193
|
+
native_events_supported: native_events_supported,
|
|
194
|
+
telemetry: batch,
|
|
129
195
|
)
|
|
130
196
|
|
|
131
|
-
responses = chunker.encode_in_chunks(traces.lazy).map do |encoded_traces, trace_count|
|
|
197
|
+
responses = chunker.encode_in_chunks(traces.lazy).map do |encoded_traces, trace_count, span_count|
|
|
132
198
|
request = Request.new(Parcel.new(encoded_traces, trace_count: trace_count))
|
|
199
|
+
request.capture_telemetry = true if batch
|
|
133
200
|
|
|
134
201
|
client.send_request(:traces, request).tap do |response|
|
|
135
|
-
|
|
202
|
+
fallback = downgrade?(response)
|
|
203
|
+
batch&.sent(request, response, trace_count, span_count, encoded_traces.bytesize, fallback: fallback)
|
|
204
|
+
if fallback
|
|
136
205
|
downgrade!
|
|
137
206
|
return send_traces(traces)
|
|
138
207
|
end
|
|
@@ -161,28 +230,6 @@ module Datadog
|
|
|
161
230
|
def stats
|
|
162
231
|
client.stats
|
|
163
232
|
end
|
|
164
|
-
|
|
165
|
-
private
|
|
166
|
-
|
|
167
|
-
# Queries the agent for native span events serialization support.
|
|
168
|
-
# This changes how the serialization of span events performed.
|
|
169
|
-
def native_events_supported?
|
|
170
|
-
return @native_events_supported if defined?(@native_events_supported)
|
|
171
|
-
|
|
172
|
-
# Check for an explicit override
|
|
173
|
-
option = Datadog.configuration.tracing.native_span_events
|
|
174
|
-
unless option.nil?
|
|
175
|
-
@native_events_supported = option
|
|
176
|
-
return option
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
# Otherwise, check for agent support, to ensure a configuration-less setup.
|
|
180
|
-
if (res = Datadog.send(:components).agent_info.fetch)
|
|
181
|
-
@native_events_supported = res.span_events == true
|
|
182
|
-
else
|
|
183
|
-
false
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
233
|
end
|
|
187
234
|
end
|
|
188
235
|
end
|
|
@@ -130,7 +130,7 @@ module Datadog
|
|
|
130
130
|
def stats
|
|
131
131
|
{
|
|
132
132
|
traces_flushed: @traces_flushed,
|
|
133
|
-
transport: @transport.stats
|
|
133
|
+
transport: @transport.stats,
|
|
134
134
|
}
|
|
135
135
|
end
|
|
136
136
|
|
|
@@ -173,10 +173,23 @@ module Datadog
|
|
|
173
173
|
def stop_worker
|
|
174
174
|
@stopped = true
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
if @worker
|
|
177
|
+
@worker.stop
|
|
178
|
+
@worker = nil
|
|
179
|
+
end
|
|
177
180
|
|
|
178
|
-
|
|
179
|
-
|
|
181
|
+
# Stopping a writer is permanent: once `@stopped` is set, `#start`
|
|
182
|
+
# refuses to spin up a new worker, so this writer (and the transport it
|
|
183
|
+
# owns) is being discarded for good. Forks do not stop the writer
|
|
184
|
+
# (`#start` re-creates the worker for the new pid while reusing the same
|
|
185
|
+
# transport), so this only runs on real teardown/reconfiguration.
|
|
186
|
+
#
|
|
187
|
+
# Deterministically release transports that hold native resources
|
|
188
|
+
# (e.g. the native trace exporter's Rust runtime and process-global
|
|
189
|
+
# fork hooks) instead of waiting on the GC finalizer. The default HTTP
|
|
190
|
+
# transport has no `#close` and is left untouched. `#close` is
|
|
191
|
+
# idempotent, so repeated `#stop` calls are safe.
|
|
192
|
+
@transport.close if @transport.respond_to?(:close)
|
|
180
193
|
|
|
181
194
|
true
|
|
182
195
|
end
|
data/lib/datadog/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: datadog
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.47.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Datadog, Inc.
|
|
@@ -32,7 +32,7 @@ dependencies:
|
|
|
32
32
|
version: '3.5'
|
|
33
33
|
- - ">="
|
|
34
34
|
- !ruby/object:Gem::Version
|
|
35
|
-
version: 3.5.
|
|
35
|
+
version: 3.5.6
|
|
36
36
|
type: :runtime
|
|
37
37
|
prerelease: false
|
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -42,35 +42,35 @@ dependencies:
|
|
|
42
42
|
version: '3.5'
|
|
43
43
|
- - ">="
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 3.5.
|
|
45
|
+
version: 3.5.6
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: libddwaf
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
49
49
|
requirements:
|
|
50
50
|
- - "~>"
|
|
51
51
|
- !ruby/object:Gem::Version
|
|
52
|
-
version: 1.30.0.
|
|
52
|
+
version: 1.30.0.1.0
|
|
53
53
|
type: :runtime
|
|
54
54
|
prerelease: false
|
|
55
55
|
version_requirements: !ruby/object:Gem::Requirement
|
|
56
56
|
requirements:
|
|
57
57
|
- - "~>"
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: 1.30.0.
|
|
59
|
+
version: 1.30.0.1.0
|
|
60
60
|
- !ruby/object:Gem::Dependency
|
|
61
61
|
name: libdatadog
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements:
|
|
64
64
|
- - "~>"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
version:
|
|
66
|
+
version: 46.1.0.1.1
|
|
67
67
|
type: :runtime
|
|
68
68
|
prerelease: false
|
|
69
69
|
version_requirements: !ruby/object:Gem::Requirement
|
|
70
70
|
requirements:
|
|
71
71
|
- - "~>"
|
|
72
72
|
- !ruby/object:Gem::Version
|
|
73
|
-
version:
|
|
73
|
+
version: 46.1.0.1.1
|
|
74
74
|
- !ruby/object:Gem::Dependency
|
|
75
75
|
name: logger
|
|
76
76
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -181,12 +181,15 @@ files:
|
|
|
181
181
|
- ext/libdatadog_api/init.c
|
|
182
182
|
- ext/libdatadog_api/library_config.c
|
|
183
183
|
- ext/libdatadog_api/library_config.h
|
|
184
|
+
- ext/libdatadog_api/otel_thread_context.c
|
|
185
|
+
- ext/libdatadog_api/otel_thread_context.h
|
|
184
186
|
- ext/libdatadog_api/process_discovery.c
|
|
185
187
|
- ext/libdatadog_api/process_discovery.h
|
|
188
|
+
- ext/libdatadog_api/trace_exporter.c
|
|
189
|
+
- ext/libdatadog_api/trace_exporter.h
|
|
186
190
|
- ext/libdatadog_extconf_helpers.rb
|
|
187
191
|
- lib/datadog.rb
|
|
188
192
|
- lib/datadog/ai_guard.rb
|
|
189
|
-
- lib/datadog/ai_guard/api_client.rb
|
|
190
193
|
- lib/datadog/ai_guard/autoload.rb
|
|
191
194
|
- lib/datadog/ai_guard/component.rb
|
|
192
195
|
- lib/datadog/ai_guard/configuration.rb
|
|
@@ -200,16 +203,26 @@ files:
|
|
|
200
203
|
- lib/datadog/ai_guard/contrib/rails/patcher.rb
|
|
201
204
|
- lib/datadog/ai_guard/contrib/ruby_llm/chat_instrumentation.rb
|
|
202
205
|
- lib/datadog/ai_guard/contrib/ruby_llm/integration.rb
|
|
206
|
+
- lib/datadog/ai_guard/contrib/ruby_llm/message_adapter.rb
|
|
203
207
|
- lib/datadog/ai_guard/contrib/ruby_llm/patcher.rb
|
|
208
|
+
- lib/datadog/ai_guard/contrib/ruby_llm/redaction_change_set.rb
|
|
204
209
|
- lib/datadog/ai_guard/evaluation.rb
|
|
205
|
-
- lib/datadog/ai_guard/evaluation/
|
|
210
|
+
- lib/datadog/ai_guard/evaluation/client.rb
|
|
206
211
|
- lib/datadog/ai_guard/evaluation/content_part.rb
|
|
207
212
|
- lib/datadog/ai_guard/evaluation/message.rb
|
|
213
|
+
- lib/datadog/ai_guard/evaluation/message_builder.rb
|
|
208
214
|
- lib/datadog/ai_guard/evaluation/no_op_result.rb
|
|
215
|
+
- lib/datadog/ai_guard/evaluation/outcome.rb
|
|
209
216
|
- lib/datadog/ai_guard/evaluation/request.rb
|
|
217
|
+
- lib/datadog/ai_guard/evaluation/response.rb
|
|
210
218
|
- lib/datadog/ai_guard/evaluation/result.rb
|
|
211
219
|
- lib/datadog/ai_guard/evaluation/tool_call.rb
|
|
212
220
|
- lib/datadog/ai_guard/ext.rb
|
|
221
|
+
- lib/datadog/ai_guard/http_client.rb
|
|
222
|
+
- lib/datadog/ai_guard/metrics/telemetry.rb
|
|
223
|
+
- lib/datadog/ai_guard/redaction.rb
|
|
224
|
+
- lib/datadog/ai_guard/redaction/replacements.rb
|
|
225
|
+
- lib/datadog/ai_guard/redaction/result.rb
|
|
213
226
|
- lib/datadog/appsec.rb
|
|
214
227
|
- lib/datadog/appsec/actions_handler.rb
|
|
215
228
|
- lib/datadog/appsec/actions_handler/serializable_backtrace.rb
|
|
@@ -329,7 +342,6 @@ files:
|
|
|
329
342
|
- lib/datadog/appsec/thread_safe_ref.rb
|
|
330
343
|
- lib/datadog/appsec/trace_keeper.rb
|
|
331
344
|
- lib/datadog/appsec/utils.rb
|
|
332
|
-
- lib/datadog/appsec/utils/hash_coercion.rb
|
|
333
345
|
- lib/datadog/appsec/utils/http.rb
|
|
334
346
|
- lib/datadog/appsec/utils/http/body.rb
|
|
335
347
|
- lib/datadog/appsec/utils/http/body_reader.rb
|
|
@@ -430,6 +442,7 @@ files:
|
|
|
430
442
|
- lib/datadog/core/tag_builder.rb
|
|
431
443
|
- lib/datadog/core/tag_normalizer.rb
|
|
432
444
|
- lib/datadog/core/telemetry/component.rb
|
|
445
|
+
- lib/datadog/core/telemetry/configuration_value.rb
|
|
433
446
|
- lib/datadog/core/telemetry/emitter.rb
|
|
434
447
|
- lib/datadog/core/telemetry/event.rb
|
|
435
448
|
- lib/datadog/core/telemetry/event/app_client_configuration_change.rb
|
|
@@ -522,6 +535,7 @@ files:
|
|
|
522
535
|
- lib/datadog/di/boot.rb
|
|
523
536
|
- lib/datadog/di/capture_expression.rb
|
|
524
537
|
- lib/datadog/di/capture_expression_evaluator.rb
|
|
538
|
+
- lib/datadog/di/capture_expression_evaluator/result.rb
|
|
525
539
|
- lib/datadog/di/capture_limits.rb
|
|
526
540
|
- lib/datadog/di/code_tracker.rb
|
|
527
541
|
- lib/datadog/di/component.rb
|
|
@@ -535,8 +549,11 @@ files:
|
|
|
535
549
|
- lib/datadog/di/el/evaluator.rb
|
|
536
550
|
- lib/datadog/di/el/expression.rb
|
|
537
551
|
- lib/datadog/di/error.rb
|
|
552
|
+
- lib/datadog/di/evaluation_failure.rb
|
|
538
553
|
- lib/datadog/di/extensions.rb
|
|
539
554
|
- lib/datadog/di/fatal_exceptions.rb
|
|
555
|
+
- lib/datadog/di/guardrails_telemetry.rb
|
|
556
|
+
- lib/datadog/di/guardrails_telemetry/reason.rb
|
|
540
557
|
- lib/datadog/di/instrumenter.rb
|
|
541
558
|
- lib/datadog/di/logger.rb
|
|
542
559
|
- lib/datadog/di/preload.rb
|
|
@@ -552,6 +569,7 @@ files:
|
|
|
552
569
|
- lib/datadog/di/redactor.rb
|
|
553
570
|
- lib/datadog/di/remote.rb
|
|
554
571
|
- lib/datadog/di/serializer.rb
|
|
572
|
+
- lib/datadog/di/snapshot_event.rb
|
|
555
573
|
- lib/datadog/di/transport/diagnostics.rb
|
|
556
574
|
- lib/datadog/di/transport/http.rb
|
|
557
575
|
- lib/datadog/di/transport/http/diagnostics.rb
|
|
@@ -572,8 +590,16 @@ files:
|
|
|
572
590
|
- lib/datadog/kit/identity.rb
|
|
573
591
|
- lib/datadog/kit/tracing/method_tracer.rb
|
|
574
592
|
- lib/datadog/open_feature.rb
|
|
593
|
+
- lib/datadog/open_feature/activation.rb
|
|
594
|
+
- lib/datadog/open_feature/agentless/configuration_source.rb
|
|
595
|
+
- lib/datadog/open_feature/agentless/parser.rb
|
|
596
|
+
- lib/datadog/open_feature/agentless/response.rb
|
|
597
|
+
- lib/datadog/open_feature/agentless/transport.rb
|
|
575
598
|
- lib/datadog/open_feature/component.rb
|
|
576
599
|
- lib/datadog/open_feature/configuration.rb
|
|
600
|
+
- lib/datadog/open_feature/configuration/agentless_endpoint.rb
|
|
601
|
+
- lib/datadog/open_feature/configuration/source.rb
|
|
602
|
+
- lib/datadog/open_feature/configuration/source/resolution.rb
|
|
577
603
|
- lib/datadog/open_feature/evaluation_engine.rb
|
|
578
604
|
- lib/datadog/open_feature/exposures/batch_builder.rb
|
|
579
605
|
- lib/datadog/open_feature/exposures/buffer.rb
|
|
@@ -584,6 +610,7 @@ files:
|
|
|
584
610
|
- lib/datadog/open_feature/ext.rb
|
|
585
611
|
- lib/datadog/open_feature/flag_evaluation/aggregator.rb
|
|
586
612
|
- lib/datadog/open_feature/flag_evaluation/writer.rb
|
|
613
|
+
- lib/datadog/open_feature/hooks/evaluation_telemetry_opt_out_hook.rb
|
|
587
614
|
- lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb
|
|
588
615
|
- lib/datadog/open_feature/hooks/flag_eval_metrics_hook.rb
|
|
589
616
|
- lib/datadog/open_feature/hooks/span_enrichment_hook.rb
|
|
@@ -1020,6 +1047,7 @@ files:
|
|
|
1020
1047
|
- lib/datadog/tracing/contrib/sequel/dataset.rb
|
|
1021
1048
|
- lib/datadog/tracing/contrib/sequel/ext.rb
|
|
1022
1049
|
- lib/datadog/tracing/contrib/sequel/integration.rb
|
|
1050
|
+
- lib/datadog/tracing/contrib/sequel/jdbc_connection_string.rb
|
|
1023
1051
|
- lib/datadog/tracing/contrib/sequel/patcher.rb
|
|
1024
1052
|
- lib/datadog/tracing/contrib/sequel/utils.rb
|
|
1025
1053
|
- lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb
|
|
@@ -1093,13 +1121,16 @@ files:
|
|
|
1093
1121
|
- lib/datadog/tracing/distributed/b3_single.rb
|
|
1094
1122
|
- lib/datadog/tracing/distributed/baggage.rb
|
|
1095
1123
|
- lib/datadog/tracing/distributed/datadog.rb
|
|
1096
|
-
- lib/datadog/tracing/distributed/datadog_tags_codec.rb
|
|
1097
1124
|
- lib/datadog/tracing/distributed/fetcher.rb
|
|
1098
1125
|
- lib/datadog/tracing/distributed/helpers.rb
|
|
1099
1126
|
- lib/datadog/tracing/distributed/none.rb
|
|
1100
1127
|
- lib/datadog/tracing/distributed/propagation.rb
|
|
1101
1128
|
- lib/datadog/tracing/distributed/propagation_policy.rb
|
|
1102
1129
|
- lib/datadog/tracing/distributed/trace_context.rb
|
|
1130
|
+
- lib/datadog/tracing/distributed/trace_state.rb
|
|
1131
|
+
- lib/datadog/tracing/distributed/trace_state/datadog.rb
|
|
1132
|
+
- lib/datadog/tracing/distributed/trace_state/ext.rb
|
|
1133
|
+
- lib/datadog/tracing/distributed/trace_state/open_telemetry.rb
|
|
1103
1134
|
- lib/datadog/tracing/event.rb
|
|
1104
1135
|
- lib/datadog/tracing/ext.rb
|
|
1105
1136
|
- lib/datadog/tracing/flush.rb
|
|
@@ -1110,6 +1141,7 @@ files:
|
|
|
1110
1141
|
- lib/datadog/tracing/metadata/metastruct.rb
|
|
1111
1142
|
- lib/datadog/tracing/metadata/metastruct_tagging.rb
|
|
1112
1143
|
- lib/datadog/tracing/metadata/tagging.rb
|
|
1144
|
+
- lib/datadog/tracing/otel_thread_context.rb
|
|
1113
1145
|
- lib/datadog/tracing/pipeline.rb
|
|
1114
1146
|
- lib/datadog/tracing/pipeline/span_filter.rb
|
|
1115
1147
|
- lib/datadog/tracing/pipeline/span_processor.rb
|
|
@@ -1142,13 +1174,19 @@ files:
|
|
|
1142
1174
|
- lib/datadog/tracing/transport/http.rb
|
|
1143
1175
|
- lib/datadog/tracing/transport/http/client.rb
|
|
1144
1176
|
- lib/datadog/tracing/transport/http/statistics.rb
|
|
1177
|
+
- lib/datadog/tracing/transport/http/telemetry.rb
|
|
1145
1178
|
- lib/datadog/tracing/transport/http/traces.rb
|
|
1146
1179
|
- lib/datadog/tracing/transport/io.rb
|
|
1147
1180
|
- lib/datadog/tracing/transport/io/client.rb
|
|
1148
1181
|
- lib/datadog/tracing/transport/io/response.rb
|
|
1149
1182
|
- lib/datadog/tracing/transport/io/traces.rb
|
|
1183
|
+
- lib/datadog/tracing/transport/native.rb
|
|
1184
|
+
- lib/datadog/tracing/transport/native/response.rb
|
|
1185
|
+
- lib/datadog/tracing/transport/native/telemetry.rb
|
|
1150
1186
|
- lib/datadog/tracing/transport/serializable_trace.rb
|
|
1187
|
+
- lib/datadog/tracing/transport/span_events_negotiation.rb
|
|
1151
1188
|
- lib/datadog/tracing/transport/statistics.rb
|
|
1189
|
+
- lib/datadog/tracing/transport/telemetry.rb
|
|
1152
1190
|
- lib/datadog/tracing/transport/trace_formatter.rb
|
|
1153
1191
|
- lib/datadog/tracing/transport/traces.rb
|
|
1154
1192
|
- lib/datadog/tracing/utils.rb
|
|
@@ -1161,8 +1199,8 @@ licenses:
|
|
|
1161
1199
|
- Apache-2.0
|
|
1162
1200
|
metadata:
|
|
1163
1201
|
allowed_push_host: https://rubygems.org
|
|
1164
|
-
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.
|
|
1165
|
-
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.
|
|
1202
|
+
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.47.0/CHANGELOG.md
|
|
1203
|
+
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.47.0
|
|
1166
1204
|
post_install_message: 'JRuby support in the datadog gem is deprecated. Details: https://dtdg.co/jruby-deprecation'
|
|
1167
1205
|
rdoc_options: []
|
|
1168
1206
|
require_paths:
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Datadog
|
|
4
|
-
module AIGuard
|
|
5
|
-
module Evaluation
|
|
6
|
-
# Builder for collecting content parts inside a message block.
|
|
7
|
-
#
|
|
8
|
-
# Used via the block form of {Datadog::AIGuard.message}:
|
|
9
|
-
#
|
|
10
|
-
# Datadog::AIGuard.message(role: :user) do |m|
|
|
11
|
-
# m.text("What's in this image?")
|
|
12
|
-
# m.image_url("https://example.com/img.png")
|
|
13
|
-
# end
|
|
14
|
-
class ContentBuilder
|
|
15
|
-
attr_reader :parts
|
|
16
|
-
|
|
17
|
-
def initialize
|
|
18
|
-
@parts = []
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def text(text)
|
|
22
|
-
@parts << ContentPart::Text.new(text)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def image_url(url)
|
|
26
|
-
@parts << ContentPart::ImageURL.new(url)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Datadog
|
|
4
|
-
module AppSec
|
|
5
|
-
module Utils
|
|
6
|
-
# A module for coercing arbitrary objects into hashes.
|
|
7
|
-
module HashCoercion
|
|
8
|
-
# A best effort to coerce an object to a hash with methods known to various
|
|
9
|
-
# frameworks with a fallback to standard library.
|
|
10
|
-
#
|
|
11
|
-
# @param object [Object] The object to coerce.
|
|
12
|
-
# @return [Hash, nil] The coerced `Hash` or `nil` if the object is not coercible.
|
|
13
|
-
def self.coerce(object)
|
|
14
|
-
return object.as_json if object.respond_to?(:as_json)
|
|
15
|
-
return object.to_hash if object.respond_to?(:to_hash)
|
|
16
|
-
return object.to_h if object.respond_to?(:to_h)
|
|
17
|
-
|
|
18
|
-
nil
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|