Syntaxe
newrelic.agent.datastore_trace(product, target, operation)
Utilisé pour instrumenter les appels aux magasins de données.
Description
datastore_trace
est utilisé pour ajouter plus de détails à votre trace de transaction sous forme de segments supplémentaires. Tous les appels signalés avec datastore_trace
apparaîtront sur la page de base de donnéesAPM . datastore_trace
renvoie une partie de DatastoreTraceWrapper
qui peut être utilisée comme décorateur pour une fonction afin de chronométrer les appels à votre datastore.
Le décorateur datastore_trace
peut être utilisé sur les générateurs et les coroutines avec la version d'agent 2.102.0.85 ou supérieure. La synchronisation de ces objets commence lorsque la consommation commence et se termine lorsque l'objet est épuisé ou sort du champ d'application. Il s’agit d’un changement par rapport aux versions précédentes où la métrique représentait le temps nécessaire à la création du générateur ou de l’objet coroutine lui-même.
Si vous ne pouvez pas utiliser le décorateur dans votre application, vous pouvez utiliser l'un de ces autres formats d'appel :
- The context manager: Le formulaire du gestionnaire de contexte est
DatastoreTrace
. - The wrapper: La forme wrapper est
DatastoreTraceWrapper
. Il peut être utilisé pour renvoyer une fonction encapsulée sans l'utilisation d'un décorateur. - The path-based wrapper: La forme wrapper basée sur le chemin est
wrap_datastore_trace
. Cela applique leDatastoreTraceWrapper
à un objet donné via le patch de singe. Cela prend le même paramètre que le décorateur plus un paramètremodule
etobject_path
supplémentaire.
Pour une explication des utilisations de ces différents formats d’appel, voir Différents formats d’appel. Voir Exemples pour des exemples d'appel.
Paramètres
paramètre pour le décorateur
newrelic.agent.datastore_trace(product, target, operation)
Cet appel inclut ces paramètres :
paramètres | Description |
---|---|
chaîne | Requis. Le nom du vendeur. Exemple : |
chaîne | Requis. Le nom de la collection ou de la table. S'il n'y a pas de cible, |
chaîne | Requis. Le nom de l’opération datastore . Exemples : |
paramètre pour le gestionnaire de contexte
newrelic.agent.DatastoreTrace(product, target, operation, host=None, port_path_or_id=None, database_name=None)
Le paramètre du gestionnaire de contexte inclut tous les paramètres de datastore_trace
plus les paramètres supplémentaires host
, port_path_or_id
et database_name
.
paramètres | Description |
---|---|
chaîne | Facultatif. Le nom d'hôte ou l'IP du serveur datastore . |
chaîne | Facultatif. Le port utilisé pour se connecter au serveur datastore . Si vous vous connectez avec un socket Unix, cela peut être le chemin vers le socket. |
chaîne | Facultatif. Le nom de la base de données. |
Paramètres de l'enveloppe
newrelic.agent.DatastoreTraceWrapper(wrapped, product, target, operation)
Le paramètre du wrapper inclut tous les paramètres de datastore_trace
et un paramètre wrapped
:
paramètres | Description |
---|---|
fonction | Requis. La fonction en cours d'encapsulation. |
Paramètre d'emballage basé sur le chemin
newrelic.agent.wrap_datastore_trace(module, object_path, product, target, operation)
Le paramètre inclut tous les paramètres de datastore_trace
et ces paramètres :
paramètres | Description |
---|---|
objet | Requis. Le module contenant la fonction à instrumenter. |
chaîne | Requis. Le chemin vers l'emplacement de la fonction. |
Valeurs de retour
datastore_trace
renvoie un DatastoreTraceWrapper()
partiel.
Exemples
datastore_trace
Un exemple d'utilisation du décorateur datastore_trace
:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
@newrelic.agent.datastore_trace('Redis', None, 'get') def _get(self, key): ...
Un exemple d'utilisation du décorateur datastore_trace
avec des coroutines natives :
import newrelic.agent
class _Database(UserDict.DictMixin):
...
@newrelic.agent.datastore_trace('Redis', None, 'get') async def _get(self, key): ...
Exemple de gestionnaire de contexte
Un exemple d'utilisation du gestionnaire de contexte DatastoreTrace
: cela donnera des informations sur le temps nécessaire pour effectuer « custom_action ».
import newrelic.agent
def complex_query(a, b, c): with Connection(host, port, db) as conn: with newrelic.agent.DatastoreTrace( product="Custom Product", target=None, operation="custom", host=host, port_path_or_id=port, database_name=db, ):
conn.custom_action()
Exemple d'enveloppe
Un exemple d'utilisation du DatastoreTraceWrapper
:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
def _get(self, key): ...
_Database._get = newrelic.agent.DatastoreTraceWrapper( _Database._get, "Redis", None, "get")