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

사용자의 편의를 위해 제공되는 기계 번역입니다.

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

문제 신고

Instrument Go 거래

HTTP 응답 또는 백그라운드 작업과 같은 특정 앱 서버 활동과 관련된 트랜잭션 을 생성하여 New Relic for Go 애플리케이션 또는 마이크로서비스를 모니터링합니다. 그런 다음 APM 트랜잭션 페이지 를 포함하여 New Relic에서 앱의 성능을 볼 수 있습니다.

웹 및 비웹 트랜잭션 식별

다른 많은 언어와 달리 Go 애플리케이션은 컴파일된 기본 바이너리 파일에서 실행됩니다. 즉, Golang 앱에 New Relic을 설정하려면 소스 코드에 New Relic 메서드를 수동으로 추가해야 합니다.

APM에서 트랜잭션은 웹 트랜잭션 또는 웹이 아닌 트랜잭션으로 식별됩니다.

  • HTTP 요청 및 응답 작성자가 있는 트랜잭션을 계측하거나 래핑할 때 New Relic은 이를 웹 트랜잭션으로 처리합니다.
  • HTTP 데이터가 없는 트랜잭션을 계측하거나 래핑할 때 New Relic은 이를 웹이 아닌 트랜잭션으로 처리합니다.

세그먼트는 트랜잭션을 구성하는 기능 및 호출입니다. New Relic for Go를 사용 하여 트랜잭션에 세그먼트 수준 세부 정보를 추가 할 수도 있습니다.

트랜잭션 모니터링

중요

거래 이름 끝에 대괄호 [suffix] 를 사용하지 마십시오. New Relic은 자동으로 이름에서 괄호를 제거합니다. 대신 필요한 경우 괄호 (suffix) 또는 기타 기호를 사용하십시오.

트랜잭션을 모니터링하려면 다음 코드를 모니터링하려는 기능의 시작 직후에 배치합니다. 예를 들어:

txn := app.StartTransaction("transaction_name")
defer txn.End()

이 코드 예제에서:

웹 트랜잭션을 모니터링하려면 Transaction.SetWebRequest 및 선택적으로 Transaction.SetWebResponse API를 호출합니다.

txn := app.StartTransaction("transaction_name")
defer txn.End()
// req is a *http.Request, this marks the transaction as a web transaction
txn.SetWebRequestHTTP(req)
// writer is a http.ResponseWriter, use the returned writer in place of the original
writer = txn.SetWebResponse(writer)
writer.WriteHeader(500)

여러 고루틴으로 트랜잭션 모니터링

여러 고루틴에서 트랜잭션을 모니터링하려면 Transaction.NewGoroutine() 을 사용합니다. NewGoroutine 메서드는 각 세그먼트 생성 고루틴에 필요한 트랜잭션에 대한 새 참조를 반환합니다. 다른 고루틴이 시작되기 전이나 후에 NewGoroutine 를 호출하는지 여부는 중요하지 않습니다.

모든 Transaction 메서드는 모든 Transaction 참조에서 사용할 수 있습니다. TransactionEnd() 이 고루틴에서 호출될 때 종료됩니다.

HTTP 핸들러를 래핑하여 트랜잭션 모니터링

표준 HTTP 라이브러리 패키지를 사용 하는 경우 함수 코드를 계측 하는 대신 HTTP 요청을 래핑하여 트랜잭션을 생성할 수 있습니다.

다음은 랩핑되는 HTTP 핸들러의 전후 예입니다.

전에:

http.HandleFunc("/users", usersHandler)

후에:

이렇게 하면 요청 및 응답 작성자와의 트랜잭션이 자동으로 시작되고 종료됩니다.

http.HandleFunc(newrelic.WrapHandleFunc(app, "/users", usersHandler))

핸들러의 트랜잭션에 액세스하려면 newrelic.FromContext API를 사용하세요. 이것은 Go 버전 1.7 이상에서만 작동합니다. 예를 들어:

func myHandler(w http.ResponseWriter, r *http.Request) {
txn := newrelic.FromContext(r.Context())
txn.NoticeError(errors.New("my error message"))
}

오류 모니터링

New Relic for Go는 세 가지 방법으로 오류를 캡처합니다.

원하는 경우...

이것을 사용

오류를 추적하고 메시지, 클래스 및 속성의 조합을 보고합니다.

Transaction.NoticeError()

경고를 트리거하거나 오류 메트릭에 영향을 주지 않고 예상 오류를 추적하고 메시지, 클래스 및 속성의 모든 조합을 보고합니다.

Transaction.NoticeExpectedError()

패닉 보고

defer 으)로 종료된 트랜잭션은 패닉을 자동으로 기록합니다. 자세한 내용은 New Relic for Go GitHub 설명서를 참조하십시오 . 버전 3.0.0부터 이 기능은 Config.ErrorCollector.RecordPanics 구성을 true 로 설정하여 구체적으로 활성화해야 합니다.

오류 응답 코드 보고

트랜잭션은 400 이상 100 이하의 오류를 자동으로 기록합니다. 자세한 내용은 New Relic for Go GitHub 설명서를 참조하십시오 .

APM 및 인프라 데이터에 대한 로그 보기

또한 로그와 애플리케이션의 데이터를 함께 가져와 더 쉽고 빠르게 문제를 해결할 수 있습니다. 컨텍스트의 로그를 사용하면 앱의 UI에서 직접 오류 및 추적과 관련된 로그 메시지를 볼 수 있습니다.

  1. 오류 페이지에서 추적을 클릭하면 오류 세부정보 페이지 로 이동합니다.
  2. 오류 세부정보 페이지에서 로그 보기 를 클릭합니다.
  3. 개별 로그 메시지와 관련된 세부 정보를 보려면 메시지를 직접 클릭하십시오.

Kubernetes 클러스터와 같은 인프라 데이터 컨텍스트에서 로그를 볼 수도 있습니다. 다른 UI로 전환할 필요가 없습니다.

추가 거래 방법

Transaction 객체에는 NoticeError , AddAttributeIgnore 와 같이 트랜잭션 동작을 제어하는 데 사용할 수 있는 몇 가지 선택적 메서드가 있습니다. 트랜잭션 방법 목록은 Godoc의 New Relic for Go 트랜잭션 방법을 참조하십시오.

Copyright © 2024 New Relic Inc.

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