Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v10.2.0
Feature: Introduce Hybrid Agent for OpenTelemetry Tracing Support
OpenTelemetry Tracing APIs can now be translated into New Relic telemetry with the New Relic Ruby agent's new Hybrid Agent features. This allows the
newrelic_rpmgem to behave similarly to an OpenTelemetry SDK, accepting OpenTelemetry API calls and turning them into New Relic Transactions and Segments with familiar attributes and names.The following configuration options relate to Hybrid Agent features:
Configuration name Default Behavior opentelemetry.enabled falseA global configuration option for disabling all OpenTelemetry signals sent through New Relic. opentelemetry.traces.enabled trueEnables the creation of Transaction Trace segments and timeslice metrics from OpenTelemetry Spans opentelemetry.traces.include ''A comma-delimited list of OpenTelemetry Tracers, represented as a string (e.g. "AppTracer1,OpenTelemetry::Instrumentation::Bunny::Instrumentation"), that will have their trace signals sent to New Relic. opentelemetry.traces.exclude ''A comma-delimited list of OpenTelemetry Tracers, represented as a string (e.g. "AppTracer1,OpenTelemetry::Instrumentation::Bunny::Instrumentation"), that will not have their trace signals sent to New Relic. All known tracers for instrumentation that conflicts with New Relic instrumentation are excluded by default. Feature: Add configuration option error_collector.backtrace_truncate_location
A new configuration option has been added,
error_collector.backtrace_truncate_location, which allows the user to specify where in the backtrace to truncate when the number of frames exceedserror_collector.max_backtrace_frames. Options are'top'(removes frames from the beginning),'middle'(removes frames from the middle, preserving the beginning and end), or'end'(removes frames from the end). The default is'middle'. PR#3424Feature: Add Logging gem instrumentation
The agent will now record logs generated by the Logging gem. PR#3420
Feature: Add configuration option utilization.detect_in_parallel
A new configuration option has been added,
utilization.detect_in_parallel, which controls whether the agent uses threads when detecting cloud vendor information to speed up agent startup. When set tofalse, vendor detection runs sequentially without creating threads. The default istrue. PR#3439
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v10.1.0
Feature: Add support for forking processes in Parallel gem instrumentation
Parallel gem instrumentation has been added to allow more consistent monitoring in processes forked using the Parallel gem. PR#3405
Feature: Add support for Grape v3.1.0
Grape's release of v3.1.0 introduced changes that were incompatible with the agent's instrumentation, causing issues when collecting transaction names. The agent has been updated to properly extract class names for transaction naming in the updated Grape API structure. PR#3413
Bugfix: Create health check files in forked processes
The agent now properly initializes health check loops after forking, ensuring each process generates its own health check file. This fix also has the effect of correctly including
entity.guidvalues in the health check files. PR#3409 Issue#3408Bugfix: Fix
sidekiq.ignore_retry_errorsThe configuration option
sidekiq.ignore_retry_errors: truewas continuing to report retry errors. The agent now correctly ignores retry errors and only reports when jobs permanently fail. PR#3399
Important
Major Version Update: This version of the Ruby agent is a SemVer MAJOR update and contains breaking changes. MAJOR versions may drop support for language runtimes that have reached End-of-Life according to the maintainer. Additionally, MAJOR versions may drop support for and remove certain instrumentation. For more details on these changes please see the migration guide here.
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v10.0.0
Breaking Change: Remove support for Ruby 2.4 and 2.5
Support for Ruby versions 2.4 and 2.5 has been removed. The new minimum required Ruby version is now 2.6. PR#3314
Breaking Change: Removal of Cross Application Tracing (CAT)
Previously, Cross Application Tracing (CAT) was deprecated in favor of Distributed Tracing. CAT functionality has now been removed. The configuration option
cross_application_tracer.enabledhas been removed. Public API methodsNewRelic::Agent::External.process_request_metadata,NewRelic::Agent::External.get_response_metadata,NewRelic::Agent::Transaction::ExternalRequestSegment#process_response_metadata,NewRelic::Agent::Transaction::ExternalRequestSegment#get_request_metadata, andNewRelic::Agent::Transaction::ExternalRequestSegment#read_response_headershave also been removed. PR#3333Breaking Change: Rename ActiveJob metrics and segments
ActiveJob metrics have been updated to include the job's class name for more specific reporting. This is a breaking change and may require updating custom dashboards or alerts. PR#3370 PR#3320
- Old format:
Ruby/ActiveJob/<QueueName>/<Method> - New format:
Ruby/ActiveJob/<QueueName>/<ClassName>/<Method>
In addition, segments created for Active Job enqueuing actions now include the job class.
- Old format:
ActiveJob/<QueueAdapter>/Queue/<Event>/Named/<QueueName> - New format:
ActiveJob/<QueueAdapter>/Queue/<Event>/Named/<QueueName>/<ClassName>
- Old format:
Breaking Change: Rename
bin/newreliccommand tobin/newrelic_rpmThe executable file for the agent's CLI has been renamed from
bin/newrelictobin/newrelic_rpm. This change resolves a name collision with the standalone New Relic CLI tool. PR#3323Breaking Change: Remove the
newrelic deploymentsCLI commandThe deprecated
newrelic deploymentsCLI command has been removed. To track changes and deployments in New Relic, please see our guide to Change Tracking for a list of available options. PR#3299Breaking Change: Remove the NewRelic::Agent::SqlSampler#notice_sql method
Users should call
NewRelic::Agent::Datastores.notice_sqlinstead. PR#3338Breaking Change: Remove unused arguments from various NewRelic::Agent::Datastores APIs
The following APIs from the
NewRelic::Agent::Datastoresclass have had method arguments removed:NewRelic::Agent::Datastores.notice_sql, previously had three positional arguments,query,scoped_metricandelapsed. Now, it only hasquery.NewRelic::Agent::Datastores.notice_statement, previously had two positional argumentsqueryandelapsed. Now it only hasquery.NewRelic::Agent::Datastores.wraprequires a proc. Previously the proc received three arguments: the result of the yield, the most specific scoped metric name, and the elapsed time of the call. Now, it only receives one: the result of the yield.
The values of the removed arguments are derived from the current segment at the time of the call. PR#3347
Breaking Change: Remove experimental feature Configurable Security Policies (CSP)
The experimental feature, Configurable Security Policies (CSP), is no longer supported and has been removed. PR#3292
Breaking Change: Remove support for Puma versions < 3.9.0
The minimum version of Puma now supported is 3.9.0 or higher. PR#3326
Breaking Change: Improve configuration validation and coercion
The internals used to coerce and validate the values provided for agent configuration are now more performant and more accurate.
- Warning messages will now be logged to the newrelic_agent.log file when nil is provided as a config value for a setting that does not support it.
- Integer values are permitted for Float configuration types
- Float values are permitted for Integer configuration types
- Fatal interruptions are prevented when a default value can be found to replace an invalid input value PR#3341
Breaking Change: Replace 'default' option with 'adaptive' for distributed tracing remote parent samplers
Previously, the default option for
distributed_tracing.sampler.remote_parent_sampledanddistributed_tracing.sampler.remote_parent_not_sampledwasdefault, which used the pre-existing adaptive sampler. Thedefaultoption has been renamed toadaptive. PR#3363Feature: Add
loggeras a dependencyThe
loggergem is now listed as a dependency of the agent to ensure continued logging functionality and support for Ruby 4.0.0 and newer versions. PR#3293Feature: Add Active Support notification allowlist configuration option
A new configuration option,
instrumentation.active_support_notifications.active_support_events, allows users to define an allowlist of Active Support notifications event names for the agent to subscribe to. By default, the agent subscribes to all Active Support: Caching and Active Support: Messages events. PR#3327Feature: Use Ruby's built-in Gzip compression
The agent now uses the built-in
Zlib.gzipmethod from the Ruby standard library for compression, replacing the previous custom implementation. PR#3332Feature: Add argument validation for the
NewRelic::Agent#record_custom_eventAPIThe
NewRelic::Agent#record_custom_eventAPI now raises anArgumentErrorwhen an invalidevent_typeis provided. A valid event type must consist only of alphanumeric characters, underscores (_), colons (:), or spaces (). PR#3319Feature: Add root sampling configuration options
You can now configure the sampling behavior for traces that originate within the current service using
distributed_tracing.sampler.root. PR#3330There are four modes available:
Mode Description adaptiveUses the existing adaptive sampler algorithm always_offMarks 0% of root traces as sampled always_onMarks 100% of root traces as sampled trace_id_ratio_basedSamples traces based on a ratio set in distributed_tracing.sampler.root.trace_id_ratio_based.ratio. The ratio must be float between 0.0 and 1.0Feature: Add Trace ID Ratio Based sampling options
The agent can now sample traces using the OpenTelemetry Trace ID Ratio Based sampler algorithm. PR#3330 This samples traces based on a probability between 0.0 and 1.0 based on the trace ID.
To use this option, you must first set your distributed tracing sampler configuration to
trace_id_ratio_basedand then set the correspondingdistributed_tracing.sampler.*.trace_id_ratio_based.ratiosampler to a Float between 0.0 and 1.0.For example:
distributed_tracing.sampler.remote_parent_sampled: 'trace_id_ratio_based'distributed_tracing.sampler.remote_parent_sampled.trace_id_ratio_based.ratio': 0.5This configuration would sample approximately 50% of your traces for all traces where the remote parent is sampled.
This option is available for:
distributed_tracing.sampler.rootdistributed_tracing.sampler.remote_parent_sampleddistributed_tracing.sampler.remote_parent_not_sampled
Feature: Add Entity GUID to Agent Control health check files
When the agent is started within an Agent Control environment, a health check file is created at the configured file location for every agent process. This file now includes the guid of the entity related to the agent when available. PR#3371
Bugfix: Resolve a
NoMethodErrorin GCP utilization detection.The GCP metadata discovery logic will now gracefully handle
nilor unexpected values, preventing service initialization crashes. PR#3388
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.24.0
Feature: Deprecation reminder for SqlSampler#notice_sql API
The
NewRelic::Agent::SqlSampler#notice_sqlmethod is deprecated and will be removed in a future major version. Instead, users should callNewRelic::Agent::Datastores.notice_sql. PR#3345Feature: Deprecation notice for second and third arguments in Datastores.notice_sql API
The second (
scoped_metric) and third (elapsed) arguments in theNewRelic::Agent::Datastores.notice_sqlmethod are deprecated. They have not been used by the method for some time. Instead, these values will be set based on the current segment when the API is called. PR#3345Feature: Deprecation notice for second argument in Datastores.notice_statement API
The second (
elapsed) argument in theNewRelic::Agent::Datastores.notice_statementmethod is deprecated. It has not been used by the method for some time. Instead, this value will be set based on the current segment when the API is called. PR#3346Feature: Deprecation notice for proc's second and third arguments in Datastores.wrap API
The
NewRelic::Agent::Datastores.wrapmethod is changing. In a future major version, proc will only accept a single argument, the result of the yield. The scoped metric name and elapsed arguments will be removed, as they are being removed from theDatastores.notice_sqlmethod. The scoped metric name and elapsed values are derived from the current segment when the wrap yields. PR#3346
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.23.0
Feature: Add sidekiq.ignore_retry_errors configuration option
A new configuration option,
sidekiq.ignore_retry_errors, has been added to control if Sidekiq job retries are captured. Retry errors are captured by default, but now ifsidekiq.ignore_retry_errorsis set totrue, the agent will ignore exceptions raised during Sidekiq's retry attempts and will only report the error if the job permanently fails. Thank you DonGiulio for recognizing this improvement and contributing a solution. PR#3317Feature: Deprecation notice for recording deployments using Capistrano
Sending application deployment information using a Capistrano recipe is deprecated and will be removed in agent version 10.0.0. For recording deployments, please see our guide to Change Tracking for a list of available options.
Feature: Use remote parent sampling configurations for decisions in more scenarios
Previously, the
distributed_tracing.sampler.remote_parent_sampledanddistributed_tracing.sampler.remote_parent_not_sampledconfiguration options were used for the sampling decision only when thetraceparentandtracestateheaders were present. Now, these configuration options are applied in cases when thetracestateheader is missing and when only thenewrelicheader is available. This change makes distributed trace sampling more consistent and predictable. PR#3306
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.22.0
Feature: One-step instrumentation for Kubernetes
The Kubernetes APM auto-attach automatically instruments applications and manages agent upgrades within Kubernetes deployments. This feature has exited preview and is now generally avaliable. Learn more about Kubernetes auto-attach. PR#2635 PR#3287
Feature: Deprecation notice for Ruby 2.4 and Ruby 2.5
Ruby agent support for Ruby versions 2.4 and 2.5 is deprecated and will be removed in agent version 10.0.0. The new miniumum required Ruby version will become Ruby 2.6 and we will stop testing with Ruby 2.4 and 2.5. PR#3288
Feature: Deprecation notice for the
newrelic deploymentscommandSupport for recording deployments using the
newrelic deploymentscommand is now deprecated and will be removed in agent version 10.0.0.Going forward, there are a number of automated and manual ways ways to record changes in New Relic. Please see our guide to Change Tracking for a list of available options. PR#3262
Feature: Deprecation reminder for cross application tracing
Cross application tracing has been deprecated since major version 8.0.0 of the Ruby agent. We will remove support for it entirely in version 10.0.0 of the agent. PR#3288
Feature: Ensure compatibility with Ruby 3.5 change to Method#source_location
Updated the agent to correctly parse the return value of Method#source_location, which is changing in Ruby 3.5 from a two-element to a five-element array. This change maintains support for older Ruby versions while adding support for the future release. PR#3257
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.21.0
Feature: In Serverless APM mode, use event source name as transaction name prefix
The agent will now use the event source name as a prefix for the transaction name in Serverless APM mode. This will help to better identify the source of the transaction in the New Relic UI. PR#3245
Bugfix: Revert changed logic for how we track the thread the span starts in
This change restores the previous behavior of tracking the thread the span starts in, addressing issues that arose from the updated logic. Thank you @david-zw-liu for bringing this to our attention. PR#3248
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.20.0
Feature: Add ECS Docker ID for Fargate
Previously, the Ruby agent did not record the Docker ID when running in an AWS ECS Fargate environment. The Docker ID will now be recorded correctly. PR#3172
Feature: Add NewRelic::Helper.version_satisfied?
The agent has a new helper method to simplify version comparison.
NewRelic::Helper.version_satisfied?accepts three arguments: a left-side version number, the comparison operator as a string, and a right-side version number. Our thanks go to @kekke-n for this contribution. PR#3182Feature: Add code.stacktrace attribute on datastore spans when duration exceeds configured threshold
The agent will now add the
code.stacktraceattribute to datastore spans when the duration exceeds the configured threshold. The threshold is configured using thetransaction_tracer.stack_trace_thresholdconfiguration option. PR#3220Feature: Consolidate "Unknown" constant values
All references to the various capitalization styles for "Unknown" have been consolidated into two constants:
NewRelic::UNKNOWNandNewRelic::UNKNOWN_LOWER. Thank you, @tsubasa1122, for your contribution! PR#3185Bugfix: Fix Brewfile source links
Previously, the multiverse README's links to the Brewfile were broken. Our thanks go to @emmanuel-ferdman for submitting a PR to fix them! PR#3191
Bugfix: Fix error when using HTTPX 1.5.0
The agent previously encountered an error when using the new HTTPX version 1.5.0. This was due to a change in the way HTTPX stores the response. The agent has been updated to handle this change correctly, and no longer encounters an error when using HTTPX 1.5.0. PR#3203
Bugfix: Bugfixes and improvements to debug level agent logs
Improves the information logged at the debug level by the agent when the agent reads in a configuration source. PR#3221
Bugfix: Fix risk of server-side forgery for Slack workflow script
Internally, we keep track of gems that are released using a GitHub actions workflow that posts updates on Slack. [@odaysec] identified a way we could reduce the risk of server-side forgery for this workflow. Thank you! PR#3184
Bugfix: Replace JSON.load calls with JSON.parse
Generally, JSON.parse is seen as safer than JSON.load. Thank you, @odaysec, for bringing this to our attention! PR#3183 PR#3230
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.19.0
Feature: Add Thread ID as attribute to all spans
The agent will now record the Thread ID as an attribute on each span. PR#3122
Feature: Add support for W3C TraceContext Trace Flag
Previously, the agent would not use the trace flag field of the traceparent header for sampling decisions. This could lead to fragmented traces in the UI. While the default behavior remains unchanged, two new configuration options,
distributed_tracing.sampler.remote_parent_sampledanddistributed_tracing.sampler.remote_parent_not_sampled, have been introduced to allow more control over the way sampling decisions are made. PR#3135Bugfix: Include request.uri in Transaction events by default
The New Relic data dictionary expects Transaction events to have the
request.uriattribute. The Ruby agent now fulfills this expectation. If you would like to excluderequest.urifrom Transaction events, you can do so by settingtransaction_events.attributes.excludeto'request.uri'. PR#3103Bugfix: Fix error in Active Job instrumentation when using perform_all_later
Previously, when Active Job's
perform_all_latermethod was called and the agent was running, aNoMethodErrorwould be raised with the messageundefined method 'queue_name' for nil. The error has been fixed and the name of the segment will reflect the first job in the queue. Our thanks goes to @tan-linx for bringing this to our attention and providing a fix. PR#3110
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.18.0
Feature: Add elasticsearch.capture_cluster_name configuration option
A new configuration option,
elasticsearch.capture_cluster_name, has been added to control capturing Elasticsearch cluster names. Cluster names are captured by default, but can now be disabled as needed. PR#3038Feature: Add support for sidekiq-delay_extensions
Sidekiq delay extensions were removed from Sidekiq in 7.x and are now avaliable through the sidekiq-delay_extensions gem. Thanks to @sobrinho, the agent now has continued support for delay extensions.PR#3056
Feature: Parallelize calls for vendor metadata
Previously, the agent would make calls for vendor metadata in a serial fashion. This could lead to a delay in starting the agent. Now, the agent will make these calls in parallel, reducing the time it takes to start the agent. PR#3094
Bugfix: Prevent a nil segment from causing errors in Net::HTTP instrumentation
When using JRuby, a race condition can happen that causes the segment creation to fail and return
nil. This would cause an error to occur when methods were later called on thenilsegment. These methods will no longer be called if the segment isnil, preventing that error from occurring. PR#3046Bugfix: JRuby multithreading improvements
Added some additional nil checks and mutexes to prevent issues when using the agent on JRuby with multiple threads. Thanks to @NC-piercej for bringing this to our attention Issue#3021 PR#3053
Bugfix: Stop reporting rescued Sidekiq::OverLimit exceptions
When Sidekiq's concurrent rate limiters encounter an
OverLimitexception, Sidekiq typically handles this by re-enqueuing the job. Previously, all occurrences ofSidekiq::OverLimitwere logged as errors in New Relic, even when Sidekiq's middleware resolved the exception. New Relic will no longer report errors that are handled by Sidekiq's own middleware. Thanks to @97jaz for reporting this issue. Issue#3037 PR#3047Bugfix: Protect against nil agents or health checks
In some cases the agent or health checks may be
nilwhen they are called. Safe navigation operators have been added for protection on those occasions. PR#3049Bugfix: Ignore Solid Queue
ThreadError: queue emptyerror message by defaultWhen using the solid_queue gem, the agent previously generated excessive warn-level logs when the queue was empty. The agent now ignores
queue emptyerror messages of theThreadErrorclass by default. This behavior can be adjusted using theerror_collector.ignore_messagesconfiguration option. PR#3060Bugfix: Refactor URI host handling to accommodate downcasing frozen strings
When URI host string was frozen, a FrozenError would be raised when the agent attempted to downcase the host as part of its data normalization process. Now, the update is friendly for frozen strings. Thank you @pedrol3001 for your contribution! PR#3097