Instrumento de monitoramento de browser com API de agente Java
O recurso oferece visibilidade sobre como o usuário está interagindo com seu aplicativo Java usando um trecho JavaScript (ou "agente") para instrumentar as páginas da Web do seu aplicativo. Para instalar o agente browser através da interface, siga os procedimentos para instalar o agente browser. Por exemplo, você pode:
Habilite um aplicativo de monitor APM.
Habilite com o método copiar/colar.
Habilite usando a API REST.
Você também pode instrumentar manualmente suas páginas da web usando a API do agente Java, conforme explicado neste documento.
Usar API do agente Java
Caso seu framework não permita que você habilite o monitoramento do Browser a partir de nossa interface, com o método copiar/colar, ou utilizando nossa API REST, você pode instrumentar manualmente o monitoramento de suas páginas web. Para fazer isso, use nossa API de agente Java.
Defina o sinalizador auto_instrument em browser_monitoring como false em seu newrelic.yml.
browser_monitoring:
auto_instrument:false
Reinicie seu aplicativo.
Limpe o cache de trabalho do servidor de aplicativos.
A limpeza do cache de trabalho força o servidor de aplicativos a recompilar JSPs, que é quando ocorre a instrumentação automática.
Use o sinalizador disabled_auto_pages na seção browser_monitoring . Por exemplo, para desativar a instrumentação automática em testpage_1.jsp e testpage_2.jsp, use o seguinte:
Adicione o método com.newrelic.api.agent.NewRelic.getBrowserTimingHeader() para ativar o controle de tempo. Veja abaixo os procedimentos para estrutura específica.
A instrumentação manual não está disponível com JSF. Para inserir o trecho JavaScript do browser nas páginas da web do seu aplicativo, use o método copiar/colar.
Se você estiver usando o Velocity Tools, defina uma ferramenta NewRelic em toolbox.xml:
<toolbox>
<tool>
<key>NewRelic</key>
<scope>application</scope>
<class>com.newrelic.api.agent.NewRelic</class>
</tool>
</toolbox>
Chame a API NewRelic no seu modelo de velocidade:
$NewRelic.getBrowserTimingHeader()
...
Para garantir que todas as visualizações de página do seu browser não sejam agrupadas em uma única transação /velocity (e para evitar problemas de agrupamento métrico), desative a configuração enable_auto_transaction_naming no arquivo newrelic.yml :
enable_auto_transaction_naming:false
Adicione newrelic-api.jar ao classpath do Tomcat, normalmente em .../tomcat/bin/setenv.sh:
Se já existir uma tag <toolbox scope="application"> , coloque <tool ... /> dentro da tag.
Em cada aplicativo, edite o modelo Velocity usado pelas outras páginas do aplicativo. Adicione esta tag na seção <head> antes de qualquer declaração <link> e <script> e depois de qualquer metatag:
$NewRelic.getBrowserTimingHeader()
Reinicie o servidor Tomcat:
Se você estiver usando Linux/Unix, adicione a seguinte linha de comando ao diretório Users/Tomcat/bin :
./shutdown.sh
./startup.sh
Se você estiver usando Windows, vá para o diretório Users/Tomcat/bin e adicione a seguinte linha de comando:
% shutdown.bat
% startup.bat
Verifique o arquivo de log para verificar se o agente está instrumento corretamente. Defina a configuração log_level em newrelic.yml como log_level: finer e verifique as seguintes mensagens:
May 17, 2011 9:33:18 AM NewRelic FINE: Compiling JSP: /jsp/header.jsp
May 17, 2011 9:33:18 AM NewRelic FINE: Injecting browser timing header into: /jsp/header.jsp
May 17, 2011 9:33:36 AM NewRelic FINE: Compiling JSP: /jsp/footer.jsp
May 17, 2011 9:33:36 AM NewRelic FINE: Injecting browser timing footer into: /jsp/footer.jsp
O trecho JavaScript não é inserido na resposta HTML até que o agente se conecte ao servidor.
May 17, 2011 9:43:21 AM NewRelic INFO: Real user monitoring is enabled with auto instrumentation
May 17, 2011 9:43:23 AM NewRelic FINER: Injecting browser timing header in a JSP. Content type is text/html
May 17, 2011 9:43:23 AM NewRelic FINER: Injecting browser timing footer in a JSP. Content type is text/html
May 17, 2011 9:43:23 AM NewRelic FINEST: Got browser timing header in NewRelic API: <script>var NREUMQ=[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);(function(){var d=document;var e=d.createElement("script");e.type="text/javascript";e.async=true;e.src="https://d7p9czrvs14ne.cloudfront.net/11/eum/rum.js";var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(e,s);})();</script>
May 17, 2011 9:43:23 AM NewRelic FINEST: Got browser timing footer in NewRelic API: <script type="text/javascript" charset="utf-8">NREUMQ.push(["nrf2","staging-beacon-1.newrelic.com","8512b4d93f",7449,"M1RTYksFDEYDUxdcDgoeZERQSwhGEmQGRhVL",0,413])</script>