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.4.0
Feature: Add Rails.event instrumentation for structured logging
The agent now supports Rails.event as structured log events. When enabled, events published via
Rails.event.notifyare captured and forwarded to New Relic as log events. Event payloads, tags, context, timestamps, and source locations are automatically captured as log attributes.This instrumentation can be configured with the following options:
instrumentation.rails_event_logger- Controls whether Rails.event instrumentation is enabled. Defaults to use the value ofapplication_logging.enabled.instrumentation.rails_event_logger.event_names- An array of specific event names to capture. When empty (default), all Rails.event notifications are captured. Use this to filter events by name, for example:['user.signup', 'payment.processed'].
Feature: Add instrumentation for Rails Active Job Continuations
The agent now instruments Rails Active Job Continuations, providing visibility into individual step execution within long-running jobs. Step names are included in segment metrics (e.g.,
Ruby/ActiveJob/default/MyJob/step/process_records) and step-specific attributes like cursor position, resumed status, and interrupted status are captured. A new configuration option,disable_active_job_step_names, allows users to exclude step names from metric names to reduce metric cardinality if needed (defaults tofalse). PR#3493Feature: Add sidekiq.separate_transactions configuration option
A new configuration option,
sidekiq.separate_transactions, allows Sidekiq jobs executed during a web transaction to run in their own separate transaction. When enabled, this prevents Sidekiq job execution time from being included in web transaction metrics, providing more accurate performance data. The feature is opt-in (default: false) to maintain backward compatibility. This only affects jobs executed during active web transactions; jobs starting independently or nested within other background jobs are unaffected. Issue#3364 PR#3514Bugfix: Update regexes that may have been vulnerable to ReDOS attacks
Previously, the agent had a few regexes identified as possible targets for polynomial time complexity (ReDOS) attacks. Those regexes are now updated to address the concerns. PR#3520
Bugfix: Prevent crashes during HTTPX segment creation
Previously, if
start_external_request_segmentencountered an error and returnednil, the agent would trigger aNoMethodErrorwhen attempting to add headers to the missing segment. We've added a guard check to ensure the instrumentation handles these cases gracefully.Bravo to @thebravoman for the report! Issue#3509 PR#3510
Bugfix: Make Transaction#finish idempotent
Previously, if the Transaction#finish method was called multiple times, more than one transaction could be created for the same operation. Now, a mutex protects calls to Transaction#finish to make sure finish operations only run once. PR#3513
Bugfix: Log deprecation warning for Datastores.wrap API once
Previously, this warning was being logged on every call to Datastores.wrap. Now, it will be logged only on the first call. In addition, the documentation has been updated to note the deprecated status of the second and third callback arguments. Issue#3516 PR#3519
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
Nous vous recommandons de mettre à jour vers la dernière version de l'agent dès qu'elle est disponible. Si vous ne pouvez pas effectuer la mise à niveau vers la dernière version, mettez à jour vos agents vers une version datant de moins de 90 jours. En savoir plus sur la façon de tenir les agents informés.
Consultez la politique EOL de l'agent New Relic Ruby pour obtenir des informations sur la sortie de l'agent et les dates de support.
v10.2.0
Fonctionnalité : Introduction de l'agent hybride pour la prise en charge du traçage OpenTelemetry
Les API de tracing OpenTelemetry peuvent désormais être traduites en télémétrie New Relic grâce aux nouvelles fonctionnalités d'agent hybride de l'agent Ruby New Relic. Cela permet au gem
newrelic_rpmde se comporter de manière similaire à un SDK OpenTelemetry, en acceptant les appels d'API OpenTelemetry et en les transformant en transactions et segments New Relic avec des attributs et des noms familiers.Les options de configuration suivantes concernent les fonctionnalités de l'Agent hybride :
Nom de la configuration Défaut Comportement opentelemetry.enabled falseUne option de configuration globale pour désactiver tous les signaux OpenTelemetry envoyés via New Relic. opentelemetry.traces.enabled truePermet la création de segments de traces de transaction et de métriques de tranche de temps à partir des spans OpenTelemetry. opentelemetry.traces.include ''Une liste de traceurs OpenTelemetry délimitée par des virgules, représentée sous forme de chaîne (par ex. "AppTracer1,OpenTelemetry::Instrumentation::Bunny::Instrumentation"), dont les signaux de trace seront envoyés à New Relic. opentelemetry.traces.exclude ''Une liste de traceurs OpenTelemetry délimitée par des virgules, représentée sous forme de chaîne (par ex. "AppTracer1,OpenTelemetry::Instrumentation::Bunny::Instrumentation"), dont les signaux de trace ne seront pas envoyés à New Relic. Tous les traceurs connus pour l'instrumentation entrant en conflit avec l'instrumentation New Relic sont exclus par défaut. Fonctionnalité : Ajout de l'option de configuration error_collector.backtrace_truncate_location
Une nouvelle option de configuration a été ajoutée,
error_collector.backtrace_truncate_location, qui permet à l'utilisateur de spécifier où tronquer la backtrace lorsque le nombre de frames dépasseerror_collector.max_backtrace_frames. Les options sont'top'(supprime les cadres du début),'middle'(supprime les cadres du milieu, en conservant le début et la fin) ou'end'(supprime les cadres de la fin). La valeur par défaut est'middle'. PR#3424Fonctionnalité : Ajout de l'instrumentation de la gem Logging
L'Agent enregistrera désormais les logs générés par le gem Logging. PR#3420
Fonctionnalité : Ajout de l'option de configuration utilization.detect_in_parallel
Une nouvelle option de configuration a été ajoutée,
utilization.detect_in_parallel, qui contrôle si l'agent utilise des threads lors de la détection des informations sur le fournisseur de cloud afin d'accélérer le démarrage de l'agent. Lorsque défini surfalse, la détection du fournisseur s'exécute séquentiellement sans créer de threads. La valeur par défaut esttrue. 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
Mise à jour de version majeure : Cette version de l’agent Ruby est une mise à jour SemVer MAJOR et contient des modifications importantes. Les versions MAJOR peuvent abandonner la prise en charge des runtimes de langage qui ont atteint la fin de vie selon le mainteneur. De plus, les versions MAJOR peuvent abandonner la prise en charge et supprimer certaines instrumentations. Pour plus de détails sur ces modifications, veuillez consulter le guide de migration ici.
Important
Nous vous recommandons de mettre à jour vers la dernière version de l'agent dès qu'elle est disponible. Si vous ne pouvez pas effectuer la mise à niveau vers la dernière version, mettez à jour vos agents vers une version datant de moins de 90 jours. En savoir plus sur la façon de tenir les agents informés.
Consultez la politique EOL de l'agent New Relic Ruby pour obtenir des informations sur la sortie de l'agent et les dates de support.
v10.0.0
Changement radical : Suppression de la prise en charge de Ruby 2.4 et 2.5
La prise en charge des versions Ruby 2.4 et 2.5 a été supprimée. La nouvelle version minimale requise de Ruby est désormais la 2.6. PR#3314
Changement important : Suppression du Cross Application Tracing (CAT)
Auparavant, le suivi inter-applications (CAT) était obsolète au profit du suivi distribué. La fonctionnalité CAT a maintenant été supprimée. L'option de configuration
cross_application_tracer.enableda été supprimée. Les méthodes d'API publiquesNewRelic::Agent::External.process_request_metadata,NewRelic::Agent::External.get_response_metadata,NewRelic::Agent::Transaction::ExternalRequestSegment#process_response_metadata,NewRelic::Agent::Transaction::ExternalRequestSegment#get_request_metadataetNewRelic::Agent::Transaction::ExternalRequestSegment#read_response_headersont également été supprimées. PR#3333Modification importante : Renommer les métriques et segments ActiveJob
Les métriques ActiveJob ont été mises à jour pour inclure le nom de la classe du job pour des rapports plus spécifiques. Il s'agit d'un changement radical qui peut nécessiter la mise à jour des tableaux de bord ou des alertes personnalisés. PR#3370 PR#3320
- Ancien format :
Ruby/ActiveJob/<QueueName>/<Method> - Nouveau format :
Ruby/ActiveJob/<QueueName>/<ClassName>/<Method>
De plus, les segments créés pour les actions de mise en file d’attente Active Job incluent désormais la classe de travail.
- Ancien format :
ActiveJob/<QueueAdapter>/Queue/<Event>/Named/<QueueName> - Nouveau format :
ActiveJob/<QueueAdapter>/Queue/<Event>/Named/<QueueName>/<ClassName>
- Ancien format :
Changement important : renommer la commande
bin/newrelicenbin/newrelic_rpmLe fichier exécutable pour l'interface de ligne de commande (CLI) de l'agent a été renommé de
bin/newrelicenbin/newrelic_rpm. Ce changement résout un conflit de noms avec l'outil CLI New Relic autonome. PR#3323Changement radical : supprimer la commande CLI
newrelic deploymentsLa commande CLI
newrelic deploymentsobsolète a été supprimée. Pour suivre les changements et les déploiements dans New Relic, veuillez consulter notre guide sur Suivi des changements pour une liste des options disponibles. PR#3299Changement radical : Supprimer la méthode NewRelic::Agent::SqlSampler#notice_sql
Les utilisateurs doivent appeler
NewRelic::Agent::Datastores.notice_sqlà la place. PR#3338Modification importante : Supprimer les arguments inutilisés de diverses API NewRelic::Agent::Datastores
Les API suivantes de la classe
NewRelic::Agent::Datastoresont vu leurs arguments de méthode supprimés :NewRelic::Agent::Datastores.notice_sql, avait auparavant trois arguments de position,query,scoped_metricetelapsed. Maintenant, il n'en a quequery.NewRelic::Agent::Datastores.notice_statement, avait auparavant deux arguments positionnelsqueryetelapsed. Maintenant, il n’a quequery.NewRelic::Agent::Datastores.wrapnécessite une proc. Auparavant, la proc recevait trois arguments : le résultat du yield, le nom de métrique le plus spécifique et le temps écoulé de l'appel. Désormais, elle n'en reçoit qu'un seul : le résultat du yield.
Les valeurs des arguments supprimés sont dérivées du segment actuel au moment de l'appel. PR#3347
Changement radical : Supprimer la fonctionnalité expérimentale Configurable Security Policies (CSP)
La fonctionnalité expérimentale, Configurable Security Policies (CSP), n'est plus prise en charge et a été supprimée. PR#3292
Changement radical : supprimer la prise en charge des versions de Puma '<' 3.9.0
La version minimale de Puma désormais prise en charge est 3.9.0 ou supérieure. PR#3326
Changement important : améliorer la validation et la coercition de la configuration
Les éléments internes utilisés pour contraindre et valider les valeurs fournies pour la configuration de l’agent sont désormais plus performants et plus précis.
- Les messages d'avertissement seront désormais enregistrés dans le fichier newrelic_agent.log lorsque la valeur nil est fournie comme valeur de configuration pour un paramètre qui ne le prend pas en charge.
- Les valeurs entières sont autorisées pour les types de configuration Float
- Les valeurs flottantes sont autorisées pour les types de configuration Integer
- Les interruptions fatales sont évitées lorsqu'une valeur par défaut peut être trouvée pour remplacer une valeur d'entrée non valide PR#3341
Changement important : remplacer l'option 'default' par 'adaptive' pour les échantillonneurs parents distants de tracing distribué
Auparavant, l’option par défaut pour
distributed_tracing.sampler.remote_parent_sampledetdistributed_tracing.sampler.remote_parent_not_sampledétaitdefault, qui utilisait l’échantillonneur adaptatif préexistant. L’optiondefaulta été renomméeadaptive. PR#3363Fonctionnalité : Ajouter
loggeren tant que dépendanceLa gemme
loggerest désormais répertoriée comme dépendance de l'agent pour assurer la continuité de la fonctionnalité de logging et la prise en charge de Ruby 4.0.0 et des versions plus récentes. PR#3293Fonctionnalité : Ajouter une option de configuration de liste d'autorisation de notification de support actif
Une nouvelle option de configuration,
instrumentation.active_support_notifications.active_support_events, permet aux utilisateurs de définir une liste d’autorisation des noms d’événements de notifications Active Support auxquels l’agent doit s’abonner. Par défaut, l’agent s’abonne à tous les événements Active Support : Mise en cache et Active Support : Messages. PR#3327Fonctionnalité : Utiliser la compression Gzip intégrée de Ruby
L’agent utilise désormais la méthode
Zlib.gzipintégrée de la bibliothèque standard Ruby pour la compression, remplaçant l’implémentation personnalisée précédente. PR#3332Fonctionnalité : Ajouter la validation des arguments pour l’API
NewRelic::Agent#record_custom_eventL'API
NewRelic::Agent#record_custom_eventdéclenche désormais uneArgumentErrorlorsqu'unevent_typenon valide est fourni. Un type d'événement valide doit être composé uniquement de caractères alphanumériques, de traits de soulignement (_), de deux-points (:) ou d'espaces (). PR#3319Fonctionnalité : ajouter des options de configuration d'échantillonnage racine
Vous pouvez désormais configurer le comportement d'échantillonnage des traces provenant du service actuel à l'aide de
distributed_tracing.sampler.root. PR#3330Quatre modes sont disponibles :
Mode Description adaptiveUtilise l'algorithme d'échantillonneur adaptatif existant always_offMarque 0 % des traces racines comme échantillonnées always_onMarque 100 % des traces racines comme échantillonnées trace_id_ratio_basedÉchantillonne les traces en fonction d'un ratio défini dans distributed_tracing.sampler.root.trace_id_ratio_based.ratio. Le ratio doit être un nombre à virgule flottante compris entre 0,0 et 1,0Fonctionnalité : ajouter des options d'échantillonnage basées sur le ratio d'ID de trace
L'agent peut désormais échantillonner les traces à l'aide de l'algorithme d'échantillonneur basé sur le ratio d'ID de trace OpenTelemetry. PR#3330 Cela échantillonne les traces en fonction d'une probabilité comprise entre 0,0 et 1,0 basée sur l'ID de trace.
Pour utiliser cette option, vous devez d'abord définir votre configuration d'échantillonneur de suivi distribué sur
trace_id_ratio_based, puis définir l'échantillonneurdistributed_tracing.sampler.*.trace_id_ratio_based.ratiocorrespondant sur un nombre à virgule flottante compris entre 0,0 et 1,0.Par exemple:
distributed_tracing.sampler.remote_parent_sampled: 'trace_id_ratio_based'distributed_tracing.sampler.remote_parent_sampled.trace_id_ratio_based.ratio': 0.5Cette configuration échantillonnerait environ 50 % de vos traces pour toutes les traces où le parent distant est échantillonné.
Cette option est disponible pour :
distributed_tracing.sampler.rootdistributed_tracing.sampler.remote_parent_sampleddistributed_tracing.sampler.remote_parent_not_sampled
Fonctionnalité : Ajouter l'ID d'entité aux fichiers de contrôle de l'état de l'agent
Lorsque l'agent est démarré dans un environnement de contrôle de l'agent, un fichier de vérification de l'état est créé à l'emplacement de fichier configuré pour chaque processus d'agent. Ce fichier inclut désormais le guid de l'entité liée à l'agent lorsqu'il est disponible. PR#3371
Correction de bug : Résoudre un
NoMethodErrordans la détection d'utilisation de GCP.La logique de découverte des métadonnées GCP gérera désormais avec élégance
nilou des valeurs inattendues, empêchant les plantages d'initialisation du service. PR#3388
Important
Nous vous recommandons de mettre à jour vers la dernière version de l'agent dès qu'elle est disponible. Si vous ne pouvez pas effectuer la mise à niveau vers la dernière version, mettez à jour vos agents vers une version datant de moins de 90 jours. En savoir plus sur la façon de tenir les agents informés.
Consultez la politique EOL de l'agent New Relic Ruby pour obtenir des informations sur la sortie de l'agent et les dates de support.
v9.24.0
Fonctionnalité : Rappel de dépréciation pour l’API SqlSampler#notice_sql
La méthode
NewRelic::Agent::SqlSampler#notice_sqlest obsolète et sera supprimée dans une future version majeure. Au lieu de cela, l'utilisateur doit appelerNewRelic::Agent::Datastores.notice_sql. PR#3345fonctionnalité : Avertissement de dépréciation pour les deuxième et troisième arguments de Datastores.notice_sql API
Les deuxième (
scoped_metric) et troisième (elapsed) arguments de la méthodeNewRelic::Agent::Datastores.notice_sqlsont obsolètes. Elles n'ont pas été utilisées par cette méthode depuis un certain temps. Ces valeurs seront plutôt définies en fonction du segment actuel lors de l'appel de l'API. PR#3345fonctionnalité : Avis de dépréciation pour le deuxième argument de Datastores.notice_statement API
Le deuxième argument (
elapsed) de la méthodeNewRelic::Agent::Datastores.notice_statementest obsolète. Cette méthode n'a pas été utilisée depuis un certain temps. Cette valeur sera plutôt définie en fonction du segment actuel lors de l'appel de l'API. PR#3346Fonctionnalité : Avis de dépréciation concernant les deuxième et troisième arguments de la procédure dans l’API Datastores.wrap
La méthode
NewRelic::Agent::Datastores.wrapest en cours de modification. Dans une future version majeure, la procédure n'acceptera qu'un seul argument : le résultat de la fonction yield. Le nom de la métrique à portée et les arguments écoulés seront supprimés, car ils sont supprimés de la méthodeDatastores.notice_sql. Le nom de la métrique et les valeurs écoulées sont dérivés du segment actuel lorsque le retour à la ligne est atteint. 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