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.3.0
Feature: Add database query naming via SQL comments
Database queries can now be explicitly named using SQL comments. Queries can include
/* NewRelicQueryName: CustomName */comments to assign stable names for better tracking and identification. This is especially useful for tracking specific database queries during performance regressions or incidents. PR#3480Feature: Add Semantic Logger instrumentation
The agent now supports Semantic Logger log forwarding and decoration for the
semantic_loggergem versions 4.6.0+. If you were previously using Semantic Logger's built-in New Relic appender, it is recommended to choose one approach to avoid sending duplicate logs. New Relic's Semantic Logger instrumentation can be disabled by settinginstrumentation.semantic_loggertodisabled. PR#3467Thanks to @jdelStrother for providing valuable feedback that helped shape this instrumentation.
Feature: Add new 'ignored_middleware_classes' configuration
A new configuration option,
ignored_middleware_classes, allows users to exclude specific middlewares from instrumentation (ex. Rack::Cors). It defaults to an empty array. Issue#1814 PR#3481Feature: Add new
NewRelic::Agent.add_transaction_log_attributesAPIA new API,
NewRelic::Agent.add_transaction_log_attributes, allows users to add transaction-scoped custom attributes to log events for the current transaction. These attributes will only be applied to logs created within the scope of the current transaction. PR#3472Bugfix: Provide config option to reduce cardinality of ActionCable broadcast metrics
By default, the metrics for ActionCable broadcast method calls include the value of the broadcasting. This value can have very high cardinality. Now, the
:simplify_action_cable_broadcast_metricsconfiguration option allows users to remove the broadcasting value from the metric name. This creates a metric that looks like:Ruby/ActionCable/broadcast. When this configuration option is enabled, the broadcasting value will be added as a span attribute. PR#3463Bugfix: Remove dead 'digest/md5' require for FIPS/FedRAMP compliance
In version 7.1.0 of the agent, MD5 usage was replaced with SHA1 for FIPS compliance (PR). However, the old require for 'digest/md5' was not removed. We have removed the require to help our FIPS/FedRAMP users. Thank you to @ashleyboehs for bringing this to our attention! Issue#3469 PR#3470
Bugfix: Prevent agent from starting during
rails testto avoid shutdown delayPreviously, the agent would cause a ~3 second shutdown delay when running the
rails testcommand. TheRails::Command::TestCommandconstant has been added to the defaultautostart.denylisted_constantslist to prevent the agent from starting during Rails test runs. Thanks to @varyform for bringing this to our attention. PR#3478Bugfix: Fix "Unable to calculate elapsed transaction time" warnings when using Falcon web server
The agent now uses
Fiber.current.object_idinstead ofThread.current.object_idto track transaction state when running under Falcon, preventing collisions from concurrent requests sharing the same thread. Also fixes a "NameError: uninitialized constantAsync::HTTP::VERSION" when using Falcon. Thanks to @97jaz and @gsar for bringing this to our attention. PR#3483Bugfix: Fix typo in harvest.rb causing NoMethodError
A typo in
lib/new_relic/agent/agent_helpers/harvest.rbcaused aNoMethodError: undefined method 'agent' for NewRelic:Module. Thanks to @oakbow for reporting this issue. PR#3484Bugfix: Remove usage of deprecated ObjectSpace._id2ref
The agent now uses an alternative approach instead of the deprecated
ObjectSpace._id2refmethod, eliminating deprecation warnings when running on Ruby 4.0+. PR#3490Bugfix: Fix NoMethoError in Logging instrumentation
Previously, when the Logging gem instrumentation attempted to decorate local logs, it would raise a
NoMethodErrorif it encountered a non-string object. This is now fixed. PR#3501
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