애플리케이션에 부여하는 이름은 New Relic 성능 메트릭을 구성하는 데 도움이 될 수 있습니다.
New Relic의 Java 에이전트는 단일 JVM의 모든 트랜잭션 및 기타 측정항목을 app_name
설정 아래의 newrelic.yml
에 지정된 애플리케이션 이름으로 보고합니다(애플리케이션 이름 지정에 대한 자세한 내용은 Java 애플리케이션 이름 지정 참조). newrelic.yml
의 enable_auto_app_naming
}를 true
로 변경하면 애플리케이션의 이름이 컨텍스트, 필터, 서블릿 또는 요청 속성에 따라 지정됩니다.
이 설정을 사용하면 New Relic 사용자 인터페이스에서 다른 적절한 애플리케이션에 트랜잭션, 오류 및 메트릭을 보고하는 동안 단일 JVM에서 여러 웹 애플리케이션을 실행할 수 있습니다. 백그라운드 작업은 newrelic.yml
의 기본 애플리케이션 이름을 계속 사용합니다.
중요
이러한 구성 변경 사항을 적용하려면 JVM을 다시 시작해야 합니다.
이 구성은 무한 추적이 활성화된 상태에서 작동하지 않습니다.
주의
자동 앱 이름 지정을 활성화하면 에이전트가 수집하는 데이터 양이 증가합니다. 데이터 수집에 대해 경고하고 모니터링하는 다양한 방법이 있습니다.
애플리케이션 이름 소스
enable_auto_app_naming
을 true
로 설정하면 New Relic은 다음 정보 소스를 사용하여 애플리케이션의 이름을 지정합니다.
App type | Naming source |
---|---|
백그라운드 작업 | 의 기본 애플리케이션 이름 |
웹 트랜잭션 | 우선순위에 따라:
|
요청 속성
APPLICATION_NAME
요청 속성은 XML의 모든 설정보다 우선합니다. 웹 트랜잭션에서 가능한 한 빨리 이 속성을 설정하십시오. 여러 번 호출되는 경우 마지막 호출에 따라 애플리케이션 이름이 결정됩니다.
팁
APPLICATION_NAME
ServletRequests에서만 작동합니다.
요청 URI를 기반으로 세분화된 애플리케이션 이름 지정을 위해 요청 속성을 사용하려면:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... String requestUri = httpServletRequest.getRequestURI();
if (requestUri.startsWith("/my-special-request/")) { request.setAttribute("com.newrelic.agent.APPLICATION_NAME", "MySpecialWebApp"); } ...
서블릿 초기화 매개변수
init parameters 사용하여 web.xml
의 개별 서블릿에 대한 애플리케이션 이름을 설정하려면 다음을 수행하세요.
<servlet> <servlet-name>SqlServlet</servlet-name> <servlet-class>test.SqlServlet</servlet-class> <init-param> <param-name>com.newrelic.agent.APPLICATION_NAME</param-name> <param-value>MyServletApp</param-value> </init-param></servlet>
에이전트는 다음을 호출하여 init-param
의 값을 얻습니다.
javax.servlet.ServletConfig#getInitParameter(String)
인수 com.newrelic.agent.APPLICATION_NAME
사용.
웹 요청이 여러 서블릿을 호출하는 경우 완료되는 첫 번째 서블릿의 init-param
이 우선합니다. init-param
이 없는 서블릿은 웹 앱의 기본 애플리케이션 이름을 사용합니다.
XML로 애플리케이션 이름을 선언하는 것 외에도 javax.servlet.ServletRequest
에 속성을 저장하여 애플리케이션 코드에서 설정할 수도 있습니다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... request.setAttribute("com.newrelic.agent.APPLICATION_NAME", "MyWebApp"); ...
필터 초기화 매개변수
웹 앱에 서블릿이 없으면 필터에 init 매개변수를 사용할 수 있습니다.
<filter> <filter-name>SqlFilter</filter-name> <filter-class>test.SqlFilter</filter-class> <init-param> <param-name>com.newrelic.agent.APPLICATION_NAME</param-name> <param-value>MyFilterApp</param-value> </init-param></filter>
에이전트는 com.newrelic.agent.APPLICATION_NAME
인수로 javax.servlet.FilterConfig#getInitParameter(String)
를 호출하여 init-param
값을 얻습니다. 서블릿은 애플리케이션 이름 지정을 위한 필터보다 우선하므로 필터의 초기화 매개변수는 서블릿이 호출되지 않은 경우에만 사용됩니다. 완료할 첫 번째 필터의 init-param
이 우선합니다.
컨텍스트 매개변수
컨텍스트 매개변수를 사용하여 애플리케이션 이름을 설정하려면:
<context-param> <param-name>com.newrelic.agent.APPLICATION_NAME</param-name> <param-value>MyWebApp</param-value></context-param>
에이전트는 com.newrelic.agent.APPLICATION_NAME
인수로 javax.servlet.ServletContext#getInitParameter(String)
를 호출하여 컨텍스트 매개변수의 값을 얻습니다. 컨텍스트 매개변수는 display-name
요소보다 우선합니다.
이름 표시하기
web.xml
에서 display-name
요소를 사용하여 애플리케이션 이름을 확인하려면 다음을 수행합니다.
<display-name>MyWebApp</display-name>
에이전트는 javax.servlet.ServletContext#getServletContextName()
을 호출하여 display-name
요소의 값을 얻습니다.
컨텍스트 경로
display-name
요소가 없고 앱 이름을 설정하는 데 다른 상위 계층 방법이 사용되지 않는 경우 애플리케이션 이름은 웹 앱의 컨텍스트 경로에서 가져옵니다. 에이전트는 javax.servlet.ServletContext#getContextPath()
을 호출하여 컨텍스트 경로를 얻습니다.
컨텍스트 경로는 요청 컨텍스트를 선택하는 데 사용되는 요청 URI 부분입니다. 컨텍스트 경로는 요청 URI에서 항상 첫 번째에 옵니다. 예를 들어:
다음 URL을 고려하십시오.
http://example.com/newrelic-axis2-ws/getWeather
이 URL에서:
- 요청 URI는
/newrelic-axis2-ws/getWeather
입니다. - 컨텍스트 경로는
/newrelic-axis2-ws
입니다. - 애플리케이션의 이름은
newrelic-axis2-ws
입니다.