Notes
This release of the Python agent adds Python 3.14 support, new environment variables for attribute filter settings, support for async generators in transaction decorators, additional models in AWS Bedrock, and new methods in AWS Kinesis. This release also fixes a bug in aiomysql which caused RecursionError when using ConnectionPool where it was wrapped multiple times, a bug where properties were not properly passed in kombu's producer, and an error when shutdown_agent is called from within the harvest thread.
Install the agent using easy_install/pip/distribute via the Python Package Index, using conda via the Conda-Forge Package Index, or download it directly from the New Relic download site.
Features
Add support for Python 3.14
- Add support for Python 3.14.
Add environment variables for attribute filters settings
The following settings now have the option to be set through environment variables:
Configuration Setting Environment variable attributes.enabledNEW_RELIC_ATTRIBUTES_ENABLEDattributes.excludeNEW_RELIC_ATTRIBUTES_EXCLUDEattributes.includeNEW_RELIC_ATTRIBUTES_INCLUDEbrowser_monitoring.attributes.enabledNEW_RELIC_BROWSER_MONITORING_ATTRIBUTES_ENABLEDbrowser_monitoring.attributes.excludeNEW_RELIC_BROWSER_MONITORING_ATTRIBUTES_EXCLUDEbrowser_monitoring.attributes.includeNEW_RELIC_BROWSER_MONITORING_ATTRIBUTES_INCLUDEerror_collector.attributes.enabledNEW_RELIC_ERROR_COLLECTOR_ATTRIBUTES_ENABLEDerror_collector.attributes.excludeNEW_RELIC_ERROR_COLLECTOR_ATTRIBUTES_EXCLUDEerror_collector.attributes.includeNEW_RELIC_ERROR_COLLECTOR_ATTRIBUTES_INCLUDEspan_events.attributes.enabledNEW_RELIC_SPAN_EVENTS_ATTRIBUTES_ENABLEDspan_events.attributes.excludeNEW_RELIC_SPAN_EVENTS_ATTRIBUTES_EXCLUDEspan_events.attributes.includeNEW_RELIC_SPAN_EVENTS_ATTRIBUTES_INCLUDEtransaction_events.attributes.enabledNEW_RELIC_TRANSACTION_EVENTS_ATTRIBUTES_ENABLEDtransaction_events.attributes.excludeNEW_RELIC_TRANSACTION_EVENTS_ATTRIBUTES_EXCLUDEtransaction_events.attributes.includeNEW_RELIC_TRANSACTION_EVENTS_ATTRIBUTES_INCLUDEtransaction_segments.attributes.enabledNEW_RELIC_TRANSACTION_SEGMENTS_ATTRIBUTES_ENABLEDtransaction_segments.attributes.excludeNEW_RELIC_TRANSACTION_SEGMENTS_ATTRIBUTES_EXCLUDEtransaction_segments.attributes.includeNEW_RELIC_TRANSACTION_SEGMENTS_ATTRIBUTES_INCLUDEtransaction_tracer.attributes.enabledNEW_RELIC_TRANSACTION_TRACER_ATTRIBUTES_ENABLEDtransaction_tracer.attributes.excludeNEW_RELIC_TRANSACTION_TRACER_ATTRIBUTES_EXCLUDEtransaction_tracer.attributes.includeNEW_RELIC_TRANSACTION_TRACER_ATTRIBUTES_INCLUDE
Add support for async generators in transaction decorators
- Previously, transaction decorators did not support being wrapped around async generators. This support has been added, and async generator transactions will now automatically measure event loop wait time and other statistics.
Add support for additional models in AWS Bedrock instrumentation
Updates AWS Bedrock instrumentation through botocore and aiobotocore to support the following additional models
- Claude Sonnet 3+ models
- Models that are prefixed with a region (region-aware)
Add instrumentation for new Kinesis methods
- Adds botocore instrumentation to support new AWS Kinesis methomethods
describe_account_settingsupdate_account_settingsupdate_max_record_sizeupdate_stream_warm_throughput
- Adds botocore instrumentation to support new AWS Kinesis methomethods
Bug fixes
Prevent a RecursionError in aiomysql ConnectionPool
- Previously, a
RecursionErrorwould be raised in aiomysql when using pooled connections. DeepObjectProxychains were created around pooled connections due to repeated wrapping. This has been fixed.
- Previously, a
Fixed a bug where properties were not properly passed in kombu's producer
- Fixed a bug where instrumentation for
kombu.messaging.Producer.publish()was causing properties to accidentally be nested inside of the dictionary, causing the properties to be in the wrong spot and not read by downstream packages.
- Fixed a bug where instrumentation for
Fix error when
shutdown_agentis called from within the harvest thread- Previously, a
RuntimeErrorcould occur whenshutdown_agentwas called from within the harvest thread. This fixes that issue by adding a guard to prevent the crash.
- Previously, a
Support statement
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 Python agent EOL policy for information about agent releases and support dates.
Remarques
Cette sortie de l'agent Python fournit des correctifs pour l'activation précoce dans l'instrumentation Django, les remplacements côté serveur pour max_samples_stored ignorés et les protections contre les plantages de trace_cache.pop().
Installez l'agent à l'aide de easy_install/pip/distribute via l' index du packagePython ou téléchargez-le directement depuis le site de téléchargement de New Relic.
Débogage
Empêche l'activation précoce dans l'instrumentation Django
- Supprimez les appels à
application_settings()dans l'instrumentation Django pour éviter les problèmes liés aux activations précoces dans les applications pré-fork.
- Supprimez les appels à
Résoudre les problèmes de synchronisation de la configuration du serveur avec la configuration locale
- Cela corrige un bug créé lorsque les paramètres
event_harvest_config.harvest_limits.*étaient obsolètes au profit des paramètres*.max_samples_stored. Certaines configurations côté serveur ne remplaçaient pas la configuration côté client, ce qui entraînait l'envoi de données au collecteur malgré la désactivation de cette fonction par l'utilisateur.
- Cela corrige un bug créé lorsque les paramètres
Protégez-vous contre les accidents de
trace_cache.pop()- Dans la classe
ContextOf, il y a eu un accès non sécurisé detrace_cacheviapop(key)sans valeur par défaut. Cela a provoqué des plantages lorsque leweakrefdans le dictionnaire était déjà récupéré par le garbage collector.
- Dans la classe
Déclaration de soutien
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 Python de New Relic pour obtenir des informations sur la sortie de l'agent et les dates de support.
Remarques
Prudence
Cette version de l'agent a été retirée.
Cette sortie de l'agent Python apporte les modifications suivantes :
- Supprime la prise en charge de Python 3.7
- Supprime et/ou déprécie diverses API et paramètres
- Obsolète l'instrumentation aioredis
- Augmente la version minimale prise en charge de
setuptoolsetsetuptools_scm - Ajoute une nouvelle instrumentation pour AutoGen
- Ajoute une nouvelle instrumentation pour Pyzeebe
- Ajoute de nouveaux MCP (Model Context Protocol) nommés spans
- Corrige un crash dans psycopg
- Garantit que les étendues MCP ne sont enregistrées que lorsque monitoring de l'IA est activée
Installez l'agent à l'aide de easy_install/pip/distribute via l' index du packagePython ou téléchargez-le directement depuis le site de téléchargement de New Relic.
Fonctionnalité supprimée
Supprime la prise en charge de Python 3.7
- Python 3.7 a pris fin le 27 juin 2023. L'agent Python n'en prend plus en charge.
Supprime diverses API obsolètes
Les API suivantes ont été supprimées :
API héritée API de remplacement accept_distributed_trace_payloadaccept_distributed_trace_headersadd_custom_parameteradd_custom_attributeadd_custom_parametersadd_custom_attributescreate_distributed_trace_payloadinsert_distributed_trace_headersget_browser_timing_footerLa fonctionnalité de ceci a été intégrée dans get_browser_timing_header()record_exceptionnotice_error()NewRelicLogHandlerNewRelicLogForwardingHandlerlambda_handler&LambdaHandlerWrapperCes API ont été déplacées vers le package newrelic-lambda.
Supprime divers paramètres obsolètes
Les paramètres suivants ont été supprimés :
héritage Réglage Paramètre de remplacement transaction_tracer.capture_attributestransaction_tracer.attributes.enablederror_collector.capture_attributeserror_collector.attributes.enabledbrowser_monitoring.capture_attributesbrowser_monitoring.attributes.enabledanalytics_events.enabledtransaction_events.enabledanalytics_events.capture_attributestransaction_events.attributes.enablederror_collector.ignore_errorserror_collector.ignore_classesstrip_exception_messages.whiteliststrip_exception_messages.allowlistsslCeci est désormais codé en dur sur true, il a donc été supprimé en tant qu'option de paramètre.ignored_paramsUtilisez plutôt newrelic.attributes.exclude = request.parameters.{name}. Ajoutez chaque clé de paramètre de demande à la listenewrelic.attributes.exclude, délimitée par des virgules. Assurez-vous de préfixer la clé avecrequest.parameters.agent_limits.merge_stats_maximumCeci est désormais complètement ignoré au profit de la configuration côté serveur.
Fonctionnalité obsolète
L'instrumentation pour aioredis est obsolète
Supprime certains paramètres de récolte existants pour correspondre à d'autres agents de langage
Afin d'être plus cohérent avec les conventions des autres agents de langage, les paramètres de récolte suivants sont désormais obsolètes :
héritage Réglage Paramètre de remplacement event_harvest_config.harvest_limits.analytic_event_datatransaction_events.max_samples_storedevent_harvest_config.harvest_limits.span_event_dataspan_events.max_samples_storedevent_harvest_config.harvest_limits.error_event_dataerror_collector.max_event_samples_storedevent_harvest_config.harvest_limits.custom_event_datacustom_insights_events.max_samples_storedevent_harvest_config.harvest_limits.log_event_dataapplication_logging.forwarding.max_samples_storedIl s'agit d'une annulation d'une modification précédente qui a renommé ces paramètres de
*.max_samples_storedau formatevent_harvest_config.harvest_limits.*. Cette décision a été annulée et les noms des paramètres d'origine ont été restaurés pour correspondre aux autres agents linguistiques qui n'ont pas modifié ces noms de paramètres. Les paramètres obsolètes continueront de fonctionner pour le moment, mais ils seront supprimés lors d'une prochaine sortie.
Désapprouve la configuration de l'agent via le dictionnaire d'environnement WSGI
Les paramètres suivants, qui pouvaient auparavant être configurés via le dictionnaire d'environnement WSGI, sont désormais obsolètes. Veuillez configurer ces paramètres via des variables d'environnement ou le fichier de configuration.
newrelic.set_background_tasknewrelic.suppress_apdex_metricnewrelic.suppress_transaction_tracenewrelic.capture_request_paramsnewrelic.disable_browser_autorum
Supprime la prise en charge de la création de l'agent avec
setuptools<61.2ousetuptools_scm<6.4- Les versions minimales prises en charge de
setuptoolsetsetuptools_scmont été augmentées à61.2et6.4respectivement. Ceci permet de prendre en charge l'utilisation depyproject.tomlpour configurer les métadonnées du package et les instructions de construction. L'agent peut désormais être construit avec des outils de construction plus modernes qui n'enregistreront plus les avertissements concernant l'absence d'un fichierpyproject.toml. - Cette modification ajoute un nouvel attribut de version au package,
newrelic.__version__etnewrelic.__version_tuple__, qui peut être utilisé pour vérifier par programmation la version de l'agent au moment de l'exécution.
- Les versions minimales prises en charge de
Nouvelles fonctionnalités
Ajoute une nouvelle instrumentation pour AutoGen
- Ajoute une instrumentation (étendues nommées et événement
Llmpersonnalisé) pour les agents et les outils dans AutoGen
- Ajoute une instrumentation (étendues nommées et événement
Ajoute une nouvelle instrumentation pour Pyzeebe
- Ajoute une instrumentation automatique et un attribut d'agent spécifique frameworkpour Pyzeebe
Ajoute de nouveaux MCP (Model Context Protocol) nommés spans
- Ajoute de nouvelles étendues nommées pour les appels d'outils MCP (Model Context Protocol) effectués via le gestionnaire d'outils pour prendre en charge Streamable HTTP
Débogage
Corrige un crash dans
psycopg>=3.2.0lors de l'appelas_string()- Corrige un problème dans
psycopg>=3.2.0où la méthodeas_string()ne nécessitait plus d'arguments, provoquant un plantage potentiel. Ce problème a été corrigé et les deux signatures de cette méthode sont prises en charge.
- Corrige un problème dans
Garantit que les étendues MCP (Model Context Protocol) ne sont enregistrées que lorsque monitoring de l'IA est activée
- Garantit que les étendues MCP (Model Context Protocol) ne sont enregistrées que lorsque le paramètre
ai_monitoring.enabledest activé.
- Garantit que les étendues MCP (Model Context Protocol) ne sont enregistrées que lorsque le paramètre
Déclaration de soutien
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 Python de New Relic pour obtenir des informations sur la sortie de l'agent et les dates de support.
Remarques
Cette sortie de l'agent Python ajoute la prise en charge des éléments suivants :
- Tâches personnalisées dans Celery
- Monitoringde Graphene-Django
- Filtrage middleware dans Django
- API AWS Bedrock Converse
- Indicateur d'échantillon d'en-tête W3CTraceParent
Cette sortie fournit également les correctifs suivants :
- Garanties pour le chemin unique le plus profond dans GraphQL
- Mesures de protection pour l'analyse des requêtes d'URL Web
- Recours à ElasticSearch et GraphQL lorsque
trace.settings==None - Supprimer la méthode
optionsde la liste des clients ElasticSearch asynchrones
Installez l'agent à l'aide de easy_install/pip/distribute via l' index du packagePython ou téléchargez-le directement depuis le site de téléchargement de New Relic.
Nouvelles fonctionnalités
Ajoute la prise en charge des tâches personnalisées dans Celery
- Ajoutez la prise en charge monitoring pour les classes de tâches personnalisées dans Celery. Auparavant, seules les tâches utilisant la classe de tâches par défaut pouvaient être monitorées. Remarque : cette version de l'agent Python ne prendra plus en charge les versions de Celery inférieures à la version 5.2.0.
Ajoute la prise en charge de Graphene-Django
- Ajoutez la prise en charge monitoring pour les schémas synchrones créés avec Graphene-Django. Auparavant, les schémas créés avec Graphene-Django n'étaient que partiellement monitorés, ce qui entraînait l'absence d'attributs liés GraphQL.
Ajoute la prise en charge du filtrage middleware dans Django
Les utilisateurs sont désormais en mesure de filtrer le middleware Django à monitorer. Il existe désormais trois paramètres supplémentaires:
instrumentation.middleware.django.enabled(La valeur par défaut esttrue)instrumentation.middleware.django.excludeinstrumentation.middleware.django.include
Consultez la page Filtrage du middleware Django pour plus d’informations et d’exemples.
Ajoute la prise en charge de l'API AWS Bedrock Converse
- Ajoutez la prise en charge monitoring pour l'API Converse non diffusée en continu. Cela inclut la prise en charge des appels de fin de discussion
converseeffectués à l'aide des clientsboto3etaioboto3.
- Ajoutez la prise en charge monitoring pour l'API Converse non diffusée en continu. Cela inclut la prise en charge des appels de fin de discussion
Ajoute la prise en charge de l'indicateur d'échantillonnage de l'en-tête W3CTraceParent
- Lorsqu'un service en amont envoie l'en-tête W3CTraceParent avec l'indicateur d'échantillonnage défini, New Relic prendra en compte cette décision d'échantillonnage pour décider si la transaction en cours sera échantillonnée.
Ajout de la prise en charge des décisions d'échantillonnage en fonction de l'échantillonnage du parent distant
Ajout de la prise en charge de deux nouvelles options de configuration :
distributed_tracing.sampler.remote_parent_sampleddistributed_tracing.sampler.remote_parent_not_sampled
defaultest le comportement par défaut et se comporte comme avant ce changement (il transmet la décision d'échantillonnage à l'algorithme d'échantillonnage adaptatif pour déterminer si la transaction sera échantillonnée).always_onsignifie que la trace qui a un parent distant échantillonné ou un parent distant non échantillonné sera toujours échantillonnée.always_offsignifie que la trace qui a un parent distant échantillonné ou un parent distant non échantillonné ne sera jamais échantillonnée.
Débogage
Ajouter une protection pour le chemin unique le plus profond dans GraphQL
- Certains utilisateurs rencontraient des problèmes avec le chemin unique le plus profond dans GraphQL qui n'était pas généré en raison d'un nom de champ renvoyant
None. Ce problème a été résolu.
- Certains utilisateurs rencontraient des problèmes avec le chemin unique le plus profond dans GraphQL qui n'était pas généré en raison d'un nom de champ renvoyant
Ajouter une protection pour l'analyse des requêtes Web
- Certains utilisateurs ont rencontré une erreur d'analyse lorsque
request_uriétait mal formé ou contenait des caractères non valides. Cela peut se produire à ce stade si lerequest_uridans l'en-tête de la requête n'est pas valide et ne correspond pas à l'URL (valide) fournie à l'origine. Bien que cette protection ait désormais été mise en place dans New Relic,urlliba résolu ce problème pour les versions de Python sortie après le 31 janvier 2025.
- Certains utilisateurs ont rencontré une erreur d'analyse lorsque
Correction du crash dans ElasticSearch et GraphQL lorsque
trace.settings==None- Dans les cas où
trace.settingsestNone, l'instrumentation pour ElasticSearch a fait planter l'application. Une solution de secoursglobal_settingsa été mise en place. Cela résout également le même problème rencontré dans GraphQL.
- Dans les cas où
Supprimer la méthode
optionsde la liste des clients ElasticSearch asynchrones- L'instrumentation précédente d'ElasticSearch a provoqué un crash car
optionsfigurait dans la liste des méthodes asynchrones. Cette méthode n'est plus encapsulée dans unDatastoreTracecar elle n'effectue aucune opération/requests datastore.
- L'instrumentation précédente d'ElasticSearch a provoqué un crash car
Déclaration de soutien
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 Python de New Relic pour obtenir des informations sur la sortie de l'agent et les dates de support.
Remarques
Cette sortie de l'agent Python ajoute la prise en charge de nouvelles fonctions Redis , convertit tous les chemins internes de os.path à pathlib.Path et corrige un problème avec l'encodage JSON PosixPaths.
Installez l'agent à l'aide de easy_install/pip/distribute via l' index du packagePython ou téléchargez-le directement depuis le site de téléchargement de New Relic.
Nouvelles fonctionnalités
Ajoute la prise en charge de nouvelles fonctions Redis
- Ajoutez une instrumentation pour les nouvelles fonctions Redis .
Convertir tous les chemins internes de
os.pathenpathlib.Path- Convertissez toute l'utilisation interne des chemins basés sur des chaînes et
os.pathenpathlib.Pathen préparation pour prendre en charge les chemins Windows.
- Convertissez toute l'utilisation interne des chemins basés sur des chaînes et
Débogage
Correction du problème avec l'encodage JSON PosixPath
- Certains utilisateurs rencontraient des problèmes avec les paramètres configuration de l'encodage JSON
PosixPath. Ce problème a été résolu.
- Certains utilisateurs rencontraient des problèmes avec les paramètres configuration de l'encodage JSON
Déclaration de soutien
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 Python de New Relic pour obtenir des informations sur la sortie de l'agent et les dates de support.
Notes
This release of the Python agent adds support for oracledb, fixes a bug in Kombu and Kafka where MessageTransaction object has no attribute destination_name, and fixes the disappearance of utilization metadata with AWS.
Install the agent using easy_install/pip/distribute via the Python Package Index or download it directly from the New Relic download site.
New features
Adds support for oracledb
- Add instrumentation for oracledb.
Bug fixes
Fix "
MessageTransactionobject has no attributedestination_name" bug- Fix a bug in MessageBroker instrumentations where the serialize methods were looking for the
destination_nameattribute on theMessageTransactionand it did not exist.
- Fix a bug in MessageBroker instrumentations where the serialize methods were looking for the
Fix AWS utilization metadata issue when running AWS and K8s together
- Due to permissions settings in K8s pods running on AWS EC2 instances, the utilization metadata is able to be retrieved the first time. However, if the application is left running continuously, the agent will reconnect and the utilization metadata fails to load. In cases like these, the utilization metadata is cached per agent instance and is able to be retrieved.
Support statement
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 Python agent EOL policy for information about agent releases and support dates.