분산 추적을 사용하면 분산 시스템 전체에서 요청의 전체 여정을 볼 수 있습니다.PHP 에이전트는 여러 기본 PHP 기능과 일부 타사 HTTP 클라이언트를 분산 추적하여 자동으로 계측합니다.
- PHP 함수
file_get_contents
- PHP 함수
curl_exec
및curl_multi_exec
- 총구 4, 총구 5, 총구 6
- 드루팔의
drupal_http_request function
- Laravel의 대기열 작업
PHP 에이전트의 경우 두 가지 유형의 분산 추적을 제공합니다(자세한 내용은 스팬 샘플링 작동 방식 참조).
표준(헤드 기반 샘플링): 추적이 도착하기 전에 수락하고 분석할 추적 비율을 결정합니다.이를 통해 추적이 어떻게 도움이 되는지 확인할 수 있는 확실한 출발점이 됩니다.PHP 에이전트 9.21.0 이상에서는 기본적으로 켜져 있습니다.
Infinite Tracing(테일 기반): 당사의 클라우드 기반 서비스는 귀하의 모든 트레이스를 수용한 다음 이를 정렬하여 가장 중요한 트레이스를 찾습니다. 무한 추적은 모든 트레이스를 분석하고 가장 중요한 트레이스를 샘플링할 수 있는 설정 옵션을 제공합니다.
표준 분산 추적(헤드 기반 샘플링)을 시도하거나 무한 추적(테일 기반 샘플링)을 설정하려는 경우 표준 추적 설정부터 시작해야 합니다.
표준 분산 추적
이는 서비스에 대한 APM 에이전트를 아직 설치하지 않은 경우 표준 분산 추적을 설정하는 가장 좋은 방법입니다.
팁
방사능 PHP 에이전트를 설치하면 기본적으로 표준 변환기가 켜져 있습니다. 이 기능을 끄고 싶다면 설정 가이드를 참조하세요.
서비스 식별
어떤 서비스가 요청에 영향을 미치는지 파악하여 각 서비스를 계측하여 New Relic에 추적 데이터를 보낼 수 있습니다.
뷰트레이스
APM 에이전트로 각 서비스를 계측한 후 일부 추적을 캡처할 수 있도록 애플리케이션에서 일부 트래픽을 생성합니다.다음은 UI에서 추적을 보는 몇 가지 방법입니다.
UI에서 추적을 찾는 데 도움이 더 필요하면:
무한 추적
에이전트에 대한 표준 폐기 추적은 APM 트레이스의 최대 10%를 캡처하지만 모든 데이터를 분석하고 가장 관련성이 높은 트레이스를 찾으려면 무한 추적을 설정할 수 있습니다.
시작하기 전에 먼저 요구사항을 충족하는지 확인하세요.
표준 분산 추적 설정 완료
Infinite Tracing 설정은 표준 분산 추적을 기반으로 합니다. 따라서 위의 단계를 완료했는지 확인한 다음 트레이스 관찰자 설정을 계속하세요.
추적 관찰자 설정
추적 관찰자는 모든 추적을 수집하고 분석하는 New Relic AWS 기반 서비스입니다. 추적 관찰자 설정 의 지침을 따릅니다. 완료되면 추적 관찰자 정보와 함께 여기로 돌아와 에이전트를 구성하는 다음 단계를 계속합니다.
무한 추적을 위한 에이전트 구성
무한 추적 구성 설정에는 표준 분산 추적과 추적 관찰자에 대한 정보가 포함됩니다.Infinite Tracing에는 서버 측 구성을 사용할 수 없습니다.
팁
프록시 구성에 대한 도움이 필요한 경우 프록시 지원 을 참조하십시오.
(선택 사항) 무한 추적 사용자 정의
에이전트 구성 설정을 추가한 후 New Relic UI에서 데이터를 보기 시작해야 합니다. 데이터를 분석하는 데 시간을 보낸 후 Infinite Tracing의 일부 기능을 조정할 수 있습니다.
추적 세부 수준 설정
분산 추적 지원은 PHP 에이전트의 트랜잭션 추적 프로그램 에 따라 다릅니다. 분산 추적이 활성화 되면 트랜잭션 추적 프로그램에 표시되는 각 세그먼트에 대해 범위 가 생성됩니다.
범위가 샘플링 되면 PHP 에이전트는 외부 호출과 관련된 범위를 다른 범위보다 우선시한 다음 지속 시간의 내림차순으로 기록합니다.
PHP 함수 호출에 대해 보고되는 중요하지 않은 범위가 너무 많다면 newrelic.transaction_tracer.detail
을 0
로 설정하여 트랜잭션 추적기의 세부 정보를 줄일 수 있습니다. 그런 다음 newrelic.transaction_tracer.custom
구성 설정 또는 newrelic_add_custom_tracer
API 메소드를 사용하여 추적에 추가하려는 특정 PHP 함수 또는 메소드에 대한 추적 세그먼트 및 범위를 추가할 수 있습니다.
중요
PHP 에이전트 버전 8.4-8.7의 경우: 분산 추적이 활성화된 경우 이러한 버전은 newrelic.transaction_tracer.detail
가 0
로 설정된 것처럼 작동하므로(위에서 설명한 대로) PHP 함수 호출이 스팬을 생성하지 않습니다. PHP 함수 호출과 관련된 스팬을 얻으려면 버전 9.0 이상으로 업데이트하십시오.
PHP 에이전트 API를 사용하여 수동으로 애플리케이션 및 서비스 계측
중요
W3C 추적 컨텍스트 지원이 버전 9.8에 추가되었습니다. 이에 따라 애플리케이션을 수동으로 계측하기 위한 API가 JSON 페이로드 관련 기능에서 변경되었습니다.
newrelic_create_distributed_trace_payload()newrelic_accept_distributed_trace_payload($payload)
헤더 배열 형식:
newrelic_insert_distributed_trace_headers($outbound_headers)newrelic_accept_distributed_trace_headers($inbound_headers)
JSON 함수는 이제 더 이상 사용되지 않는 것으로 간주되며 향후 릴리스에서 제거됩니다.
지원되지 않는 라이브러리를 사용하거나 비 HTTP 기반 분산 시스템 구성 요소(예: 메시징 대기열)가 있는 경우 PHP 에이전트 API를 사용하여 분산 추적에 포함될 트랜잭션을 수동으로 식별할 수 있습니다. 이것은 2단계 프로세스입니다.
- 서비스 또는 애플리케이션을 분산 추적 데이터로 create 또는 insert 수정하세요.
- 다른 프로세서 또는 요청에 의해 생성된 accept 처리 트레이스 데이터에 맞게 서비스 또는 서버를 수정하세요.
다음 예에서는 일반 메시지/작업 대기열을 사용합니다. 실제 세부 사항은 복사 트레이스에 어떤 종류의 시스템을 추가하려는지에 따라 다르지만 핵심 개념은 동일합니다. 또한 작업 큐를 예로 사용했지만 any 분산 시스템 구성요소와 함께 이러한 메서드를 사용할 수 있습니다.
팁
create a payload 또는 insert headers(를) 하면, 뉴 코로나에게 이 요청을 원한다고 말하는 것입니다. 또는 파티션에 참여하도록 요청하는 것입니다. 이를 accept 하면 현재 요청 또는 트랜잭션을 상위 요청 또는 트랜잭션과 연결하게 됩니다.
수동 계측을 사용하여 더 자세한 정보를 얻거나 서비스 간 연결을 확인하는 방법에 대한 자세한 내용은 분산 추적 API 에 대한 설명서를 참조하세요.
헤더 API
페이로드 API(더 이상 사용되지 않음)
명령줄 PHP 프로그램
PHP 명령줄에서 실행되는 PHP 프로그램은 항상 에이전트의 분산 추적 프로그램에서 샘플링됩니다. 실행하는 프로그램에 따라 이러한 프로세스는 분산 추적 모음에서 과도하게 표시될 수 있습니다. 이러한 상황에서는 newrelic.ini files
의 per-directory newrelic.enabled
설정을 사용하여 명령줄 계측을 비활성화하도록 선택할 수 있습니다.