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.9.1
Bugfix: Action Controller instrumentation no longer errors when it can't identify the controller class
When the agent could not identify a request's controller class, it logged
TypeError: no implicit conversion of nil into Stringand thenNoMethodError: undefined method 'finish' for nil, and recorded no data for that request. These transactions are now namedController/(unknown)/<action>and recorded normally. PR#3691Bugfix: Prevent
Parallelworkers from hanging when reporting large payloadsWhen
parallelinstrumentation was enabled,Parallel.each/Parallel.mapwithin_processes:could hang forever. Each worker inherited the pipe write ends the agent registered for its earlier siblings, so those pipes couldn't reach end-of-file, and the agent's pipe listener thread blocked waiting on one of them. Any worker whose data exceeded the operating system pipe buffer then blocked on exit. Now, the agent closes each pipe's write end in the parent right after forking, and the listener no longer blocks on a single pipe while others still have data waiting. Thank you to @yayamochi for reporting this bug. Issue#3680 PR#3688Bugfix: gRPC calls no longer fail on requests from Synthetics monitors
When a request from a Synthetics monitor made a gRPC call, the agent added
X-NewRelic-Syntheticsto the call's metadata. gRPC only allows lowercase metadata keys, so the call raisedArgumentError: 'X-NewRelic-Synthetics' is an invalid header key. The agent now sends the synthetics headers in lowercase. gRPC server transactions also now read the synthetics headers from incoming metadata, so a gRPC service called during a Synthetics check records its trace and Synthetics attributes. PR#3693
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.9.0
Fonctionnalité : profilage continu (aperçu)
Le profilage continu est une nouvelle fonctionnalité qui n’est pas encore disponible pour une utilisation générale. Le code du composant côté agent est désormais présent dans l’agent, mais pour l’utiliser réellement avant la sortie de la disponibilité générale, vous devrez contacter votre représentant commercial New Relic pour rejoindre l’aperçu de manière anticipée.
Le profilage continu échantillonne de manière répétée les call stack Ruby de votre application en cours d’exécution et les signale à New Relic, afin que vous puissiez voir quelles méthodes consomment le plus de temps CPU (ou allouent le plus d’objets) en production, sans ajouter de code à votre application.
Pour l’activer, ajoutez les gems
stackprofetgoogle-protobufauGemfilede votre application, puis définissezprofiling.enabledsurtrue:profiling.enabled: trueAvec seulement
profiling.enableddéfini, l’agent échantillonne le temps CPU toutes les 10 millisecondes pendant toute la durée de vie du processus. Ces options vous permettent d’ajuster ce comportement :Nom de la configuration Défaut Comportement profiling.enabled falseSi true, l’agent collecte et signale les données de profilage continu.profiling.include cpuCe qu’il faut échantillonner : cpupour le temps CPU, ouobjectpour les allocations d’objets.profiling.sample_period 0.01Secondes entre les échantillons de stack. Utilisé uniquement lorsque profiling.includeestcpu. Doit être compris entre 0,000001 et 0,999999.profiling.object_allocation_interval 10000Allocations d’objets entre les échantillons de stack. Utilisé uniquement lorsque profiling.includeestobject. Doit être compris entre 1000 et 999 999.profiling.delay 0Millisecondes à attendre avant que le profilage ne commence. 0démarre immédiatement.profiling.duration 0Millisecondes à profiler avant de s’arrêter automatiquement. 0profile jusqu’à ce que le processus se termine.Fonctionnalité : Ajout de la prise en charge de Dalli 5.1.1
Dalli 5.1.1 a ajouté des arguments à certaines des méthodes que l’agent instrumente, ce qui pourrait déclencher une
ArgumentErrorsur les opérations à clés multiples ou entraîner l’abandon silencieux des options de requête. Désormais, l’agent accepte et transmet un nombre variable d’arguments positionnels et de mots-clés pour ces méthodes. PR#3683
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.8.0
Fonctionnalité : signaler un nom d’hôte unique pour les Worker Pools et les Jobs Google Cloud Run
La prise en charge du nom d’hôte Cloud Run, ajoutée dans la PR n° 3609, détectait Cloud Run uniquement via
K_REVISION, la variable d’environnement définie par les Services Cloud Run. L’agent reconnaît désormais égalementCLOUD_RUN_REVISION(Worker Pools) etCLOUD_RUN_EXECUTION(Jobs), de sorte queutilization.gcp_cloud_run.use_instance_as_hosts’applique désormais aux trois types de ressources. Lorsqueutilization.gcp_cloud_run.include_revision_in_hostesttrue, le nom d’hôte est construit à partir de celle de ces variables qui est présente, par exemple,{CLOUD_RUN_EXECUTION}-{instance id}pour un Job. Problème n° 3651 PR n° 3652Fonctionnalité : ajouter l’option de configuration
browser_monitoring.versionLes clients peuvent désormais épingler la version exacte du chargeur de l’agent de navigateur que New Relic injecte en définissant la nouvelle option de configuration
browser_monitoring.version. Consultez la politique de fin de vie de l’agent de navigateur pour connaître les versions actuellement disponibles et prises en charge. PR#3663Fonctionnalité : ajouter span.kind aux bibliothèques de tâches en arrière-plan
Désormais, l’attribut
span.kindsera ajouté aux opérationsproduceetconsumedes bibliothèques de tâches en arrière-plan. Cela inclut ActiveJob, Sidekiq, Resque, et DelayedJob. PR#3636Correction de bug : l’instrumentation DelayedJob ne se réinstalle plus sur chaque worker en mode prepend
Lorsque l’instrumentation DelayedJob est installée via prepend (par défaut), la création de plus d’un
Delayed::Workerdans le même processus amenait l’agent à écrire dans le log « Installing DelayedJob instrumentation » et à réinitialiser le plug-in pour chaque worker supplémentaire. Cela était inoffensif mais bruyant ; cela n’est désormais effectué qu’une seule fois par processus, ce qui correspond au comportement existant de l’instrumentation de chaîne. PR#3654Correction de bug : les valeurs de configuration autorisées ne sont plus sensibles à la casse
Auparavant, les options de configuration sur liste d’autorisation nécessitaient une correspondance exacte de la casse, de sorte qu’une valeur avec une casse inattendue, comme
OBFUSCATEDouObFuScAtEdpourslow_sql.record_sql, revenait silencieusement à la valeur par défaut. Les options de configuration validées par une liste d’autorisation correspondent désormais aux valeurs indépendamment de la casse, de sorte que les deux sont traitées de la même manière queobfuscated. Problème n° 3613 PR n° 3645Correction de bug : l’instrumentation Puma fonctionne lorsque Puma est chargé de manière différée
Avec
gem "puma", require: false, Puma n’était pas encore chargé lors de l’exécution de la vérification de dépendance de l’agent, l’instrumentation de Puma ne parvenait donc pas à s’installer. L’agent reconnaît désormaisPuma::RackHandlercomme preuve de la présence de Puma, ce qui résout ce problème. Issue#3641 PR#3650
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.7.1
Correction de bug : résolution de ArgumentError sur les opérations à clés multiples avec Dalli 5.1.0
Ce correctif met à jour l’instrumentation de Dalli pour accepter et transférer les arguments d’options de requête facultatifs dans les opérations multi et pipeline. Nos remerciements vont à @dbackeus pour avoir apporté un correctif ! PR#3642
Correction de bug : les requests Async::HTTP ne lèvent plus
NoMethodErrorlorsqu'un segment ne parvient pas à démarrerSi l'agent rencontrait une erreur interne lors de la création du segment pour une requête
Async::HTTP, l'instrumentation continuait à utiliser ce segment manquant et pouvait lever uneNoMethodError. C'est désormais corrigé, merci à @ydah. PR#3640
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.7.0
Fonctionnalité : ajouter transaction_tracer.cap_segment_artifacts option de configuration
Les transactions de longue durée avec de nombreux segments peuvent entraîner une augmentation continue de l’utilisation de la mémoire pendant toute la durée de vie de la transaction. L’agent propose désormais une option de configuration
transaction_tracer.cap_segment_artifactsfacultative (la valeur par défaut estfalse). Lorsqu’elle est activée, une fois quetransaction_tracer.limit_segmentsest atteint, l’agent arrête également d’enregistrer le temps exclusif pour tous les segments créés par la suite dans cette transaction, ce qui réduit l’utilisation de la mémoire au prix de données temporelles moins précises pour la transaction. PR#3615Fonctionnalité : ajout de l'instrumentation des statistiques du serveur Puma
L’agent échantillonne désormais les statistiques du serveur à l’échelle du cluster de Puma et les signale sous forme de métriques de tranche de temps
Ruby/Puma/*, notammentbacklog,running,pool_capacity,max_threadsetrequests_count. Les statistiques sont échantillonnées en mode unique et en mode cluster lorsquepreload_app!est activé. Cette instrumentation est désactivée par défaut. Activez-la en définissantdisable_puma_instrumentationsurfalse. Lorsqu’elle est activée, l’agent démarre un thread de rapport dans le processus maître Puma pour fournir ces métriques, ce qui exécute une connexion d’agent supplémentaire aux côtés des workers Puma. L’intervalle d’échantillonnage est configurable via le nouveau paramètrepuma.sample_rate(60 secondes par défaut). Nécessite Puma 6.6 ou une version ultérieure. Consultez notre documentation pour plus d’informations. PR#3578Fonctionnalité : signaler un nom d’hôte unique pour les instances Google Cloud Run
L’agent détecte désormais Cloud Run et signale l’ID d’instance GCP en tant que nom d’hôte afin de pouvoir distinguer chaque instance. Avant cette modification, tous les noms d’hôte Google Cloud Run étaient
localhost. Cette fonctionnalité est contrôlée par la nouvelle option de configurationutilization.gcp_cloud_run.use_instance_as_host(par défauttrue). Définissezutilization.gcp_cloud_run.include_revision_in_host(par défautfalse) surtruepour signaler le nom d’hôte en tant que{K_REVISION}-{instance id}à la place, oùK_REVISIONest le nom de révision Cloud Run. Problème n° 3295 PR n° 3609Correction de bug : le SQL lent n'est plus enregistré après transaction_tracer.limit_segments dépassé
Une fois qu'une transaction a dépassé
transaction_tracer.limit_segments, les segments de datastore créés par la suite pouvaient toujours voir leur SQL lent enregistré. L'agent arrête désormais d'enregistrer le SQL lent pour tout segment créé après que la limite est atteinte. PR#3615Correction de bug : les plans d’exécution pouvaient cibler la mauvaise base de données dans les applications Rails multi-bases de données (Rails >= 7.2)
Sur Rails 7.2+, l’agent recueillait les plans d’exécution à l’aide d’une connexion provenant du pool par défaut/partagé de l’application plutôt que d’une connexion dédiée. Cela a principalement affecté les applications multi-bases de données. Les plans d’exécution pouvaient être générés sur la mauvaise base de données, et un échec d’exécution pouvait laisser une connexion partagée dans un mauvais état, affectant des requests non liées. L’agent utilise désormais sa propre connexion dédiée pour les plans d’exécution, comme il le faisait avant Rails 7.2, et réinitialise ou supprime cette connexion chaque fois qu’une tentative d’exécution échoue, de sorte qu’une mauvaise connexion n’est jamais réutilisée. Problème n° 3610 PR n° 3612
Correction de bug : l'instrumentation du monitoring de navigateurs n'échoue plus avec
FrozenErrorLorsqu’un premier fragment du corps de la réponse était un
Stringgelé et qu’il y avait plusieurs fragments, l’instrumentation du navigateur rencontrait unFrozenErroret l’en-tête de synchronisation du navigateur n’était jamais injecté. Cela a commencé à apparaître avecERB6.0.3+, qui a commencé à geler davantage de ses chaînes compilées. Ce problème est maintenant résolu. Issue#3624 PR#3625Correction de bug : normaliser les valeurs de configuration booléennes pour autoriser toutes les casses
Dans la version 9.x, l'agent acceptait les valeurs booléennes en majuscules, comme « FALSE », et les valeurs à casse mixte comme « True ». La version 10.0.0 incluait la PR#3341, qui a supprimé involontairement l'exigence d'insensibilité à la casse. Cela a conduit les utilisateurs qui avaient une casse autre que des minuscules à voir leurs options de configuration revenir aux valeurs par défaut. Désormais, l’agent utilise à nouveau des vérifications insensibles à la casse. Issue#3632 PR#3633
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.6.0
Feature: SpanLink events are now supported for the Hybrid agent
Spans created by an OpenTelemetry API can now have Span Links associated with them. Links can be added on a span's start, by passing them to the
linksargument, or by calling theOpenTelemetry::Trace::Span#add_linkAPI. PR#3586Feature: SpanEvent events are now supported for the Hybrid agent
Spans created by an OpenTelemetry API can now have SpanEvent events associated with them via the
OpenTelemetry::Trace::Span#add_eventAPI. SpanEvent events capture timestamped annotations on a span and are sent to New Relic alongside the parent span. PR#3587Feature: Set span kind on all Hybrid agent spans
Previously, only OpenTelemetry spans translated into external request segments or datastore segments added span kind as an attribute. Now, the agent adds span kind to all OpenTelemetry spans where the value is available. PR#3589
Feature: Add support for OpenTelemetry::Tracer#start_root_span
The
OpenTelemetry::Tracer#start_root_spanAPI can now be used to force a transaction to start for a given span, provided it has a:serveror:consumerspan kind. For any other span kinds, it will no-op. This method is most commonly used in background job instrumentation. PR#3588Bugfix: Fix
instrumentation.rails_event_logger: falsenot disabling the instrumentationPreviously, setting
instrumentation.rails_event_loggertofalsedidn't disable theRails.eventinstrumentation as expected; it would still be installed during Rails boot. This is now fixed. PR#3564Bugfix: Normalize boolean-like values to
disabledfor instrumentation config keysPreviously, only
disabledwould turn off aninstrumentation.*config key. Now, boolean-like values such asfalse,no, oroffalso resolve todisabledand prevent the instrumentation from being installed. PR#3579Bugfix: Per-library logging supportability metrics now reflect each library's instrumentation state
Previously, the
Supportability/Logging/Ruby/{library}/{enabled|disabled}metrics reported the value of the globalapplication_logging.enabledsetting for every library, rather than each library's actual state. As a result, the metric reportedenabledeven when you had disabled logging instrumentation for a specific library or weren't using that library's gem at all. Now, each library's metric reflects whether its own logging instrumentation is enabled. PR#3571