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 da transação na forma de segmentos adicionais. Todas as chamadas reportadas com datastore_trace aparecerão na página do banco de dadosAPM . datastore_trace retorna uma parte de DatastoreTraceWrapper que pode ser usada como um decorador para 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 oDatastoreTraceWrappera um determinado objeto por meio de monkey patching. Isso usa os mesmos parâmetros do decorador mais um parâmetromoduleeobject_pathadicional.
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
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")