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 elDatastoreTraceWrapper
a un objeto determinado mediante parches de mono. Esto toma los mismos parámetros que el decorador más un parámetromodule
yobject_path
adicional.
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")