Sintaxe
newrelic.agent.datastore_trace(product, target, operation)
Usado para chamadas de instrumentos para armazenamentos de dados.
Descrição
datastore_trace
é usado para adicionar mais detalhes ao seu rastreamento de transação na forma de segmentos adicionais. Todas as chamadas relatadas com datastore_trace
aparecerão na página do banco de dados do APM. datastore_trace
retorna uma parcial de DatastoreTraceWrapper
que pode ser usada como decorador de uma função para cronometrar chamadas para seu armazenamento de dados.
O decorador datastore_trace
pode ser usado em geradores e corrotinas com agente versão 2.102.0.85 ou superior. O tempo desses objetos começa quando o consumo começa e termina quando o objeto se esgota ou sai do escopo. Esta é uma mudança em relação às versões anteriores, onde a métrica representava o tempo necessário para criar o gerador ou o próprio objeto de corrotina.
Se você não puder usar o decorador em seu aplicativo, poderá usar um destes outros formatos de chamada:
The context manager
: O formulário do gerenciador de contexto é
DatastoreTrace
.The wrapper
: o formulário do wrapper é
DatastoreTraceWrapper
. Pode ser usado para retornar uma função encapsulada sem o uso de um decorador.The path-based wrapper
: o formulário wrapper baseado em caminho é
wrap_datastore_trace
. Isso aplica oDatastoreTraceWrapper
a um determinado objeto por meio de monkey patching. Isso usa os mesmos parâmetros do decorador mais um parâmetromodule
eobject_path
adicional.
Para obter uma explicação sobre os usos desses diferentes formatos de chamada, consulte Diferentes formatos de chamada. Consulte Exemplos para exemplos de chamadas.
Parâmetro
Parâmetro para decorador
newrelic.agent.datastore_trace(product, target, operation)
Esta chamada inclui estes parâmetros:
Parâmetro | Descrição |
---|---|
corda | Obrigatório. O nome do fornecedor. Exemplo: |
corda | Obrigatório. O nome da coleção ou tabela. Se não houver destino, |
corda | Obrigatório. O nome da operação do armazenamento de dados. Exemplos: |
Parâmetro para gerenciador de contexto
newrelic.agent.DatastoreTrace(product, target, operation, host=None, port_path_or_id=None, database_name=None)
O parâmetro para o gerenciador de contexto inclui todos os parâmetros de datastore_trace
mais os parâmetros adicionais host
, port_path_or_id
e database_name
.
Parâmetro | Descrição |
---|---|
corda | Opcional. O nome do host ou IP do servidor do armazenamento de dados. |
corda | Opcional. A porta usada para conectar-se ao servidor do armazenamento de dados. Se estiver conectando com um soquete unix, este pode ser o caminho para o soquete. |
corda | Opcional. O nome do banco de dados. |
Parâmetro do wrapper
newrelic.agent.DatastoreTraceWrapper(wrapped, product, target, operation)
Os parâmetros do wrapper incluem todos os parâmetros para datastore_trace
e um parâmetro wrapped
:
Parâmetro | Descrição |
---|---|
função | Obrigatório. A função que está sendo encapsulada. |
Parâmetro de encapsulamento baseado em caminho
newrelic.agent.wrap_datastore_trace(module, object_path, product, target, operation)
parâmetro inclui todos os parâmetros para datastore_trace
e estes parâmetros:
Parâmetro | Descrição |
---|---|
objeto | Obrigatório. O módulo que contém a função a ser instrumentada. |
corda | Obrigatório. O caminho para o local da função. |
Valores de retorno
datastore_trace
retorna uma parcial DatastoreTraceWrapper()
.
Exemplos
datastore_trace
exemplo
Um exemplo de uso do decorador datastore_trace
:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
@newrelic.agent.datastore_trace('Redis', None, 'get') def _get(self, key): ...
Um exemplo de uso do decorador datastore_trace
com corrotinas nativas:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
@newrelic.agent.datastore_trace('Redis', None, 'get') async def _get(self, key): ...
Exemplo de gerenciador de contexto
Um exemplo de uso do gerenciador de contexto DatastoreTrace
: isso fornecerá o tempo necessário para executar `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()
Exemplo de wrapper
Um exemplo de uso do DatastoreTraceWrapper
:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
def _get(self, key): ...
_Database._get = newrelic.agent.DatastoreTraceWrapper( _Database._get, "Redis", None, "get")