코드 레벨 지표를 사용하면 뉴렐릭 CodeStream 확장 프로그램을 사용하는 개발자가 코드의 개별 메서드와 함께 IDE에 상황에 맞게 표시되는 데이터를 볼 수 있습니다. 이를 통해 개발자는 코드를 작성하고 검토할 때 성능 문제를 보다 적극적으로 해결할 수 있습니다.
코드 수준 메트릭을 활성화하면 Go 에이전트가 추적 데이터에 속성을 첨부합니다. 이러한 속성은 해당 추적에 의해 계측된 작업을 담당하는 애플리케이션 소스 코드의 위치를 보여줍니다. 볼 수 있는 데이터는 다음과 같습니다.
소스 파일 이름
소스 파일 줄 번호
기능 이름
네임스페이스
코드 수준 메트릭 컬렉션을 제어하는 데 도움이 되는 Go 에이전트 구성 설정을 살펴보세요. 구성을 완료한 후 데이터를 찾는 데 도움이 필요한 경우 지표 보기 를 참조하십시오. 메트릭이 수집되는 방식을 더 자세히 제어하려면 Go 에이전트 코드 수준 메트릭 계측 을 참조하세요.
중요
코드 수준 메트릭은 Go 에이전트 버전 3.18.0 이상에서 사용할 수 있으며 버전 3.24.0 이상에서는 기본적으로 활성화됩니다. 활성화하려면 아래 설명된 대로 애플리케이션 구성에 newrelic.ConfigCodeLevelMetricsEnabled(true) 추가해야 합니다.
구성 방법
애플리케이션에서 Go 에이전트를 구성하기 위해 newrelic.NewApplication 을 호출할 때 다음과 같이 newrelic.ConfigCodeLevelMetricsEnabled 옵션을 포함하여 코드 수준 측정항목을 활성화할 수 있습니다.
이 간단한 단계를 통해 Go 에이전트는 트랜잭션의 다음 에이전트 속성에 소스 코드 컨텍스트 정보를 추가합니다.
이름
설명
code.function
트랜잭션을 시작한 함수의 이름입니다. 경우에 따라 Go 컴파일러에서 자동으로 생성할 수 있습니다.
code.namespace
함수가 있는 패키지/네임스페이스입니다. 점( . )과 같은 구분 기호로 결합된 code.namespace 및 code.function 조합은 함수를 고유하게 식별해야 합니다.
code.filepath
보고되는 함수가 포함된 소스 파일의 경로 이름입니다. 일반적으로 이것은 완전한 절대 경로 이름입니다. 이것을 상대 경로로 변경할 수 있는 구성 옵션은 아래를 참조하십시오.
code.lineno
트랜잭션이 시작된 code.filepath 내의 줄 번호입니다. 이를 제어하는 방법 은 계측 가이드 를 참조하십시오.
애플리케이션에서 코드 수준 메트릭 컬렉션을 더욱 구체화하는 데 사용할 수 있는 추가 구성 옵션이 있습니다.
다음 태그 중 하나를 설정하면 오류를 생성하는 소프트웨어 버전을 식별하는 데 도움이 됩니다.
NEW_RELIC_METADATA_SERVICE_VERSION 배포된 코드 버전(대부분의 경우 1.2.3과 같은 의미 버전)이 포함된 이벤트 데이터에 대해 tags.service.version 생성하지만 항상 그런 것은 아닙니다.
NEW_RELIC_METADATA_RELEASE_TAG 릴리스 태그(예: v0.1.209)가 포함된 이벤트 데이터에 tags.releaseTag 생성합니다. 또는 릴리스-209).
NEW_RELIC_METADATA_COMMIT 커밋 SHA가 포함된 이벤트 데이터에 대해 tags.commit 를 생성합니다. 전체 SHA를 사용하거나 처음 7자만 사용할 수 있습니다(예: 734713b).
향후 릴리스된 오류 받은 편지함에서는 오류를 생성하는 소프트웨어 버전을 자동으로 추적합니다. 모든 버전 데이터는 CodeStream 에도 표시됩니다.
기본적으로 코드 수준 메트릭이 활성화된 상태에서 에이전트는 보고된 기능이 의도한 것인지 확인하기 위해 에이전트 자체의 내부라고 생각하는 호출 스택의 기능을 무시합니다. 코드 수준 메트릭 계측 코드로 이동하기 위해 호출됩니다. 기본적으로 패키지 이름이 github.com/newrelic/go-agent/ 으로 시작하는 모든 함수를 무시하여 이 작업을 수행합니다. 고유한 IgnoredPrefixes 값을 설정하여 임의의 이름 목록으로 변경할 수 있습니다.
이를 수행하려면 다음 중 하나를 수행하십시오.
NewApplication 함수를 통해 구성하는 경우 ConfigCodeLevelMetricsIgnoredPrefixes 옵션을 추가하여 원하는 수의 접두사 문자열을 별도의 문자열 인수로 전달합니다.
Config 구조체의 CodeLevelMetrics.IgnoredPrefixes 멤버( []string 값)를 직접 설정할 수도 있지만 Config 구조체를 직접 조작하는 대신 위에서 언급한 방법 중 하나를 사용하는 것이 좋습니다.
중요
3.20.0 이전의 Go Agent 버전에서는 이 옵션은 복수형이 아닌 단수형으로 명명되었습니다(즉, ConfigCodeLevelMetricsIgnoredPrefix ). 이러한 이름은 더 이상 사용되지 않으며 여기에 문서화된 이름을 사용해야 합니다. 이전 이름도 이전 버전과의 호환성을 위해 계속 지원됩니다.
기밀 유지와 같은 이유로 ConfigCodeLevelMetricsIgnoredPrefixes 옵션을 통해 일부 모듈을 무시하도록 선택한 경우 에이전트가 보고한 구성 데이터에서도 이러한 접두사 목록을 수정할 수도 있습니다.
이는 ConfigCodeLevelMetricsRedactIgnoredPrefixes 옵션을 설정하여 수행됩니다. true 값이 주어지면 무시된 접두사 목록이 에이전트가 보고하는 구성 데이터에 표시되지 않습니다. 그렇지 않으면 보고됩니다.
다음 중 하나를 수행합니다.
NewApplication 함수를 통해 구성하는 경우 ConfigCodeLevelMetricsRedactIgnoredPrefixes 옵션을 추가합니다.
이 수정 옵션은 Go Agent 버전 3.20.0에서 사용할 수 있습니다. 그리고 나중에.
기본적으로 코드 수준 메트릭이 활성화된 상태에서 에이전트는 각 소스 파일의 전체 경로 이름을 보고합니다. 그러나 이것은 바람직하지 않을 수 있습니다. 예를 들어, 프로젝트 소스 트리의 루트와 관련된 응용 프로그램 경로만 보고할 수 있으므로 파일 시스템에 설치된 위치에 관계없이 인스턴스 간에 데이터가 상호 연관될 수 있습니다.
이를 수행하려면 로컬 프로젝트 소스 경로의 시작을 나타내는 문자열을 지정하십시오. 해당 접두사가 소스 파일 경로 이름에서 발견되면 그 앞에 나타나는 모든 것이 제거됩니다. 예를 들어 경로 접두사 문자열이 myproject/src 으로 설정된 경우 /usr/local/projects/myproject/src/widget/main.go 은 코드 수준 측정항목에서 myproject/src/widget/main.go 로 보고됩니다.
사용하려는 경로 접두어가 여러 개인 경우 모든 이름을 별도의 매개변수로 나열하기만 하면 됩니다.
PathPrefixes 이 비어 있거나 소스 파일 경로에 접두사 문자열이 전혀 포함되어 있지 않으면 전체 경로 이름이 보고됩니다.
다음 중 하나를 수행합니다.
NewApplication 함수를 통해 구성하는 경우 ConfigCodeLevelMetricsPathPrefixes 옵션을 추가합니다.
3.20.0 이전의 Go Agent 버전에서는 이 옵션은 복수형이 아닌 단수형으로 명명되었습니다(즉, ConfigCodeLevelMetricsPathPrefix ). 이러한 이름은 더 이상 사용되지 않으며 여기에 문서화된 이름을 사용해야 합니다. 이전 이름도 이전 버전과의 호환성을 위해 계속 지원됩니다.
기밀 유지와 같은 이유로 ConfigCodeLevelMetricsPathPrefixes 옵션을 통해 보고된 소스 경로 이름을 줄이도록 선택한 경우 에이전트가 보고한 구성 데이터에서 경로 접두사 목록도 수정할 수 있습니다.
이는 ConfigCodeLevelMetricsRedactPathPrefixes 옵션을 설정하여 수행됩니다. true 값이 주어지면 경로 접두사 목록이 에이전트가 보고하는 구성 데이터에 표시되지 않습니다. 그렇지 않으면 보고됩니다.
다음 중 하나를 수행합니다.
NewApplication 함수를 통해 구성하는 경우 ConfigCodeLevelMetricsRedactPathPrefixes 옵션을 추가합니다.