분산 추적을 사용하면 분산 시스템 전체에서 요청의 전체 여정을 볼 수 있습니다.Go 에이전트의 경우 두 가지 유형의 분산 추적을 제공합니다(자세한 내용은 스팬 샘플링 작동 방식 참조).
표준(헤드 기반 샘플링): 추적이 도착하기 전에 수락하고 분석할 추적 비율을 결정합니다.이를 통해 추적이 어떻게 도움이 되는지 확인할 수 있는 확실한 출발점이 됩니다.Go 에이전트 3.16.0 이상에서는 기본적으로 켜져 있습니다. 무한 추적(꼬리 기반 샘플링): 당사의 클라우드 기반 서비스는 모든 추적을 수용한 다음 가장 중요한 추적을 찾기 위해 정렬합니다.표준 추적을 설정한 후에는 모든 추적을 분석하고 가장 중요한 추적을 샘플링하는 구성 옵션을 제공하므로 이 옵션을 추가하는 것이 좋습니다. 분산 추적을 시작하는 데 필요한 모든 단계는 다음과 같습니다.
새로운 Go 에이전트 표준 분산 추적(헤드 기반 샘플링)을 시도하거나 무한 추적(테일 기반 샘플링)을 설정하려는 경우 표준 추적 설정부터 시작해야 합니다. 우리는 당신을 통해 얻을 것입니다 헤드 기반 샘플링을 진행하기 위한 에이전트 설치. 그런 다음 옵션이지만 권장되는 무한 추적을 설정할 수 있습니다.
팁 Go 에이전트는 다른 New Relic 에이전트의 자동 계측과 달리 Go 서비스를 수동으로 계측해야 합니다.즉, Go 에이전트를 사용하고 분산 추적을 활성화하려면 코드에 몇 줄을 추가해야 합니다.
표준 분산 추적을 사용하려면 에이전트 설치 아직 서비스에 대한 APM 에이전트를 설치하지 않았거나 추가 서비스를 계측하려는 경우 표준 분산 추적 을 설정하는 가장 좋은 방법입니다.
이 APM 에이전트로 계측된 일부 서비스가 이미 있고 이를 분산 추적에 포함하려면 각 서비스에 대해 분산 추적을 수동으로 활성화해야 합니다.이전 Go 에이전트에 대한 옵션을 참조하세요.
1단계. 서비스 식별 어떤 서비스가 요청에 영향을 미치는지 파악하여 각 서비스를 계측하여 New Relic에 추적 데이터를 보낼 수 있습니다.
2단계. APM 에이전트로 각 서비스 계측 트랜잭션과 관련된 각 서비스에 대해 에이전트 설치 루틴을 반복합니다.일부 서비스에서 다른 언어를 사용하는 경우 해당 언어에 대한 설치 단계 를 반복하기만 하면 됩니다.
설치 루틴을 시작하려면 아래 타일을 클릭하세요.각 에이전트 설치를 마치면 여기로 돌아와 추적 보기에 대한 팁을 확인하세요 .
3단계. 추적 보기 APM 에이전트로 각 서비스를 계측한 후 일부 추적을 캡처할 수 있도록 애플리케이션에서 일부 트래픽을 생성합니다.다음은 UI에서 추적을 보는 몇 가지 방법입니다.
특정 서비스를 포함하는 trace 보기 다음은 특정 서비스에 대한 추적을 볼 수 있는 한 가지 방법입니다.
one.newrelic.com > APM & services 로 이동합니다.엔터티(서비스)를 클릭합니다. 왼쪽 창의 모니터 섹션에서 분산 추적 을 클릭합니다. 자세한 내용은 개별 추적을 클릭하십시오.상위 메뉴에 Groupsimilar traces 가 켜져 있으면 추적 그룹을 클릭한 다음 개별 추적을 클릭합니다. 원하는 추적이 표시되지 않으면 trace.id
으로 필터링할 수 있습니다. 계정 간 추적 보기 계정을 교차하는 추적을 보려면 다음 단계를 따르세요.
one.newrelic.com > Traces 으로 이동합니다.왼쪽 창에서 엔터티(서비스)를 선택합니다. 자세한 내용은 개별 추적을 클릭하십시오.상위 메뉴에 Groupsimilar traces 가 켜져 있으면 추적 그룹을 클릭한 다음 개별 추적을 클릭합니다. 원하는 추적이 표시되지 않으면 trace.id
으로 필터링할 수 있습니다. 추적 관련 로그 검사 로그와 추적 세부 정보를 함께 가져와 더 쉽고 빠르게 문제를 해결할 수 있습니다.컨텍스트의 로그를 사용하면 New Relic UI에서 추적과 함께 로그 메시지를 볼 수 있습니다.
특정 서비스가 포함된 추적 보기 또는 계정 간 추적 보기의 단계를 사용하여 흥미로운 추적을 찾은 후 다음을 수행합니다.
컨텍스트에서 로그를 활성화한 경우 추적 세부정보 옆에 있는 로그 탭을 클릭합니다. 개별 로그와 관련된 세부 정보를 보려면 메시지를 직접 클릭하십시오. UI에서 추적을 찾는 데 도움이 더 필요하면:
무한 추적 설정(권장) APM 에이전트용 표준 분산 추적( 위 )은 추적의 최대 10%를 캡처하지만 당사가 모든 데이터를 분석하고 가장 관련성이 높은 추적을 찾기를 원하는 경우 무한 추적을 설정할 수 있습니다.
팁 이 기능에 대한 자세한 내용은 무한 추적 을 참조하십시오.
시작하기 전에 먼저 요구 사항 을 충족하는지 확인하십시오.
1단계. 새 에이전트 설치 완료 무한 추적 설정은 표준 분산 추적을 위한 새 에이전트 설치 의 계측 단계를 기반으로 합니다.
2단계. 추적 관찰자 설정 추적 관찰자는 모든 추적을 수집하고 분석하는 New Relic AWS 기반 서비스입니다. 추적 관찰자 설정 의 지침을 따릅니다. 완료되면 추적 관찰자 정보와 함께 여기로 돌아와 에이전트를 구성하는 다음 단계를 계속합니다.
무한 추적 구성 설정에는 표준 분산 추적과 추적 관찰자에 대한 정보가 포함됩니다.
무한 추적 구성으로 이동 다음은 설정에 대한 개요입니다.
유형
필수 구성
무한 추적
구성 옵션:
newrelic.Config
구조:
app , err := newrelic . NewApplication (
newrelic . ConfigAppName ( YOUR_APP_NAME ) ,
newrelic . ConfigLicense ( YOUR_LICENSE_KEY ) ,
func ( cfg * newrelic . Config ) {
cfg . InfiniteTracing . TraceObserver . Host = YOUR_TRACE_OBSERVER_HOST
환경 변수:
4단계. (선택 사항) 무한 추적 사용자 지정 에이전트 구성 설정을 추가한 후 New Relic UI에서 데이터를 보기 시작해야 합니다. 데이터를 분석하는 데 시간을 보낸 후 Infinite Tracing의 일부 기능을 조정할 수 있습니다.
이전 Go 에이전트를 위한 옵션 이전 Go 에이전트가 있는 경우 이 섹션을 사용하여 원하는 분산 추적 기능이 지원되는지 확인하십시오.
호환성 정보 다음은 표준 분산 추적을 켜기 위한 기본 구성 설정을 보여주는 섹션입니다. 이전 에이전트가 무한 추적을 지원하고 설정하려는 경우 위 의 단계를 참조하십시오.
호환성 가이드 아래의 호환성 정보를 검토한 후 구성 설정을 따르십시오.
Go 에이전트 호환성 필요한 Go 에이전트 버전을 설치 하거나 업데이트 합니다. 최상의 결과를 얻으려면 최신 Go 에이전트 버전 으로 업데이트하세요.
옵션
이동 에이전트 버전
표준 분산 추적
2.1.0 이상
W3C 추적 컨텍스트 사용: 3.1.0 이상
무한 추적
v3.5.0(W3C 추적 컨텍스트 포함)
지원 환경: Go 1.9 이상
분산 추적을 사용하려면 아래 설정을 참조하세요.
이동 에이전트 구성 다음은 설정에 대한 개요입니다. 구성에 대한 추가 도움말은 Go 에이전트 구성 을 참조하십시오.
유형
필수 구성
표준 분산 추적
구성 옵션:
ConfigOption
구조:
newrelic . ConfigAppName ( "Example App" ) ,
newrelic . ConfigLicense ( os . Getenv ( "NEW_RELIC_LICENSE_KEY" ) ) ,
newrelic . ConfigDistributedTracerEnabled ( true ) ,
환경 변수:
NEW_RELIC_DISTRIBUTED_TRACING_ENABLED=true
무한 추적
이전 에이전트가 무한 추적을 지원하는 경우 위 의 구성 단계를 참조하십시오.
추가 수동 계측 Go 에이전트 및 분산 추적의 모든 설치에는 Go 에이전트 구성 설정 에 나열된 설정을 사용하여 수동 계측이 필요합니다.그러나 설정을 최적화하기 위해 몇 가지 추가 구성을 수행해야 할 수도 있습니다.다음은 트랜잭션 및 HTTP 요청을 계측하기 위한 몇 가지 지침입니다.
거래 계측(ServMux를 사용하는 경우) Go의 http.ServeMux
를 사용 중이고 New Relic의 분산 추적을 활성화하려면 Go 애플리케이션이 New Relic의 WrapHandle
및 WrapHandleFunc
래퍼로 계측되어야 합니다. 이러한 래퍼는 자동으로 올바른 분산 추적 헤더를 추가하는 요청 및 응답 작성기로 트랜잭션을 시작하고 종료합니다. 헤더 전파 작동 방식에 대한 자세한 내용은 분산 추적 작동 방식 을 참조하세요.
전과 후의 예 다음은 계측 전 코드의 예입니다.
http . HandleFunc ( "/users" , usersHandler )
다음은 계측 후 동일한 코드의 예입니다.
http . HandleFunc ( newrelic . WrapHandleFunc ( app , "/users" , usersHandler ) )
Instrument Go 트랜잭션 에서 이러한 래퍼를 사용하는 방법에 대해 자세히 읽어보십시오.
아웃바운드 HTTP 요청을 외부 세그먼트로 계측 아웃바운드 HTTP 요청이 분산 추적에 적합하도록 하려면 외부 세그먼트를 만드 십시오.
아웃바운드 HTTP 요청에 대한 외부 세그먼트를 만드는 가장 쉬운 방법은 newrelic.NewRoundTripper
메서드를 사용하는 것입니다. 다음은 발신 분산 추적 헤더를 포함하는 http://api.example.com
에 대한 요청의 예입니다.
func useNewRoundTripper ( txn * newrelic . Transaction ) ( * http . Response , error ) {
client . Transport = newrelic . NewRoundTripper ( client . Transport )
request , _ := http . NewRequest ( "GET" , "http://example.com" , nil )
request = newrelic . RequestWithTransactionContext ( request , txn )
return client . Do ( request )
Go 표준 라이브러리의 http.Request
를 사용하는 더 복잡한 요청이 있는 경우 newrelic.StartExternalSegment
메서드를 사용하여 아웃바운드 요청이 분산 추적에 적합한지 확인합니다.
func external ( txn * newrelic . Transaction , req * http . Request ) ( * http . Response , error ) {
s := newrelic . StartExternalSegment ( txn , req )
response , err := http . DefaultClient . Do ( req )
구조체 리터럴로 생성된 ExternalSegment
는 분산 추적에 사용할 수 없습니다. 이 때문에 New Relic은 newrelic.NewRoundTripper
또는 newrelic.StartExternalSegment
사용을 권장합니다.
func noGoodForDt ( txn * newrelic . Transaction , url string ) ( * http . Response , error ) {
defer newrelic . ExternalSegment {
StartTime : txn . StartSegmentNow ( ) ,
수동으로 분산 추적 페이로드 생성 및 수락 분산 추적 페이로드에는 New Relic이 여러 서비스에서 발생하는 트랜잭션을 완전한 트랜잭션 추적으로 결합할 수 있도록 하는 정보가 포함되어 있습니다. New Relic이 모니터링하는 서비스가 서로에게 추적 컨텍스트를 보내지 않으면 불완전한 추적 세부 정보가 생성됩니다.
아래 API 호출을 사용하여 분산 추적을 구현하는 방법에 대한 일반적인 지침은 먼저 분산 추적 API 사용 을 참조하세요.
원하는 경우...
이것을 사용
호출된 서비스에 보낼 페이로드를 만듭니다.
첫 번째 서비스에서 보낸 페이로드를 수락합니다. 이것은 추적에서 이러한 서비스를 함께 연결합니다.
이를 사용하는 방법에 대한 자세한 내용은 Go 에이전트 GitHub 리포지토리 를 참조하세요.