Vous pouvez étendre la Python agent monitoring de trace l' pour le temps passé dans des fonctions ou des méthodes de classes supplémentaires en modifiant votre newrelic.ini
configuration fichier . Cette forme d' instrumentation personnalisée est plus simple à mettre en œuvre que l'appel d'API, et ne nécessite pas de modifier votre code. Cependant, pour des besoins plus complexes, vous devrez peut-être instrumenter via API .
Lister les fonctions dans le fichier de configuration
Pour étendre l'instrumentation aux fonctions désignées et aux méthodes de classe, ajoutez-les au paramètre transaction_tracer.function_trace
dans la section newrelic
du fichier de configuration de l'agent. L'identifiant d'une fonction doit avoir la forme module:function
et celle d'une méthode de classe module:class.function
.
Pour répertorier plusieurs éléments, utilisez l’une de ces méthodes :
- Une ligne : Séparez chaque élément par un espace.
- Plusieurs lignes : suivez la convention de fichier ini pour mettre en retrait les lignes suivantes.
Lorsque des données sont rapportées pour la fonction instrumentée, la métrique aura un nom sous la forme Function/module:function
ou Function/module:class.function
. Dans la répartition des performances d'une transaction, la catégorie s'affichera comme Function
et le segment sera module:function
ou module:class.function
. Pour un suivi lent de la transaction, seul le nom du segment apparaît. Notez que lorsqu'une fonction renvoie réellement un générateur, seul le temps passé à renvoyer le générateur sera enregistré et non la consommation des valeurs du générateur.
Restrictions sur l'encapsulation des API d'extension
Lorsque vous encapsulez des fonctions en les répertoriant dans le fichier de configuration de l'agent, vous ne pouvez pas désigner des méthodes de classe de cette manière lorsque la méthode est membre d'une classe implémentée dans le code C par un module d'extension C. Cela est dû au fait qu’il n’est pas possible de modifier la table des méthodes d’un type implémenté à l’aide de l’API Python C.
Remplacement du nom de fonction signalé
Lorsque vous utilisez le paramètre transaction_tracer.function_trace
dans le fichier de configuration de l'agent, le nom de la fonction sera utilisé dans le nom de la métrique et sera classé comme Function
. S'il est nécessaire de remplacer le nom de fonction pouvant être utilisé dans le nom de la métrique ou de le classer différemment, un autre moyen de définir la trace de fonction dans le fichier de configuration peut être utilisé. L'équivalent pour :
transaction_tracer.function_trace = dumbdbm:open dumbdbm:_Database._commit
consisterait à créer deux nouvelles configuration sections dans le agent configuration fichier, une pour chaque fonction à tracer :
[function-trace:dumbdbm-1]enabled = truefunction = dumbdbm:openname = dumbdbm:opengroup = Function
[function-trace:dumbdbm-2]enabled = truefunction = dumbdbm:_Database._commitname = dumbdbm:_Database._commitgroup = Function
Le nom de la section du fichier .ini
doit commencer par function-trace:
. Le composant de nom qui suit ce préfixe peut être n'importe quoi, mais doit être unique dans toutes les sections de trace de fonction dans le fichier de configuration. Vous pouvez remplacer les paramètres group
et name
pour obtenir le nom de métrique souhaité. Le paramètre enabled
est défini par défaut sur false
et vous devez le modifier sur true
pour activer la fonction trace.
Instrumenter avec l' API
À des fins d’instrumentation personnalisée simple, la méthode du fichier de configuration fonctionne bien. Pour une instrumentation plus précise et personnalisée et des ajustements de comportement de l'agent, utilisez l'API de l'agent Python.