Skip to content

1.15.0

Compare
Choose a tag to compare
@github-actions github-actions released this 09 Oct 09:49
· 1352 commits to master since this release
dd533cb

Highlights

Timeline view for Profiler beta

As of ddtrace 1.15.0, the Profiler now supports gathering data for the new Timeline view.

The Timeline view allows you to look at time-based patterns and work distribution over the period of a single profile: you can look at what individual threads were doing, and when 🎉

You can use the timeline view both when looking at individual profiles, as well as when scoped to a given trace.

You can enable it:

  • Using an environment variable by setting DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED=true
  • Or via code by adding to your Datadog.configure block:
Datadog.configure do |c|
  # … existing configuration …
  c.profiling.advanced.experimental_timeline_enabled = true
end

Give it a try, let us know what you think!

(Note: We do not recommend enabling this feature prior to 1.15.0!)

google-protobuf dependency is no longer needed by the Profiler

As of ddtrace version 1.15.0, the google-protobuf gem is no longer needed to enable the Profiler.

If you've added this gem to your Gemfile/gems.rb file as part of enabling the Profiler, you can
remove it now. (If you're curious, we've internally replaced this dependency with the libdatadog gem.)

Configure blocking responses for AppSec via configuration or Remote Configuration

As of dd-trace-rb 1.15.0, AppSec supports configuring the blocking response.

You can configure the blocking response via:

  • Using the ENV variables: DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML=#{file_name}, and DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON=#{file_name}
  • Via code by adding to your Datadog.configure block:
Datadog.configure do |c|
  # … existing configuration …
  c.appsec.block.templates.html = "#{file_name}"
  c.appsec.block.templates.json = "#{file_name}"
end
  • Using the Remote configuration UI. This option allows you to configure the status code and the blocking behaviour. You can redirect malicious attackers to custom pages.
    You can find more information on the official documentation

Configure agentless mode for CI visibility

If you are using CI visibility with a cloud CI provider without access to the underlying worker nodes, such as GitHub Actions or CircleCI, configure the library to use the Agentless mode.

For this, set the following environment variables:

  • DD_CIVISIBILITY_AGENTLESS_ENABLED=true
  • DD_API_KEY=<your_api_key>

Additionally, configure which Datadog site you want to send your data to:

  • DD_SITE (default: datadoghq.com)

You can also enable agentless mode with Datadog.configure block:

Datadog.configure do |c|
  # … existing configuration …
  c.ci.agentless_mode_enabled = true
  # don't forget to set DD_API_KEY env variable!
end

Added

  • Enable allocation counting feature by default for some Ruby 3 versions (#3176)
  • Detect WebMock Cucumber and Rails.env to disable telemetry and remote configuration for development environment (#3065 , #3062 , #3145)
  • Profiling: Import java-profiler PID controller and port it to C (#3190)
  • Profiling: Record allocation type when sampling objects (#3096)
  • Profiling: Include ruby vm type in profiler allocation samples (#3074)
  • Tracing: Support Rack 3 (#3132 )
  • Tracing: Support Opensearch 3 (#3189)
  • Tracing: grpc adds client_error_handler option (#3095)
  • Tracing: Add async option for test_mode configuration (#3158)
  • Tracing: Implements _dd.base_service tag (#3018)
  • Appsec: Allow blocking response template configuration via ENV variables (#2975)
  • Appsec: ASM API security. Schema extraction (#3131, #3166, #3177)
  • Appsec: Enable configuring blocking response via Remote Configuration (#3099)
  • Ci-app: Validate git tags (#3100)
  • Ci-app: Add agentless mode (#3186 )

Changed

  • Appsec: Skip passing waf addresses when the value is empty (#3188)
  • Profiling: Restore support for Ruby 3.3 (#3167)
  • Profiling: Add approximate thread state categorization for timeline (#3162)
  • Profiling: Wire up allocation sampling into CpuAndWallTimeWorker (#3103)
  • Tracing: dalli disable memcached command tag by default (#3171)
  • Tracing: Use first valid extracted style for distributed tracing (#2879 )
  • Tracing: Rename configuration option on_set to after_set (#3107)
  • Tracing: Rename experimental_default_proc to default_proc (#3091)
  • Tracing: Use peer.service for sql comment propagation (#3127)
  • Ci-app: Fix Datadog::CI::Environment to support the new CI specs (#3080)
  • Bump datadog-ci dependency to 0.2 (#3186)
  • Bump debase-ruby_core_source dependency to 3.2.2 (#3163)
  • Upgrade libdatadog 5 (#3169, #3104)
  • Upgrade libddwaf-rb 1.11.0 (#3087 )
  • Update AppSec rules to 1.8.0 (#3140, #3139)

Fixed

  • Profiling: Add workaround for incorrect invoke location when logging gem is in use (#3183)
  • Profiling: Fix missing endpoint profiling when request_queuing is enabled in rack instrumentation (#3109)
  • Appsec: Span tags reporting the number of WAF failed loaded rules (#3106)
  • Tracing: Fix tagging with empty data (#3102)
  • Tracing: Fix rails.cache.backend span tag with multiple stores (#3060)

Removed

  • Profiling: Remove legacy profiler codepath (#3172)
  • Ci-app: Remove CI module and add a dependency on datadog-ci gem (#3128)
  • Tracing: Remove depends_on option from configuration DSL (#3085)
  • Tracing: Remove delegate_to option from configuration DSL (#3086)

Read the full changeset and the release milestone.