MONOGRAFIA
Recife
2017
NATANAEL SOUZA DOS SANTOS
Recife
2017
Natanael Souza dos Santos
Avaliao de ferramentas de monitoramento de excees e eventos de logging para aplica-
es java/ Natanael Souza dos Santos. Recife, 2017-
43 p. : il. (algumas color.) ; 30 cm.
Vinicius Garcia
Orientador
Professor
Convidado 1
Professor
Convidado 2
Recife
2017
A minha me Severina Maria de Souza e meu Pai Jos Paulino dos Santos que
nunca deixaram de acreditar na minha capacidade, sem vocs eu no teria conseguido.
Agradecimentos
Sou grato a minha noiva Maria Ferreira, aquela que me deu o maior dos presen-
tes, minha filha Ivanete Natalie, pelo apoio e confiana na minha jornada.
Ao professores Vinicius Garcia, Leandro Marques e Josino Neto pela ajuda e
confiana que me ajudaram a finalizar esse arduo caminho.
Aos amigos da graduo, que me inspiraram e me ajudaram nessa jornada.
A todos que de alguma forma fizeram parte dessa experincia de se graduar
em Cincia da Computao no Centro de Informtica.
A todos vocs, muito obrigado.
All we have to decide is what to do with the
time that is given us. (J. R. R. Tolkien)
Resumo
With the advent of cloud computing, applications have been fully executed
in these production environments, outside the development infrastructure, Imposing
a limit to the developer in control of the production infrastructure. This behavior has
boosted the development of error and logs monitoring tools for various environments and
programming technologies. This academic work aims to present these tools, denoting
its goals and expose its advantages, in addition to making an appraisal of these error
monitoring tools for Java programming language, performing their integration and
analyzing some parameters that influence the choice and use of these services by
developers to facilitate the choice and use of these tools.
1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 Conceitos e Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1 Software as a Service (Saas) . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Localizar o bug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Monitoramento de exceo . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Benefcios de uma ferramenta de monitoramento de excees . 16
2.5.1 Clientes Felizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5.2 Tempo dinheiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.3 Servios de monitoramento de excees e eventos de logging avaliados 17
2.6 Consideraes do captulo . . . . . . . . . . . . . . . . . . . . . . . 19
3 Ambiente de avaliao . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1 Detalhes do Ambiente . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.1 Cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.2 Dependencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 Configuraes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.1 Airbrake (AIRBRAKE, 2017) . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.2 Raygun (RAYGUN, 2017) . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.3 Rollbar (ROLLBAR, 2017) . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.4 Sentry (SENTRY, 2017) . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.5 Overops (KNOW. . . , 2017) . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Referncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
12
1 Introduo
2 Conceitos e Ferramentas
Figura 1 Usando altitude como analogia, essa figura ilustra a estrutura em Saas em vrios
nveis de detalhes.
O Saas est inserido no contexto da web, logo ele utiliza o padro cliente-
servidor para oferecer um servio distribudo, e faz uso de todos os protocolos e
tecnologias, no sendo necessrio instalao local. Uma aplicao SAAS WEB
um exemplo do padro arquitetural cliente-servidor, onde o software cliente atua na
interao com o usurio e faz requisies para o servidor, enquanto que o software no
servidor atua processamento dos dados e atendendo as requisies do cliente. (FOX;
PATTERSON, 2012)
2.2 Debugging
2.3 Logging
Esta sesso aponta alguns benefcios que resultam da utilizao destas ferra-
mentas para monitoramento de software em produo, tanto da perspectiva do cliente,
como da perspectiva dos responsveis pelo software.
integrao com linguagem java. O Java foi a linguagem escolhida para fazer a
integrao com as ferramentas de monitoramento de excees.
tal como a prtica de monitorar excees, sendo esses os conceitos que motivam
o uso dessas ferramentas de monitoramento de excees. Por fim, as ferramentas
que sero avaliadas so apresentadas. Todos os princpios explorados neste captulo
so necessrios para melhor entendimento e compreenso das avaliaes que sero
realizadss no prximo captulo.
21
3 Ambiente de avaliao
3.1.1 Cdigo
Para seguirmos o foco deste trabalho, iremos utilizar uma aplicao trivial em
java que consiste apenas em consultas a um banco de dados, onde faremos insero
de objetos. O levantamento de excees se dar pelo desligamento do banco de
dados no meio a uma consulta ao mesmo. O Hibernate verso 5.2.10 foi utilizado para
facilitar o mapeamento objeto relacional, o uso do framework se faz necessrio para
que apenas possamos focar nas configuraes dos servios de monitoramento. Para
o gerenciamento de dependncias do projeto foi utilizado o Maven, uma ferramenta
de integrao de projetos, dado a grande adoo da ferramenta no ambiente de
desenvolvimento java.
O seguinte Cdigo 3.1 descreve a entidade Person, que ser utilizada para ser
persistida no banco de dados. A implementao da classe Person trivial, possuindo
apenas dois atributos, id e name. Com auxlio das classes do pacote javax.persistence,
Captulo 3. Ambiente de avaliao 22
foi usado alguns java annotations para fazer o mapeamento objeto-relacional. Mapea-
mento objeto-relacional uma tcnica que abstrai o modelo relacional, usado em banco
de dados, para o o modelo orientado a objetos, essa tcnica importante pois permite
que o desenvolvedor no escreva cdigo para banco de dados, melhorando a produtivi-
dade e diminuindo o tempo de desenvolvimento da aplicao. (CANDIDO NETO et al.,
2016) A anotao @Entity na linha 6 configura que a classe Person uma entidade do
mapeamento objeto-relacional. As anotaes das linhas 9 e 10 respectivamente con-
figura que o atribute id o identificador da entidade Person e que o valor gerado
automaticamente. A linhas 13 descreve que o atribute name uma coluna da entidade
da Person.
linha 26 feita um loop onde um objeto da entidade Person persistido a cada iterao
do loop. Esse o alicerce de onde ser lanada as excees e os logs de eventos
que sero capturados pelas ferramentas de monitoramento de excees e logs citadas
neste trabalho. A exceo ser lanada quando a conexo com o banco de dados for
encerrada, impedindo a persistncia da nossa entidade no banco de dados.
3.1.2 Dependencias
3.2 Configuraes
O Airbrake oferece suporte para repositrios Maven e funciona com uma inte-
grao com o framework de logging, Log4J 1.2, atravs de appenders. Appenders so
classes Java que implementam a interface Appender e so responsveis por entregar
os logs de eventos no destino, e esse destino pode ser em um simples console, escre-
ver em arquivos, banco de dados ou at enviar atravs do mtodo POST do servio
REST (APPENDERS, ). No entanto o framework log4j j se encontra descontinuado
Captulo 3. Ambiente de avaliao 25
<dependency>
<groupId> i o . a i r b r a k e < / groupId>
< a r t i f a c t I d > a i r b r a k e j a v a < / a r t i f a c t I d >
<version>2.2.8< / version>
< / dependency>
l o g 4 j . appender . a i r b r a k e = a i r b r a k e . AirbrakeAppender
l o g 4 j . appender . a i r b r a k e . api_key =YOUR_KEY_HERE
l o g 4 j . appender . a i r b r a k e . env=development
/ / l o g 4 j . appender . a i r b r a k e . env= p r o d u c t i o n
/ / l o g 4 j . appender . a i r b r a k e . env= t e s t
l o g 4 j . appender . a i r b r a k e . enabled= t r u e
l o g 4 j . appender . a i r b r a k e . u r l = h t t p : / / a p i . a i r b r a k e . i o / n o t i f i e r _ a p i
/ v2 / n o t i c e s
Captulo 3. Ambiente de avaliao 26
18 EntityManager manager = f a c t o r y .
createEntityManager ( ) ;
19
20 Person person = new Person ( ) ;
21 person . setName ( " Jhon " ) ;
22
23 f o r ( i n t i = 0 ; i < 100000; i ++) {
24 try {
25 manager . g e t T r a n s a c t i o n ( ) . begin
() ;
26 manager . p e r s i s t ( person ) ;
27 manager . g e t T r a n s a c t i o n ( ) . commit
() ;
28
29 } c a t c h ( E x c e p ti o n e ) {
30 e . printStackTrace ( ) ;
31 rollbar . error (e) ;
32 }
33 }
34
35 manager . c l o s e ( ) ;
36 f a c t o r y . close ( ) ;
37
38 }
39 }
http://blog.takipi.com/why-is-takipi-made-for-production/
3.3 Resultados
Como sntese das avaliaes vistas neste captulo, iremos colocar as ferramen-
tas lado a lado e fazer uma comparao entre os dois parmetros que mais foram
abordados neste trabalho: Instalao e Modificabilidade de cdigo.
no necessrio fazer alteraes no cdigo, nem que seja uma nica linha. A modifi-
cabilidade de cdigo atende parcialmente quando exigido que o lanamentos dos
eventos sejam feitas manualmente, via uso de framework de logging ou no. E por
fim, a modificabilidade de cdigo no atende quando a estrutura do cdigo precisa ser
modificada totalmente.
Tabela 2 Resultados: Instalao
Raygun Atende
Rollbar Atende
Overops Atende
Overops Atende
Referncias
KNOW When and Why Code Breaks in Production. 2017. 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.
OLINER, A.; GANAPATHI, A.; XU, W. Advances and Challenges in Log Analysis. Acm
Queue, ACM, 2011.
ZHITNITSKY, A. 5 Error Tracking Tools Java Developers Should Know. 2014. White
Paper.