• EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

이 한글 문서는 사용자의 편의를 위해 기계 번역되었습니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

Go 에이전트 API 사용 가이드

New Relic Go 에이전트 는 Go 언어 애플리케이션과 마이크로서비스를 모니터링하여 성능 문제를 식별하고 해결하는 데 도움을 줍니다. Go 에이전트 API는 사용 가능한 여러 New Relic API 중 하나입니다.

중요

Go 응용 프로그램은 컴파일된 기본 바이너리 파일에서 실행되기 때문에 New Relic 메서드를 추가하여 Go 응용 프로그램의 트랜잭션을 모니터링하려면 코드를 수동으로 계측해야 합니다.

트랜잭션 모니터링

코드를 수동으로 계측하여 트랜잭션 을 모니터링하기 전에 호환성 및 요구 사항 을 충족하고 최신 버전의 Go 에이전트 를 사용하고 있는지 확인하십시오.

원하는 경우...

이 방법을 사용...

트랜잭션 타이밍 시작

StartTransaction()

트랜잭션 타이밍 중지

txn.End()

트랜잭션이 New Relic에 보고되는 것을 방지

Ignore()

표준 HTTP 라이브러리 패키지를 사용하여 트랜잭션 모니터링

HTTP 요청 래핑

세그먼트를 사용한 시간별 방법

트랜잭션이 New Relic에 이미 표시되어 있지만 해당 트랜잭션 중에 호출된 특정 메서드에 대한 데이터가 충분하지 않은 경우 세그먼트 를 만들 수 있습니다. 예를 들어, 복잡한 논리가 있는 메서드의 시간을 측정하려는 경우 트랜잭션의 각 메서드에 대한 세그먼트를 만들 수 있습니다.

기존 트랜잭션 내에서 메소드를 계측하려면 다음에 대한 세그먼트를 생성하십시오.

트랜잭션이 시작된 곳과 다른 고루틴에서 작업이 진행 중인 경우 NewGoroutine() API를 사용해야 합니다.

트랜잭션의 메타데이터 향상

New Relic이 트랜잭션에 대해 보고하는 메타데이터를 관리할 수 있습니다. 다음은 거래에 대해 다른 수준의 세부정보가 필요한 경우의 몇 가지 예입니다.

  • 측정항목 그룹화 문제 가 발생하는 경우 거래를 더 쉽게 식별할 수 있도록 거래의 기본 이름을 변경하세요.
  • 거래에 대한 대시보드를 생성하려면 맞춤 속성 을 추가하세요.

원하는 경우...

이것을 사용...

트랜잭션 이름 변경

SetName()

거래에 메타데이터(예: 고객의 계정 이름 또는 구독 수준)를 추가합니다.

AddAttribute()

외부 서비스에 대한 호출 계측

다음 방법을 사용하여 다른 앱 또는 데이터베이스에 대한 앱의 연결에 대한 데이터를 수집합니다.

원하는 경우...

이것을 사용...

외부 리소스(예: 외부 서비스, 데이터베이스 서버 또는 메시지 대기열)에 대한 호출 시간 측정

StartExternalSegment()

New Relic 에이전트가 계측한 다른 앱에 활동 연결

교차 애플리케이션 추적

요청이 분산 시스템을 통과할 때 이동하는 경로를 확인하십시오.

분산 추적

오류 수집 또는 무시

에이전트는 자동으로 오류를 감지합니다. Go 에이전트가 New Relic에 오류를 보고하는 방식을 변경하려면 오류 수집기 구성 을 변경하십시오.

원하는 경우...

이것을 사용...

에이전트가 자동으로 보고하지 않는 오류 보고

NoticeError()

에이전트가 자동으로 보고하지 않고 경고를 트리거하지 않는 예상 오류 보고

NoticeExpectedError()

에이전트가 오류를 보고하지 못하도록 방지

ErrorCollector.IgnoreStatusCodes()

오류 핑거프린팅: 발견된 각 오류에 오류 그룹을 동적으로 적용

에이전트에 콜백 함수를 제공하여 발견된 각 오류에 원하는 오류 그룹을 동적으로 적용할 수 있습니다. Go 에이전트 구성 옵션 newrelic.ConfigSetErrorGroupCallbackFunction 을 사용하여 에이전트에 콜백을 제공합니다.

이 API 호출은 콜백 메서드( newrelic.ErrorGroupCallback유형이어야 함)를 유일한 인수로 사용합니다. 예를 들면 다음과 같습니다.

myCallbackFunc := CallbackFunc(errorInfo newrelic.ErrorInfo) string {
if errorInfo.Message == "example error message" {
return "example group 1"
}
if errorInfo.GetHttpResponseCode() == "403" && errorInfo.GetUserID() == "user 2" {
return "user 2 payment issue"
}
// use default error grouping behavior
return ""
}
app, err := newrelic.NewApplication(
newrelic.ConfigSetErrorGroupCallbackFunction(myCallbackFunc)
)

표시된 예에서 newrelic.ErrorInfo 유형의 객체를 수락하고 오류 그룹을 나타내는 문자열을 반환하는 콜백 proc이 생성됩니다. ErrorGroupCallback 함수가 비어 있지 않은 문자열을 반환하면 발견된 오류의 기본 그룹화 동작을 재정의하고 서버측 그룹화 논리를 적용합니다.

콜백 함수는 정확히 하나의 입력 인수인 newrelic.ErrorInfo 객체를 받을 것으로 예상됩니다. 개체에는 다음이 포함됩니다.

열쇠

Error

확인된 Go 오류 개체입니다. 이것은 HTTP 오류 및 패닉에 대해 nil이 됩니다.

TimeOccured

시간.에이전트가 오류를 발견한 시간입니다.

