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")