통사론
newrelic.agent.datastore_trace(product, target, operation)
데이터 저장소에 대한 호출을 계측하는 데 사용됩니다.
설명
datastore_trace
추가 세그먼트의 형태로 트랜잭션 추적 에 세부 정보를 추가하는 데 사용됩니다. datastore_trace
으로 보고된 모든 호출은 APM 데이터베이스 페이지 에 나타납니다. datastore_trace
은 데이터 저장소에 대한 호출 시간을 지정하는 함수의 데코레이터로 사용할 수 있는 DatastoreTraceWrapper
의 일부 를 반환합니다.
datastore_trace
데코레이터는 에이전트 버전이 2.102.0.85 이상인 생성기 및 코루틴에서 사용할 수 있습니다. 이러한 개체의 타이밍은 소비가 시작될 때 시작되고 개체가 소진되거나 범위를 벗어날 때 끝납니다. 이는 메트릭이 생성기 또는 코루틴 개체 자체를 생성하는 데 걸린 시간을 나타내는 이전 버전에서 변경된 사항입니다.
애플리케이션에서 데코레이터를 사용할 수 없는 경우 다음 다른 호출 형식 중 하나를 사용할 수 있습니다.
The context manager
: 컨텍스트 관리자 형식은
DatastoreTrace
입니다.The wrapper
: 래퍼 형식은
DatastoreTraceWrapper
입니다. 데코레이터를 사용하지 않고 래핑된 함수를 반환하는 데 사용할 수 있습니다.The path-based wrapper
: 경로 기반 래퍼 형식은
wrap_datastore_trace
입니다. 이는 Monkey 패치를 통해 지정된 객체에DatastoreTraceWrapper
적용합니다. 이는 데코레이터와 동일한 모범 사례와 추가module
및object_path
모범 사례를 사용합니다.
이러한 다른 호출 형식의 사용에 대한 설명은 다른 호출 형식 을 참조하십시오. 호출 예는 예 를 참조하십시오.
매개변수
데코레이터의 매개변수
newrelic.agent.datastore_trace(product, target, operation)
이 호출에는 다음 매개변수가 포함됩니다.
매개변수 | 설명 |
---|---|
끈 | 필수의. 공급업체의 이름입니다. 예: |
끈 | 필수의. 컬렉션 또는 테이블의 이름입니다. 대상이 없으면 |
끈 | 필수의. 데이터 저장소 작업의 이름입니다. 예: |
컨텍스트 관리자용 매개변수
newrelic.agent.DatastoreTrace(product, target, operation, host=None, port_path_or_id=None, database_name=None)
컨텍스트 관리자의 매개변수 에는 datastore_trace
의 모든 매개변수와 추가 host
, port_path_or_id
및 database_name
매개변수가 포함됩니다.
매개변수 | 설명 |
---|---|
끈 | 선택 과목. 데이터 저장소 서버의 호스트 이름 또는 IP입니다. |
끈 | 선택 과목. 데이터 저장소 서버에 연결하는 데 사용되는 포트입니다. 유닉스 소켓으로 연결하는 경우 소켓에 대한 경로가 될 수 있습니다. |
끈 | 선택 과목. 데이터베이스의 이름입니다. |
래퍼 매개변수
newrelic.agent.DatastoreTraceWrapper(wrapped, product, target, operation)
래퍼 매개변수에는 datastore_trace
및 wrapped
매개변수에 대한 모든 매개변수 가 포함됩니다.
매개변수 | 설명 |
---|---|
기능 | 필수의. 래핑되는 함수입니다. |
경로 기반 래핑 매개변수
newrelic.agent.wrap_datastore_trace(module, object_path, product, target, operation)
매개변수에는 datastore_trace
에 대한 모든 매개변수 와 다음 매개변수가 포함됩니다.
매개변수 | 설명 |
---|---|
물체 | 필수의. 계측할 함수가 포함된 모듈입니다. |
끈 | 필수의. 함수의 위치에 대한 경로입니다. |
반환 값
datastore_trace
DatastoreTraceWrapper()
부분을 반환합니다.
예
datastore_trace
예시
datastore_trace
데코레이터 사용 예:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
@newrelic.agent.datastore_trace('Redis', None, 'get') def _get(self, key): ...
네이티브 코루틴과 함께 datastore_trace
데코레이터를 사용하는 예:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
@newrelic.agent.datastore_trace('Redis', None, 'get') async def _get(self, key): ...
컨텍스트 관리자 예제
DatastoreTrace
컨텍스트 관리자를 사용하는 예: `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()
래퍼 예
DatastoreTraceWrapper
사용 예:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
def _get(self, key): ...
_Database._get = newrelic.agent.DatastoreTraceWrapper( _Database._get, "Redis", None, "get")