Identificando problemas e erros esquisitos em softwares
(com Dynatrace AppMon)

Gabriel B. Casella

SATI 2017 - UTFPR-PG
Repositório do GitHub

Plano de execução

  1. Instalar o Dynatrace AppMon;
  2. Monitorar o Tomcat (e configurar o AppMon para isso);
  3. Deployar duas aplicações exemplos utilizando Hibernate e MySQL/MariaDB e encontrar os erros;
  4. Intervalo;
  5. Conheçendo uma aplicação para simulação de um ecommerce.

O que é Dynatrace AppMon?

  • Basicamente o Dynatrace AppMon é uma ferramenta de monitoração APM/DPM
    • Utilizada para gerenciamento de performance e experiência de usuários em aplicações de várias cores e sabores
  • Vamos utilizá-la aqui para realizar algo bem mais simples: Identificar bugs nos programas exemplo

Bugs Everywhere

  • O intuito é mostrar o básico para se replicar com outras aplicações criadas aqui dentro da Universidade

Procedimentos Iniciais

  1. Peça a licença gratuita aqui:
    https://www.dynatrace.com/trial/appmon/
  2. Faça o download do Dynatrace AppMon (de acordo com sua plataforma):
    https://community.dynatrace.com/community/pages/viewpage.action?title=Step+1+-+Download+and+install+Dynatrace&spaceKey=EVAL
  3. Realize a instalação;
  4. Importe e ative a licença;
  5. Inicie os processos: Server + Collector:
~//init.d/dynaTraceServer start && ~//init.d/dynaTraceCollector start
~/dynatrace-7.0/init.d/dynaTraceServer start && ~/dynatrace-7.0/init.d/dynaTraceCollector start
  1. Inicie o Client (trocando o diretório de instalação caso não seja o padrão):
    ~/dynatrace-7.0/dtclient
  2. Aceite a conexão padrão;
  3. Importe a licença do arquivo seguindo o wizard;
  4. Restarte o server;

Monitorando o Tomcat - Adicionando uma tier

Monitorando o Tomcat - Alterando o System Profile:
Maior visibilidade nas exceções

Instrumentando o Tomcat:

Reconhecendo as transações pelo AppMon

  • Tomcat 6:
    1. Open the catalina.sh script in your Tomcat installation. By default, this file should be located in the <TOMCAT_HOME>/bin folder.
    2. Add the CATALINA_OPTS variable and set it to
      -agentpath:<DT_HOME>/agent/lib/libdtagent.so=name=<AgentName>,server=<CollectorName>
      as shown in highlighted text below.
    
    ...
    #
    # $Id: catalina.sh 609438 2008-01-06 22:14:28Z markt $
    # -----------------------------------------------------------------------------
    export CATALINA_OPTS={dtagentstring_unix}
    # OS specific support.  $var must be set to either true or false.
    							

Instrumentando o Tomcat:

Reconhecendo as transações pelo AppMon

  • Tomcat 6 - Exemplo de configuração do agentpath:

...
#
# $Id: catalina.sh 609438 2008-01-06 22:14:28Z markt $
# -----------------------------------------------------------------------------
export CATALINA_OPTS=-agentpath:~/dynatrace-7.0/agent/lib/libdtagent.so=name=Tomcat_Monitoring,server=127.0.0.1
# OS specific support.  $var must be set to either true or false.
						

Instrumentando o Tomcat:

Reconhecendo as transações pelo AppMon

  • Tomcat 7 or later:
  • It is recommend to configure environment variables in the setenv.bat or setenv.sh script located in CATALINA_BASE/bin or CATALINA_HOME/bin. This file is not typically found in a default Tomcat-only installation and must be created manually, co-located with startup, (in bin)

    1. On a 64-bit Ubuntu and a Tomcat 7 package installed with sudo apt-get install tomcat7, create setenv.sh in CATALINA_HOME/bin containing:

Instrumentando o Tomcat:

Reconhecendo as transações pelo AppMon

Verificando o agente no AppMon

Verificando as transações no AppMon

Testando aplicação exemplo 1:

Hibernate Web App - JavaWebTutor

  1. Faça o download do programa de exemplo por aqui;
  2. Importe o projeto no Eclipse;
  3. Edite o arquivo src/hibernate.cfg.xml para se adequar as conexões/usuário/senha do bando de dados;
  4. Exporte o .war do projeto
    • Talvez seja necessário o plugin "Java EE Developer Tools"
  5. Faça o deploy do war no Tomcat
  6. Acesse a aplicação: http://127.0.0.1:8080/HibernateWebApp;
  7. Espere 1 minuto, volte ao dashlet de PurePath no AppMon, aperte F5 e clique na transação;
  8. Qual o erro encontrado?

Testando aplicação exemplo 1

Testando aplicação exemplo 1

Corrigindo o erro:

  1. Execute o script db.sql dentro do projeto (Ele irá criar a database jwt no banco;
  2. Acesse a aplicação novamente: http://127.0.0.1:8080/HibernateWebApp;
  3. Espere 1 minuto, volte ao dashlet de PurePath no AppMon, aperte F5 e clique na transação;
  4. O erro foi solucionado?

Testando aplicação exemplo 1

Testando aplicação exemplo 1

Testando aplicação exemplo 2:

Spring MVC Hibernate XML

  1. Faça o download do programa de exemplo por aqui;
  2. Edite o arquivo dentro dos dois pacotes, .war,src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml para se adequar as conexões/usuário/senha do bando de dados;
  3. Faça o deploy do dois wars no Tomcat
  4. Acesse a aplicação: http://127.0.0.1:8080/SpringMvcHibernateXML-1.0.0-BUILD-SNAPSHOT-erro;
  5. Espere 1 minuto, volte ao dashlet de PurePath no AppMon, aperte F5 e clique na transação;
  6. Qual o erro encontrado?

Testando aplicação exemplo 2

Testando aplicação exemplo 2

Sem erro:

  1. Acesse a aplicação sem erro: http://127.0.0.1:8080/SpringMvcHibernateXML-1.0.0-BUILD-SNAPSHOT-sucesso;
  2. Espere 1 minuto, volte ao dashlet de PurePath no AppMon, aperte F5 e clique na transação;
  3. O erro foi solucionado?

Testando aplicação exemplo 2

Testando aplicação exemplo 2

Uma aplicação para simulação de ecommerce

EasyTravel

  • easyTravel provides a web portal which allows users to log in, search for journeys to various destinations, select promotional journeys directly that are offered and to book a journey using credit card details;
  • easyTravel is a multi-tier application implemented in .Net and Java. The starting of the various tiers and the enabling/disabling of different problem pattern plugins is done via a separate easyTravel Launcher

EasyTravel

EasyTravel

EasyTravel

EasyTravel

  1. Instale o easytravel com:
    java -jar dynatrace-easytravel-linux-x86_64-2.0.0.<version-number>.jar
  2. Inicie a aplicação:
    <easyTravel-installation-dir>/weblauncher.sh
  3. Instale o System Profile do EasyTravel;
  4. Inicie a seção de UEM → Standard;
  5. Brinque com a aplicação;
  6. Verifique as transações no AppMon.

EasyTravel - Problem Pattern

  1. Abra a seção de Problem Pattern e inicie um problema;
  2. Brinque com a aplicação;
  3. Verifique as transações no AppMon.

Perguntas?

Obrigado!