Você está na página 1de 34

Anlise comparativa de ferramentas

de monitoramento de erros para


aplicaes Java
Natanael Souza dos Santos
Introduo
Paradigma da computao em nuvem
Benefcios
elasticidade, flexibilidade, on-demand, otimizao
de recursos de hardware e software
Aumento da complexidade
Servios de monitoramento
Monitoramento de datacenters, monitoramento de
billing, gerenciamento de performance...
Introduo
Ambientes de desenvolvimento de software
Controle do ambiente de produo
Conceitos e Ferramentas
Servio de monitoramento de erros
SaaS
Objetivos dos Errors Trackers
Clientes Felizes
Desenvolvedor no tem conhecimento dos erros
Falta de conhecimento tcnico por parte dos usurios
Tempo Dinheiro
Processo custoso
Anlise de cdigo fonte
Anlise de arquivos de logging
Depurao interativa
Ferramentas de monitoramento de erros

Linguagem Cdigo Verso Atualizado


Aberto

Airbreake Multi Sim 2.2.8 06/2013

Overops JVM Based No 4.8.12 07/2017

Raygun Multi Sim 2.2.0 12/2016

Rollbar Multi Sim 0.5.4 05/2017

Sentry Multi Sim 8.18.0 07/2017


Integrao com outros servios
Ambiente de Teste e Metodologia
Acer, Aspire E 15, E5-573-54ZV
Intel Core i5-5200U
8GB DDR3 L
1000 GB HDD
Fedora 23
OpenJDK Runtime Environment (build 1.8.0_111-b16)
Eclipse Neon
Hibernate 5.2.10
Ambiente de teste de metodologia
for(int i = 0; i < 100000; i++){
try{
manager.getTransaction().begin();
manager.persist(person);
manager.getTransaction().commit();

}catch(Exception e){
e.printStackTrace();
}
}

}
Airbreake
Log4J
Appender
Airbreake
log4j.rootLogger=INFO, stdout, airbrake
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d,%p] [%c{1}.%M:%L] %m%n
log4j.appender.airbrake=airbrake.AirbrakeAppender
log4j.appender.airbrake.api_key=YOUR_KEY_HERE
log4j.appender.airbrake.env=development
//log4j.appender.airbrake.env=production
//log4j.appender.airbrake.env=test
log4j.appender.airbrake.enabled=true
log4j.appender.airbrake.url=http://api.airbrake.io/notifier_api/v2/notices
Airbreake 01
Airbreake 02
Raygun
class MyExceptionHandler implements Thread.UncaughtExceptionHandler
{
public void uncaughtException(Thread t, Throwable e) {
RaygunClient client = new
RaygunClient("nQH7dhoBpU/Zc4ltm5Y/sA==");
client.Send(e);
}
}

Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler());
Raygun 01
Raygun 02
Rollbar
Instncia prpria
UncaughtExceptions
Manual

public static final Rollbar rollbar = new


Rollbar("3f6b5d9ab319423db0b4cdf2f49dbe11", "production");

rollbar.handleUncaughtErrors();

rollbar.error(e);

rollbar.warning(e);

rollbar.critical(e);
Rollbar 01
Rollbar 02
Sentry
Frameworks de logging
Log4j
Log4j2
Logback
Java.util.logging

Sentry.init("https://public:private@host:port/1");
Sentry 01
Sentry 02
Overops
0 cdigo
JVM
Micro agent java
Daemon collector
1% overhead
Overops Worfklow
Overops 01
Overops 02
Overops
Memory
Garbage Collection
JVM Process
Class Loading
JIT Compilation
Operating System
Environment Variables
System Properties
Active Threads
Resultados
Parmetros
Instalao
Modificabilidade de cdigo
Escala
Atende
Atende parcialmente
No atende
Resultados

Error Tracker Instalao

Airbreake Atende Parcialmente

Raygun Atende

Rollbar Atende

Sentry Atende Parcialmente

Overops Atende
Resultados

Error Tracker Modificabilidade de Cdigo

Airbreake Atende Parcialmente

Raygun Atende Parcialmente

Rollbar Atende Parcialmente

Sentry Atende Parcialmente

Overops Atende
Concluso e trabalhos futuros
Overops
Outras Mtricas
UX
Capacidade de captura de erros
Capacidade de notificao
Inegrao
Desenvolver uma ferramenta de monitoramento de erro
Referncias
AIRBREAKE. Disponvel em: <https://airbrake.io/>. Acesso em: 30/06/2017.
AIRBREAKE-JAVA. Disponvel em: <https://github.com/airbrake/airbrake-java>. Acesso
em: 12/07/2017.
APPENDERS. Disponvel em: <https://logging.apache.org/log4j/2.x/manual/appenders.
html>. Acesso em: 29/06/2017.
INTERFACE Thread.UncaughtExceptionHandler. Disponvel em: <https://docs.oracle.
com/javase/7/docs/api/java/lang/Thread.UncaughtExceptionHandler.html>. Acesso em:
29/06/2017.
KNOW When and Why Code Breaks in Production. Disponvel em: <https:
//www.overops.com/>. Acesso em: 07/07/2017.
NAZIR, M. Cloud Computing: Overview & Current Research Challenges. IOSR Journal
of Computer Engineering, v. 8, p. 14 22, Dezembro 2012. Acesso em: 10/07/2017.
RAYGUN. Disponvel em: <https://raygun.com/>. Acesso em: 30/06/2017.
Referncias
RAYGUN4JAVA. Disponvel em: <https://github.com/MindscapeHQ/raygun4java>.
Acesso em: 12/07/2017.
ROLLBAR. Disponvel em: <https://rollbar.com/?dr>. Acesso em: 07/07/2017.
ROLLBAR-JAVA. Disponvel em: <https://github.com/rollbar/rollbar-java>. Acesso em:
12/07/2017.
SENTRY. Disponvel em: <https://sentry.io/welcome/>. Acesso em: 07/07/2017.
SENTRY. Disponvel em: <https://github.com/getsentry/sentry>.
Obrigado