• 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.

문제 신고

Java 에이전트 API: 주석을 사용하는 계측

New Relic의 Java 에이전트는 사용자 정의 계측 을 위한 여러 옵션을 제공합니다. 이러한 옵션 중 하나는 애플리케이션 코드에 Java 에이전트 API의 @Trace , @TraceLambda 또는 @TraceByReturnType 주석을 추가하는 것입니다. 이 문서에서는 주석을 사용하는 방법을 설명합니다.

중요

주석을 사용하려면 소스 코드를 수정해야 합니다. 소스 코드를 수정할 수 없거나 수정하고 싶지 않은 경우 다른 계측 옵션에 대한 사용자 지정 계측 을 참조하세요.

주석은 기본적으로 활성화되어 있습니다.

기본적으로 구성 설정 enable_custom_tracing 은 Java 에이전트에서 true 로 설정되며 이는 @Trace 주석이 작동하는 데 필요한 설정입니다.

이 설정은 기본적으로 newrelic.yml 에 포함되지 않습니다 . 주석을 비활성화하려면 newrelic.ymlcommon 섹션에 enable_custom_tracing: false (앞에 공백 2개 추가)을 설정하세요.

@추적하다

메소드에 @Trace 주석을 추가하면 해당 메소드에 대해 측정을 수행해야 함을 Java 에이전트에 알립니다.

메서드 호출을 사용자 지정 추적으로 추가하려면 메서드에 @Trace 주석을 추가하세요. 이러한 주석이 모두 포함되어 있으므로 클래스 경로에 newrelic-api.jar 가 나타나는지 확인하십시오.

import com.newrelic.api.agent.Trace;
...
@Trace
public void run() {
// background task
}

새 트랜잭션 만들기

트랜잭션이 표시되지 않고 새 트랜잭션을 시작하려면 @Trace 주석과 함께 dispatcher=true 을 포함합니다.

@Trace (dispatcher=true)
public void run() {
// background task
}

거래에 세부 정보 추가

트랜잭션 추적에 계측되지 않은 시간의 큰 블록이 표시되고 추적 내에 메서드를 더 포함하려는 경우 매개변수 없이 @Trace 주석을 사용할 수 있습니다.

@Trace
protected void methodWithinTransaction() {
// work
}

트랜잭션을 웹 요청으로 변환

백그라운드 작업 보고서를 Java 에이전트 API 호출로 웹 브라우저 트랜잭션으로 만들려면 다음을 수행합니다. @Trace(dispatcher=true) 주석이 달린 메서드에서 다음을 호출합니다.

NewRelic.setRequestAndResponse(Request request, Response response)

인수는 newrelic-api.jarRequestResponse 인터페이스 구현입니다.

중요

RequestResponse 객체가 이미 있는 경우에도 이 API 호출을 추가해야 합니다.

고유한 @Trace 주석 클래스 정의

고유한 @Trace 주석 클래스를 정의하는 경우 newrelic-api.jar 에 대한 종속성이 없습니다. 클래스를 정의하려면:

package com.test;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Trace {
public static final String NULL = "";
String metricName() default NULL;
boolean dispatcher() default false;
String tracerFactoryName() default NULL;
}

그런 다음 newrelic.ymlcommon 섹션에서 이 주석을 사용하도록 에이전트를 구성합니다.

class_transformer:
trace_annotation_class_name: com.test.Trace

@Trace의 속성

@Trace 주석은 다음 속성을 지원합니다.

@TraceLambda

이 기능은 기본적으로 비활성화되어 있으며 명시적으로 활성화해야 합니다(예: -Dnewrelic.config.instrumentation.trace_lambda.enabled=true) 주석이 적용됩니다. 동등한 환경 변수는 NEW_RELIC_INSTRUMENTATION_TRACE_LAMBDA_ENABLED 입니다.

트랜잭션 추적에 계측되지 않은 시간의 큰 블록이 표시되고 추적 내에 람다 표현식을 포함하려는 경우 매개변수 없이 @TraceLambda 주석을 사용할 수 있습니다.

import com.newrelic.api.agent.TraceLambda;
@TraceLambda
class ClassContainingLambdaExpressions() {
// work
}

람다 식은 컴파일 후에 포함하는 클래스의 정적 메서드가 됩니다. 기본적으로 주석 패턴과 일치하는 @TraceLambda 주석으로 표시된 클래스 내의 정적 메서드는 @Trace 주석으로 표시됩니다.

@TraceLambda 속성

@TraceLambda 주석은 다음 속성을 지원합니다.

@TraceByReturnType

추적 내에 특정 반환 유형이 있는 메서드를 포함하려면 @TraceByReturnType 주석을 사용하여 반환 유형을 속성으로 전달하는 클래스를 표시할 수 있습니다. 지정된 반환 유형 중 하나와 일치하는 주석이 있는 클래스의 메서드는 @Trace 주석으로 표시됩니다.

@TraceByReturnType(traceReturnTypes={Integer.class, String.class})
class ClassContainingMethods() {
// ...
}

@TraceByReturnType 속성

@TraceByReturnType 주석은 다음 속성을 지원합니다.

성능 고려 사항

Java 에이전트가 JVM에 있는 경우 주석이 있는 메서드에 코드를 삽입합니다. 데이터베이스 또는 웹 서비스 호출과 같은 대규모 작업에서는 성능 저하가 무시할 수 있지만 초당 수천 번 호출되는 접근자와 같이 자주 호출되는 메서드에서는 눈에 띄게 나타납니다.

주의

모든 방법을 계측하지 마십시오. 성능이 저하되고 측정항목 그룹화 문제 가 발생할 수 있습니다.

더 많은 API 기능

Java 에이전트 API 및 해당 기능에 대한 자세한 내용은 Java 에이전트 API 소개 를 참조하십시오.

Copyright © 2024 New Relic Inc.

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