Message

오류 메시지입니다.

Class

New Relic 오류 클래스입니다. 오류가 errorClasser구현하면 해당 값이 여기에서 파생됩니다. 그렇지 않으면 에이전트가 오류를 수집한 방식에서 파생됩니다. HTTP 오류의 경우 오류 번호입니다. 패닉은 공개 상수 값 newrelic.PanicErrorClass입니다. 그렇지 않으면 reflect.TypeOf()호출하여 오류 클래스가 루트 오류 개체에서 추출됩니다. 가장 일반적인 루트 오류 클래스는 *errors.errorString입니다.

Expected

오류가 예상되었을 때 true 인 bool입니다.

TransactionName

New Relic UI에 표시되는 트랜잭션의 형식화된 이름입니다.

GetTransactionUserAttributes(attribute string)

속성 이름을 입력으로 사용하는 메서드는 트랜잭션 사용자 속성을 interface{}로 조회하고 반환하고 속성 맵에서 키가 발견된 경우 true 부울을 반환합니다.

GetErrorAttribute(attribute string)

속성 이름을 입력으로 사용한 다음 오류 사용자 속성을 조회하고 interface{}로 반환하고 오류 속성 맵에서 키가 발견된 경우 true 인 부울을 반환하는 메서드입니다.

GetStackTraceFrames()

오류에 대해 최대 100개의 관련 스택 추적 라인을 포함하는 StackTraceFrame 객체 조각을 반환하는 메서드입니다. 슬라이스를 할당하고 채워야 하므로 이 메서드를 호출하면 비용이 많이 들 수 있습니다. 성능을 최적화하는 데 필요할 때만 이 메서드를 호출하는 것이 좋습니다.

GetRequestURI()

현재 오류의 상위 트랜잭션 중에 이루어진 HTTP 요청의 URI를 반환하는 메서드입니다. 웹 요청이 발생하지 않으면 빈 문자열이 반환됩니다.

GetRequestMethod()

이 오류의 상위 트랜잭션 중에 발생한 웹 요청의 HTTP 메서드를 반환하는 메서드입니다. 웹 요청이 발생하지 않으면 빈 문자열이 반환됩니다.

GetHttpResponseCode()

이 오류의 상위 트랜잭션 중에 발생한 웹 요청 중에 반환된 HTTP 응답 코드를 반환하는 메서드입니다. 웹 요청이 발생하지 않으면 빈 문자열이 반환됩니다.

GetUserID()

이 오류 및 트랜잭션에 적용된 UserID 를 반환하는 메서드입니다. UserID 정의되지 않은 경우 빈 문자열이 반환됩니다.

사용자 추적: 사용자 ID를 각 트랜잭션 및 오류와 연결

트랜잭션 및 오류는 New Relic Go 에이전트에 알려진 사용자 ID와 연결될 수 있습니다. Go 에이전트 API txn.SetUserID("example user ID") 를 사용하여 에이전트에 사용자 ID를 제공합니다.

이 API 호출에는 최종 사용자의 고유 식별자를 나타내는 문자열의 단일 인수가 필요합니다. 이 문자열은 UUID, 데이터베이스 ID 또는 이와 유사한 것일 수 있습니다. 트랜잭션과 연결할 사용자 ID를 New Relic Go 에이전트에 알리기 위해 트랜잭션당 최소 한 번 API 호출을 수행해야 합니다. 그런 다음 에이전트가 트랜잭션 수명 동안 오류를 발견하면 오류에는 사용자 ID 값을 보유하는 enduser.id 에이전트 속성이 포함됩니다.

API는 새 사용자 ID가 범위에 들어올 때마다 호출되도록 되어 있으므로 이상적으로는 사용자 세션 생성을 인식하는 미들웨어를 통해 호출됩니다. New Relic Go 에이전트가 사용자 ID를 알게 되면 현재 트랜잭션과 현재 트랜잭션 수명 동안 발견된 모든 오류에 대한 enduser.id 에이전트 속성을 제공합니다.

앱에서 맞춤 데이터 보내기

Go 에이전트로 사용자 지정 데이터 를 기록하려면 다음 방법 중 하나를 사용할 수 있습니다.

원하는 경우...

이것을 사용...

이벤트에 대한 데이터를 보내 New Relic 에서 분석할 수 있습니다.

RecordCustomEvent()

이벤트를 필터링하고 패싯하기 위해 메타데이터로 이벤트에 태그 지정

AddAttribute()

지정된 기간 동안의 맞춤 실적 데이터 보고

RecordCustomMetric()

관련 로그 보기

애플리케이션의 오류 및 추적 컨텍스트 내에서 직접 로그를 보려면 다음 API 호출을 사용하여 로그에 주석을 추가하십시오.

로그 데이터와 다른 원격 측정 데이터의 상관 관계에 대한 자세한 내용은 컨텍스트 문서의 로그를 참조하세요.

브라우저 모니터링으로 브라우저 성능 모니터링

다음을 사용하여 앱의 브라우저 성능을 모니터링하려면 Go 에이전트에서는 다음 방법 중 하나를 사용할 수 있습니다.

원하는 경우...

이것을 사용...

브라우저 에이전트 설치

브라우저 복사/붙여넣기 방법 사용

브라우저 모니터링 JavaScript 코드를 HTML 페이지에 직접 추가

BrowserTimingHeader()

Go 에이전트의 구성 설정 변경

New Relic 모니터링의 일부 측면을 관리하기 위해 Go 에이전트 구성 설정을 변경할 수 있습니다. 예를 들어:

  • 높은 수준의 보안 모드 켜기
  • 필터링 및 정렬을 위한 사용자 지정 레이블 추가
  • 보고되는 정보 관리
Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.