Sintaxis
newrelic.agent.datastore_trace(product, target, operation)Se utiliza para instrumentar llamadas a almacenes de datos.
Descripción
datastore_trace se utiliza para agregar más detalles a su traza de la transacción en forma de segmentos adicionales. Cualquier llamada reportada con datastore_trace aparecerá en la página de base de datos de APM. datastore_trace devuelve una parte de DatastoreTraceWrapper que se puede usar como decorador para que una función programe llamadas a su almacenamiento de datos.
El decorador datastore_trace se puede utilizar en generadores y corrutinas con la versión del agente 2.102.0.85 o superior. El tiempo de estos objetos comienza cuando comienza el consumo y finaliza cuando el objeto se agota o sale del alcance. Este es un cambio con respecto a versiones anteriores donde la métrica representaba el tiempo necesario para crear el generador o el objeto de rutina.
Si no puede utilizar el decorador en su aplicación, puede utilizar uno de estos otros formatos de llamada:
The context manager
: El formulario del administrador de contexto es
DatastoreTrace.The wrapper
: El formulario contenedor es
DatastoreTraceWrapper. Se puede utilizar para devolver una función envuelta sin el uso de un decorador.The path-based wrapper
: El formulario contenedor basado en ruta es
wrap_datastore_trace. Esto aplica elDatastoreTraceWrappera un objeto determinado mediante parches de mono. Esto toma los mismos parámetros que el decorador más un parámetromoduleyobject_pathadicional.
Para obtener una explicación de los usos de estos diferentes formatos de llamadas, consulte Diferentes formatos de llamadas. Consulte Ejemplos para ver ejemplos de llamadas.
Parámetros
Parámetro para decorador
newrelic.agent.datastore_trace(product, target, operation)Esta convocatoria incluye estos parámetros:
Parámetro  | Descripción  | 
|---|---|
 cadena  | Requerido. El nombre del vendedor. Ejemplo:   | 
 cadena  | Requerido. El nombre de la colección o tabla. Si no hay ningún objetivo, se debe utilizar   | 
 cadena  | Requerido. El nombre de la operación de almacenamiento de datos. Ejemplos:   | 
Parámetro para el administrador de contexto
newrelic.agent.DatastoreTrace(product, target, operation, host=None, port_path_or_id=None, database_name=None)El parámetro para el administrador de contexto incluye todos los parámetros de datastore_trace más los parámetros adicionales host, port_path_or_id y database_name .
Parámetro  | Descripción  | 
|---|---|
 cadena  | Opcional. El nombre de host o IP del servidor de almacenamiento de datos.  | 
 cadena  | Opcional. El puerto utilizado para conectarse al servidor de almacenamiento de datos. Si se conecta con un socket Unix, esta puede ser la ruta al socket.  | 
 cadena  | Opcional. El nombre de la base de datos.  | 
Parámetro de envoltura
newrelic.agent.DatastoreTraceWrapper(wrapped, product, target, operation)Los parámetros para el contenedor incluyen todos los parámetros para datastore_trace y un parámetro wrapped :
Parámetro  | Descripción  | 
|---|---|
 función  | Requerido. La función que se está envolviendo.  | 
Parámetro de ajuste basado en ruta
newrelic.agent.wrap_datastore_trace(module, object_path, product, target, operation)El parámetro incluye todos los parámetros para datastore_trace y estos parámetros:
Parámetro  | Descripción  | 
|---|---|
 objeto  | Requerido. El módulo que contiene la función a instrumentar.  | 
 cadena  | Requerido. La ruta a la ubicación de la función.  | 
Valores de retorno
datastore_trace devuelve un DatastoreTraceWrapper() parcial.
Ejemplos
datastore_trace ejemplo 
Un ejemplo de uso del decorador datastore_trace :
import newrelic.agent
class _Database(UserDict.DictMixin):
    ...
    @newrelic.agent.datastore_trace('Redis', None, 'get')    def _get(self, key):        ...Un ejemplo del uso del decorador datastore_trace con rutinas nativas:
import newrelic.agent
class _Database(UserDict.DictMixin):
    ...
    @newrelic.agent.datastore_trace('Redis', None, 'get')    async def _get(self, key):        ...Ejemplo de administrador de contexto
Un ejemplo de uso del administrador de contexto DatastoreTrace : esto proporcionará tiempos de cuánto tiempo lleva realizar "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()Ejemplo de contenedor
Un ejemplo de uso de DatastoreTraceWrapper:
import newrelic.agent
class _Database(UserDict.DictMixin):
    ...
    def _get(self, key):        ...
_Database._get = newrelic.agent.DatastoreTraceWrapper(    _Database._get, "Redis", None, "get")