New Relic 속성 은 이벤트 또는 트랜잭션의 속성을 결정하는 정보를 포함하는 키-값 쌍입니다. 이러한 키-값 쌍을 사용하면 애플리케이션에 대한 통찰력을 높이고 쿼리할 때 데이터에 주석을 추가할 수 있습니다. 사용자 정보를 New Relic에 자동으로 전달할 수도 있습니다.
기본 속성과 사용자 정의 속성은 모두 다음에서 볼 수 있습니다. 트랜잭션 추적, 분산 추적 및 오류 분석 대시보드 의 APM 이벤트 및 브라우저 이벤트. 이러한 각 대상으로 보낼 속성을 정확하게 사용자 정의할 수 있습니다.
이 문서에서는 Java 에이전트 속성을 설명하고 속성을 활성화 또는 비활성화하는 방법을 자세히 설명하며 에이전트가 대상 에 대해 포함하거나 제외할 속성을 결정하기 위해 따르는 규칙을 설명합니다.
팁
이러한 속성 설정은 Java 에이전트 버전 3.7.0 이상에 적용됩니다. 이전 버전의 에이전트를 사용하는 경우 레거시 속성 구성 업데이트 를 참조하세요.
자바 관련 속성
기본 APM 속성 외에도 Java 에이전트는 다음 소스에서 속성을 수집합니다.
웹 요청에 대한 응답 상태 코드입니다. 이 속성의 키는 http.statusCode
입니다. 참고: 8.0.0 미만의 에이전트 버전에서는 httpResponseCode
속성을 사용했습니다.
각 대상에 대한 기본 설정은 다음과 같습니다.
- 트랜잭션 추적: 사용
- 오류 분석: 사용
- APM 이벤트: 사용
- 브라우저 이벤트: 비활성화됨
웹 요청에 대해 존재하는 경우 응답 상태 메시지입니다. 이 속성의 키는 http.statusText
입니다. 참고: 8.0.0 미만의 에이전트 버전에서는 httpResponseMessage
속성을 사용했습니다.
각 대상에 대한 기본 설정은 다음과 같습니다.
- 트랜잭션 추적: 사용
- 오류 분석: 사용
- APM 이벤트: 사용
- 브라우저 이벤트: 비활성화됨
스레드의 이름입니다. 이 속성의 키는 jvm.thread_name
입니다.
각 대상에 대한 기본 설정은 다음과 같습니다.
- 트랜잭션 추적: 사용
- 오류 분석: 사용
- APM 이벤트: 비활성화됨
- 브라우저 이벤트: 사용할 수 없음
잠긴 스레드의 이름입니다. 이 속성의 키는 jvm.lock_thread_name
입니다.
각 대상에 대한 기본 설정은 다음과 같습니다.
- 거래 추적: 사용할 수 없음
- 오류 분석: 사용
- APM 이벤트: 사용할 수 없음
- 브라우저 이벤트: 사용할 수 없음
NewRelic.addCustomParameter(...) Java 에이전트 API 호출에 의해 추가된 속성입니다. 이 속성의 키 이름은 메서드를 호출할 때 지정하는 항목에 따라 다릅니다.
각 대상에 대한 기본 설정은 다음과 같습니다.
트랜잭션 추적: 사용
오류 분석: 사용
APM 이벤트: 비활성화됨
브라우저 이벤트: 비활성화됨
중요
사용자 정의 속성을 생성하기 전에 NRQL에서 사용하는 New Relic의 예약 용어 목록을 검토하십시오. 그렇지 않으면 예상치 못한 결과를 얻을 수 있습니다.
NewRelic.getAgent().getTracedMethod().addCustomAttribute(...) Java 에이전트 API에 대한 호출로 추가된 속성입니다. 이 속성의 키 이름은 메서드를 호출할 때 지정하는 항목에 따라 다릅니다.
이러한 속성은 분산 추적 UI 에서 찾거나 쿼리 빌더 에서 직접 쿼리할 수 있는 스팬 이벤트에 추가됩니다.
중요
사용자 정의 속성을 생성하기 전에 NRQL에서 사용하는 New Relic의 예약 용어 목록을 검토하십시오. 그렇지 않으면 예기치 않은 결과를 얻을 수 있습니다.
Java 에이전트 API의 NoticeError()
호출에 추가된 속성입니다. 이 속성의 키 이름은 메서드를 호출할 때 지정하는 항목에 따라 다릅니다.
각 대상에 대한 기본 설정은 다음과 같습니다.
- 거래 추적: 사용할 수 없음
- 오류 분석: 사용
- APM 이벤트: 사용할 수 없음
- 브라우저 이벤트: 사용할 수 없음
Java 에이전트는 다음 응답 및 요청 헤더를 특성으로 캡처할 수 있습니다.
캡처된 HTTP 요청 헤더:
request.headers.referer
request.headers.accept
request.headers.contentLength
request.headers.host
request.headers.userAgent
캡처된 응답 헤더:
response.headers.contentType
에이전트는 다른 요청 헤더를 캡처하지 않습니다.
속성 시스템은 위에 나열된 헤더 값 이외의 헤더 값에는 적용되지 않습니다. 여기에 나열되지 않은 추가 요청 헤더를 캡처하려면 custom_request_headers 구성 옵션을 사용하여 에이전트가 캡처할 헤더를 지정해야 합니다. 또는 Java 에이전트 API 의
addCustomParameter()
메소드를 사용하여 헤더를 직접 기록할 수 있습니다.각 대상에 대한 기본 설정은 다음과 같습니다.
트랜잭션 추적: 사용
오류 분석: 사용
APM 이벤트: 사용
브라우저 이벤트: 비활성화됨
자바 에이전트는 기본적으로 request.method
속성의 일부로 요청 메서드 GET, POST 및 PUT을 캡처합니다.
트랜잭션의 요청 매개변수는 기본적으로 캡처되지 않습니다. addCustomParameter()
자바 에이전트 API를 사용하여 요청 매개변수를 캡처합니다.
이러한 속성의 키는 request.parameters.*
입니다. 민감한 정보 캡처가 우려되는 경우 다음 옵션을 사용할 수 있습니다.
attributes.include
에서 와일드 카드를 사용하지 마십시오. 대신 캡처할 각 필드를 명시적으로 지정하십시오.attributes.include
에서 와일드 카드를 사용하려면attributes.exclude
을 사용하여 민감한 필드를 명시적으로 제외하십시오.
사용자 속성 수집
APM의 Java 에이전트를 사용하면 구성 파일을 편집하여 에서 사용자 정보를 자동으로 수집할 수 있습니다. 그런 다음 사용자 지정 특성을 수동으로 만들 필요 없이 사용자 정보에 대해 NRQL 쿼리 를 실행할 수 있습니다. 이 기능은 New Relic의 Java 에이전트 3.10.0 이상에서 사용할 수 있습니다.
중요
Java 사용자 속성은 높은 보안 모드 와 호환되지 않습니다.
Java 에이전트 8.1.0을 사용하여 공개 API를 통해 enduser.id
사용자 속성을 수집하려면 이상, 전화:
NewRelic.setUserId(String userId);
다음은 사용자 ID를 설정하는 예제 코드 스니펫입니다.
@Trace(dispatcher = true)public void run() { NewRelic.setUserId("example-user-id");}
Java 에이전트 3.10.0을 사용하여 서블릿 계측을 통해 사용자 속성을 수집하려면 또는 더 높게:
일반적으로
newrelic.jar
과 같은 디렉토리에 있는newrelic.yml
을(를) 엽니다.class_transformer
섹션에서com.newrelic.instrumentation.servlet-user
편집하여enabled
true
으로 설정합니다.class_transformer:# This instrumentation reports the name of the user principal returned from# HttpServletRequest.getUserPrincipal() when servlets and filters are invoked.com.newrelic.instrumentation.servlet-user:enabled: true웹 서버를 다시 시작하십시오.
8.1.0 을 사용하는 경우 Java 에이전트 이상의 릴리스에서는 com.newrelic.instrumentation.servlet-user
활성화하거나 공개 API를 사용하고 몇 분 정도 기다리면 enduser.id
속성을 쿼리할 수 있습니다. 예를 들어 다음 NRQL 쿼리를 사용하여 모든 사용자의 고유한 수를 얻을 수 있습니다.
SELECT uniqueCount(enduser.id) FROM Transaction SINCE 1 day ago
또는 3.10.0 을 사용하는 경우 Java 에이전트 이상 릴리스 및 com.newrelic.instrumentation.servlet-user
활성화, 몇 분 내에 user
속성을 쿼리할 수 있습니다.
SELECT uniqueCount(user) FROM Transaction SINCE 1 day ago
두 경우 모두 오류가 보고되면 사용자 속성을 사용하여 지정된 오류 그룹에서 영향을 받는 사용자 수를확인할 수 있습니다.
속성 구성: 활성화, 포함 및 제외
Java 에이전트가 New Relic에 보고하는 속성 유형 또는 특정 속성을 구성할 수 있습니다. 이것은 종종 보안상의 이유로 New Relic에 보고하고 싶지 않은 특정 민감한 속성이 있을 때 수행됩니다. 어떤 설정이 다른 설정보다 우선하는지 알아보려면 속성 구성 규칙 을 참조하십시오.
속성 구성 옵션:
목적지 | 구성 옵션 | 기본값 |
---|---|---|
모두 | 사실 | |
트랜잭션 추적 | 사실 | |
거래 세그먼트 | 사실 | |
오류 분석 | 사실 | |
APM 이벤트 | 사실 | |
브라우저 이벤트 | 거짓 | |
스팬 이벤트 |
| 사실 |
기타 리소스:
- Java 에이전트 구성 파일 템플릿 을 참조하십시오.
- 어떤 설정이 다른 설정보다 우선하는지를 포함하여 속성 구성을 관리하는 규칙을 참조하십시오.
목적지 | 구성 옵션 | 기본값 |
---|---|---|
모두 | (없음) | |
트랜잭션 추적 | (없음) | |
거래 세그먼트 | (없음) | |
오류 분석 | (없음) | |
APM 이벤트 | (없음) | |
브라우저 이벤트 | (없음) | |
스팬 이벤트 |
| (없음) |
기타 리소스:
- Java 에이전트 구성 파일 템플릿 을 참조하십시오.
- 어떤 설정이 다른 설정보다 우선하는지를 포함하여 속성 구성을 관리하는 규칙을 참조하십시오.
목적지 | 구성 옵션 | 기본값 |
---|---|---|
모두 | (없음) | |
트랜잭션 추적 | (없음) | |
거래 세그먼트 | (없음) | |
오류 분석 | (없음) | |
APM 이벤트 | (없음) | |
브라우저 이벤트 | (없음) | |
스팬 이벤트 | (없음) |
기타 리소스:
- Java 에이전트 구성 파일 템플릿 을 참조하십시오.
- 어떤 설정이 다른 설정보다 우선하는지를 포함하여 속성 구성을 관리하는 규칙을 참조하십시오.
속성 규칙
Java 에이전트는 대상에 대해 포함하거나 제외할 속성을 결정할 때 다음 규칙을 따릅니다.
기본 attributes.enabled
속성을 false
로 설정하면 에이전트는 속성을 전혀 보고하지 않습니다.
에이전트 구성:
attributes.enabled: false
attributes.include: request.parameters.*
error_collector.attributes.enabled: true
입력 키:
foo
bar
request.parameters.foo
request.parameters.bar
에이전트 출력:
트랜잭션 추적: 속성 없음
오류 분석: 속성 없음
APM 이벤트: 속성 없음
브라우저 이벤트: 속성 없음
대상에 대해 사용 을 false
으로 설정하면 에이전트가 포함/제외 설정을 무시하고 해당 대상에 대한 속성을 보고하지 않습니다.
에이전트 구성:
transaction_tracer.attributes.enabled: false
attributes.include: one, two*
transaction_tracer.attributes.include: three, four
입력 키:
one
two
three
four
에이전트 출력:
트랜잭션 추적: 속성 없음
오류 분석:
one
,two
APM 이벤트:
one
,two
브라우저 이벤트: 속성 없음
.exclude
속성은 .include
속성을 재정의합니다.
에이전트 구성:
attributes.enabled: true
attributes.include: foo, myCustomAtt
attributes.exclude: password, myCustomAtt
입력 키:
foo
myCustomAtt
password
에이전트 출력:
거래 추적:
foo
오류 분석:
foo
APM 이벤트:
foo
브라우저 이벤트:
foo
여러 포함 또는 제외 속성이 동일한 키에 영향을 미치는 경우 가장 구체적인 설정이 우선합니다.
에이전트 구성:
attributes.enabled: true
attributes.include: foo, myCustomAtt
attributes.exclude: password, myCustomAtt
browser_monitoring.attributes.enabled: true
입력 키:
food
food.bread
food.fruit.banana
food.fruit.apple
에이전트 출력:
거래 추적:
food.fruit.apple
오류 분석:
food.fruit.banana
,food.fruit.apple
APM 이벤트:
food.fruit.banana
,food.fruit.apple
브라우저 이벤트:
food.fruit.banana
,food.fruit.apple
.include
및 .exclude
속성에 지정된 키는 대소문자를 구분합니다.
에이전트 구성:
attributes.enabled: true
attributes.exclude: password, PaSsWoRd
입력 키:
password
Password
PASSWORD
PaSsWoRd
PassWORD
에이전트 출력:
트랜잭션 추적:
Password
,PASSWORD
,PassWORD
오류 분석:
Password
,PASSWORD
,PassWORD
APM 이벤트:
Password
,PASSWORD
,PassWORD
브라우저 이벤트:
Password
,PASSWORD
,PassWORD
키 끝에 별표 *
를 와일드카드로 사용할 수 있습니다. 이것은 동일한 접두사를 가진 속성 집합과 일치합니다.
에이전트 구성:
attributes.enabled: true
attributes.include: custom*
attributes.exclude: request.parameters.*
입력 키:
custom
custom.key1
custom.key2
request.parameters.
request.parameters.foo
request.parameters.bar
에이전트 출력:
트랜잭션 추적:
custom
,custom.key1
,custom.key2
오류 분석:
custom
,custom.key1
,custom.key2
APM 이벤트:
custom
,custom.key1
,custom.key2
브라우저 이벤트:
custom
,custom.key1
,custom.key2