Les noms que vous donnez à votre application peuvent vous aider à organiser vos métriques de performances New Relic .
L'agent Java de New Relic signale toutes les transactions et autres métriques dans une seule au JVM application nom spécifié dans newrelic.yml
sous le paramètre app_name
(pour plus d'informations sur la application dénomination, voir Nommez votre Java application). En changeant enable_auto_app_naming
dans newrelic.yml
en true
, l'application sera nommée en fonction de son contexte, de son filtre, de son servlet ou de son attribut de requête.
Ce paramètre vous permet d'exécuter plusieurs applications Web dans une seule JVM tout en signalant les transactions, les erreurs et les métriques à d'autres applications appropriées dans l'utilisateur de l'interface New Relic . Les tâches en arrière-plan utiliseront toujours le nom d’application par défaut de newrelic.yml
.
Important
Ces modifications de configuration nécessitent un redémarrage de la JVM pour prendre effet.
Cette configuration ne fonctionne PAS avec Infinite Tracing activé.
Prudence
L'activation de la dénomination automatique des applications augmentera la quantité de données ingérées par l'agent. Il existe différentes méthodes pour alerter et monitorer l'ingestion de données.
Sources des noms d'application
Lorsque vous définissez enable_auto_app_naming
sur true
, New Relic utilise les sources d’informations suivantes pour nommer votre application :
App type | Naming source |
---|---|
Tâches d'arrière-plan | Le nom de l'application par défaut de |
transaction web | Par ordre de priorité :
|
Demande d'attribut
L'attribut de requête APPLICATION_NAME
a priorité sur tous les paramètres du XML. Définissez cet attribut le plus tôt possible dans le Web de transaction. Si elle est appelée plusieurs fois, la dernière invocation détermine le nom de l'application.
Conseil
APPLICATION_NAME
fonctionne uniquement avec ServletRequests.
Pour utiliser l'attribut de demande pour une dénomination d'application précise en fonction de l'URI de la demande :
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"); } ...
Paramètre d'initialisation du servlet
Pour définir le nom de l'application pour les servlets individuels dans web.xml
à l'aide de init parameters:
<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>
L'agent obtient la valeur de init-param
en appelant
javax.servlet.ServletConfig#getInitParameter(String)
avec l'argument com.newrelic.agent.APPLICATION_NAME
.
Si une requête Web appelle plusieurs servlets, le init-param
du premier servlet à se terminer a la priorité. Un servlet qui n’a pas de init-param
utilise le nom d’application par défaut pour l’application Web.
En plus de déclarer le nom de l'application en XML, vous pouvez également le définir dans le code de votre application en stockant un attribut dans le javax.servlet.ServletRequest
:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... request.setAttribute("com.newrelic.agent.APPLICATION_NAME", "MyWebApp"); ...
Paramètre d'initialisation du filtre
Si votre application Web ne dispose pas de servlets, vous pouvez utiliser un paramètre init pour un filtre :
<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>
L'agent obtient la valeur de init-param
en appelant javax.servlet.FilterConfig#getInitParameter(String)
avec l'argument com.newrelic.agent.APPLICATION_NAME
. Les servlets ont la priorité sur les filtres pour la dénomination application, donc le paramètre init d'un filtre n'est utilisé que si aucun servlet n'a été invoqué. Le init-param
du premier filtre à terminer a la priorité.
Paramètres de contexte
Pour utiliser un paramètre de contexte pour définir le nom de l’application :
<context-param> <param-name>com.newrelic.agent.APPLICATION_NAME</param-name> <param-value>MyWebApp</param-value></context-param>
L'agent obtient la valeur du paramètre de contexte en appelant javax.servlet.ServletContext#getInitParameter(String)
avec l'argument com.newrelic.agent.APPLICATION_NAME
. Le paramètre de contexte a priorité sur l'élément display-name
.
Nom d'affichage
Pour déterminer le nom de l'application en utilisant l'élément display-name
dans web.xml
:
<display-name>MyWebApp</display-name>
L'agent obtient la valeur de l'élément display-name
en appelant javax.servlet.ServletContext#getServletContextName()
.
Chemin de contexte
S'il n'y a pas d'élément display-name
et qu'aucune des autres méthodes de hiérarchie supérieure n'est utilisée pour définir le nom de l'application, le nom de l'application provient du chemin de contexte de l'application Web. L'agent obtient le chemin de contexte en appelant javax.servlet.ServletContext#getContextPath()
.
Le chemin de contexte est la partie de l'URI de la demande qui est utilisée pour sélectionner le contexte de la demande. Le chemin de contexte vient toujours en premier dans un URI de requête. Par exemple:
Considérez l’URL suivante :
http://example.com/newrelic-axis2-ws/getWeather
Dans cette URL :
- L'URI de la demande est
/newrelic-axis2-ws/getWeather
. - Le chemin de contexte est
/newrelic-axis2-ws
. - L'application est nommée
newrelic-axis2-ws
.