애플리케이션 간 통신에 사용되는 프로토콜에는 요청 및 응답에 메타데이터를 첨부하는 작업이 포함됩니다. 메타데이터는 각 애플리케이션에서 처리되고 결과 데이터는 에이전트에서 보고됩니다.
요구 사항New Relic Python 에이전트 버전 2.92.0.78 부터 버전 7.0.0.166까지 필요합니다. 그 이상의 버전에서는 더 이상 사용되지 않습니다.
사용자 지정 클라이언트(HTTP)이러한 API는 내장 계측의 일부로 계측되지 않은 사용자 정의 HTTP 통신 라이브러리에 사용됩니다.
HTTP 교차 애플리케이션 추적은 HTTP 헤더를 사용하여 애플리케이션 간에 트랜잭션 메타데이터를 전송합니다. 아웃바운드 교차 애플리케이션 추적 헤더를 생성하려면 ExternalTrace
클래스에서 generate_request_headers
API를 사용합니다. 인바운드 교차 애플리케이션 추적 헤더를 처리하려면 ExternalTrace
클래스에서 process_response_headers
API를 사용합니다.
발신 요청 transaction = newrelic.agent.current_transaction()
# returns a list of tuples in the form (header_name, header_value)
outgoing_headers = newrelic.agent.ExternalTrace.generate_request_headers(transaction)
for header_name, header_value in outgoing_headers:
...request.putheader(header_name, header_value) # code to be instrumented
...make_request(request) # code to be instrumented
수신 응답 transaction = newrelic.agent.current_transaction()
trace = newrelic.agent.ExternalTrace(transaction, 'library', 'http://example.com', 'get')
response = fetch_example_dot_com() # code to be instrumented
trace.process_response_headers(...response.headers)
커스텀 클라이언트(비 HTTP)이러한 API는 HTTP 전송을 사용하지 않는(따라서 헤더를 메타데이터 전송으로 사용하지 못할 수 있음) 내장된 계측의 일부로 계측되지 않는 라이브러리를 계측하는 데 사용됩니다.
계측 예시발신 요청 transaction = newrelic.agent.current_transaction()
outgoing_metadata = newrelic.agent.ExternalTrace.get_request_metadata(transaction)
...request.add_metadata(outgoing_metadata) # code to be instrumented
...make_request(request) # code to be instrumented
수신 응답 transaction = newrelic.agent.current_transaction()
trace = newrelic.agent.ExternalTrace(transaction, 'library', 'myproto://service', 'fetch')
...response = fetch_from_service() # code to be instrumented
# extract the metadata string sent from the service
metadata_value = response.metadata # code to be instrumented
trace.process_response_metadata(metadata_value)
WSGI 서버 팁 에이전트는 모든 WSGI 서버에 대한 교차 애플리케이션 추적 메타데이터에 대한 처리 및 전송 응답을 자동으로 처리합니다.
WSGI 서버 계측에 대한 자세한 내용 은 wsgi_application API 설명서 를 참조하십시오.
사용자 정의 비 HTTP 서버WSGI 기반이 아니거나 HTTP를 전송으로 사용하지 않는 사용자 지정 서버는 들어오는 교차 애플리케이션 추적 메타데이터를 처리하고 교차 애플리케이션 추적 응답을 생성해야 합니다.
다음 API를 사용하면 HTTP가 아닌 요청에서 전송된 교차 애플리케이션 추적 메타데이터를 처리하고 호출자에게 다시 보낼 응답 메타데이터를 생성할 수 있습니다.
계측 예시 def handle_incoming_request(request):
transaction = newrelic.agent.current_transaction()
transaction.process_request_metadata(...request.metadata)
response = generate_response() # code to be instrumented
# get_response_metadata returns a string
...response.metadata = transaction.get_response_metadata()