Go는 불투명한 런타임을 갖춘 컴파일 언어이므로 다른 언어처럼 자동 계측을 지원할 수 없습니다. 이러한 이유로 뉴렐릭 Go 에이전트는 SDK로 설계되었습니다. Go 에이전트는 SDK이므로 자동 통계를 지원하는 언어의 에이전트보다 설정에 더 많은 수동 작업이 필요합니다.
측정, 로그를 더 쉽게 만들기 위한 노력의 일환으로 Go 에이전트 팀은 Go easy 측정, 로그 도구를 만들었습니다. 이 도구는 뉴렐릭 Go 에이전트를 사용하여 소스 코드에 대한 변경 사항을 제안함으로써 대부분의 작업을 수행합니다.
작동 원리
이 도구는 애플리케이션의 작동을 방해하지 않으며, 코드를 직접 변경하지 않습니다. 다음과 같은 일이 발생합니다.
- 이는 코드를 분석하고 Go 에이전트가 텔리메트리 데이터를 캡처할 수 있도록 변경 사항을 제안합니다.
.diff파일의 변경 사항을 검토하고 소스 코드에 추가할 변경 사항을 결정합니다.
분석의 일부로, 이 도구는 go get 또는 기타 Go 언어 툴체인 명령을 호출할 수 있으며, 이는 go.mod 파일을 수정할 수 있지만 실제 소스 코드는 수정할 수 없습니다.
측정된 것은 무엇인가?
이 도구가 사용자의 추가에서 로그아웃할 수 있는 범위는 다음 작업으로 제한됩니다.
- 프로세서에 의해 래핑된 함수 또는 트레이스의 오류 캡처
- 기존 뉴렐릭 측정값을 감지하고, 기존 뉴렐릭 코드를 기반으로 소스 코드에 대한 변경 사항을 제안합니다.
- 트랜잭션을 사용하여 애플리케이션의
main()메서드에서 호출되는 로컬로 정의된 함수 추적 - 비동기 세그먼트를 사용하여 비동기 함수 및 함수 리터럴 추적
- 추적을 위해 지원되는 라이브러리에 미들웨어 추가
- 외부 트래픽에 분산 추적 주입
지원 라이브러리
- 표준 라이브러리
- 넷/http
- gin
- gRPC
- gochi
- mysql
- slog
설치
아래 설치 단계를 시작하기 전에 현재 Go 프로그래밍 언어 수명 주기 에 대한 지원 기간 내에 있는 Go 버전이 설치되어 있는지 확인하세요.
Go easy 계측 설치:
$go install github.com/newrelic/go-easy-instrumentation@latest제안 생성
Go easy 측정, 도구는 Go 기능에 대한 제안을 제공합니다. 출력된 diff 파일을 주의 깊게 검토하여 측정, 계측의 정확성을 확인하십시오.
계측 제안 생성
이 도구는 Git과 함께 사용할 때 가장 효과적입니다. 제안된 변경 사항을 적용하기 전에 애플리케이션이 스테이징되지 않은 변경 사항이 없는 브랜치에 있는지 확인하는 것이 좋습니다. 이를 확인한 후, 다음 단계에 따라 안드로이드에 뉴렐릭 Go 에이전트를 설치하는 변경 사항을 생성, 검토 및 적용합니다.
- 다음 CLI 명령을 실행하여 작업 디렉토리에
new-relic-instrumentation.diff이라는 이름의 파일을 만듭니다.bash$go-easy-instrumentation instrument ../my-application/ .diff파일을 열고 내용을 확인하거나 수정하세요.- 계측 제안에 만족하면 파일을 저장한 다음 변경 사항을 적용합니다.bash$mv new-relic-instrumentation.diff ../my-application/$cd ../my-application$git apply new-relic-instrumentation.diff
변경 사항이 적용되면 뉴렐릭 Go 에이전트가 설치된 상태로 실행되어야 합니다. 에이전트 설치가 원하는 대로 작동하지 않는 경우, 일반적인 Git 명령을 사용하면 쉽게 복구할 수 있습니다. 예를 들어, 다음 중 하나를 시도해 볼 수 있습니다.
- 변경 사항을 저장하세요
git stash - 코드를 이전 커밋으로 되돌리기
다음은 뭐지?
제안사항이 있거나 문제점을 발견하시면 Github 이슈를 만들어 주세요.