SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler offline
Open Source APM 
Leon Rosenberg (@dvayanu)! 
anotheria solution GmbH 
1
Who am I? 
Leon Rosenberg - Architect, DevOps. ! 
1997 - Started programming with Java. ! 
2000 - Started building Portals.! 
2003 - Founded anotheria.net.! 
2007 - Started MoSKito. 
3
Today 
6 
Short Story! 
Live Demo! 
Integration! 
Tools! 
Success Stories
Why MoSKito 
Because running a production System 
without monitoring is like ... 
7
The MoSKito Story
This is you
You developed an APP
And now you've got traffic
Or inherited one
And simply don't know 
what the app does?
You need Help!
You need MoSKito!
Collect data
Organize data
Inspect Intervals
MoSKito Core Team
Discover and analyze
Scale and get in control
Keep history
The big picture 
!
… and you … ? 
!
Why MoSKito ?
Lets get some burgers
Integration 
AOP / CDI / Spring! 
Proxies! 
WEB! 
! 
Guide: https:// 
confluence.opensource.anotheria.net/display/ 
MSK/Integration+Guide 
29
AOP 
30 
@Monitor 
public class YourClass { 
public class YourClass { 
@Monitor public void firstMonitoredMethod(){... 
@Monitor public void secondMonitoredMethod(){... 
public void notMonitoredMethod(){... 
@Monitor 
public class YourClass { 
public void thisMethodWillBeMonitored(){... 
@DontMonitor public void thisMethodWillBeExcludedFromMonitoring(){ 
@Count 
public class PaymentCounter { 
@Count 
public class PaymentCounter { 
/** 
* Electronic card payment (lastchrifteinzug in germany). 
*/ 
public void ec(){} 
/** 
* Credit card payment. 
*/ 
public void cc(){} 
/** 
* Payment via paypal. 
*/ 
public void paypal(){} 
} 
@CountByParameter 
void ingredientUsed(String ingredient) { !
AOP + MAVEN 
31 
<dependencies> 
<dependency> 
<groupId>net.anotheria</groupId> 
<artifactId>moskito-core</artifactId> 
<version>2.5.2</version> 
</dependency> 
<dependency> 
<groupId>net.anotheria</groupId> 
<artifactId>moskito-aop</artifactId> 
<version>2.5.2</version> 
</dependency> 
<build> 
<plugins> 
<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>aspectj-maven-plugin</artifactId> 
<version>1.4</version> 
<configuration> 
<aspectLibraries> 
<aspectLibrary> 
<groupId>net.anotheria</groupId> 
<artifactId>moskito-aop</artifactId> 
</aspectLibrary> 
</aspectLibraries> 
<source>1.6</source> 
<target>1.6</target> 
</configuration> 
<executions> 
<execution> 
<goals> 
<goal>compile</goal> 
</goals> 
</execution> 
</executions> 
</plugin> 
</plugins> 
</build>
CDI 
32 
@Monitor 
@ProducerRuntime(producerId=”Foo”, category=”my”) 
public class YourClass { 
public class YourClass { 
@Monitor public void firstMonitoredMethod(){... 
@Monitor(“dao”) public void secondMonitoredMethod(){... 
public void notMonitoredMethod(){... 
@Monitor(MonitoringCategorySelector.WEB) 
public class YourClass { 
public void thisMethodWillBeMonitored(){... 
@DontMonitor public void thisMethodWillBeExcludedFromMonitoring(){ 
@Count 
public class PaymentCounter { 
@Count 
public class PaymentCounter { 
/** 
* Electronic card payment (lastchrifteinzug in germany). 
*/ 
public void ec(){} 
/** 
* Credit card payment. 
*/ 
public void cc(){} 
/** 
* Payment via paypal. 
*/ 
public void paypal(){} 
} 
@CountByParameter 
void ingredientUsed(String ingredient) { !
CDI 
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"! 
33 
xsi:schemaLocation="! 
http://java.sun.com/xml/ns/javaee! 
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">! 
<interceptors>! 
<class>net.anotheria.moskito.integration.cdi.CountInterceptor</class>! 
<class>net.anotheria.moskito.integration.cdi.CallInterceptor</class>! ! 
<class>net.anotheria.moskito.integration.cdi.WebCallInterceptor<class>! 
<class>net.anotheria.moskito.integration.cdi.ServiceCallInterceptor</class>! 
<class>net.anotheria.moskito.integration.cdi.DaoCallInterceptor</class>! ! 
</interceptors>! 
</beans>
Proxies 
34 
public interface SimpleService{ 
void doSomethingMethod(); 
} 
public class SimpleServiceImpl implements SimpleService{ 
public void doSomethingMethod(){ 
} 
} 
SimpleService service = ProxyUtils.createServiceInstance(new SimpleServiceImpl(), "default", SimpleService.class);
WEB 
Automagically with servlet 3.0 
35 
<filter> 
<filter-name>RequestURIFilter</filter-name> 
<filter-class>net.anotheria.moskito.web.filters.RequestURIFilter</filter-class> 
<init-param> 
<param-name>limit</param-name> 
<param-value>1000</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>RequestURIFilter</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 
<filter> 
<filter-name>DomainFilter</filter-name> 
<filter-class>net.anotheria.moskito.web.filters.DomainFilter</filter-class> 
<init-param> 
<param-name>limit</param-name> 
<param-value>50</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>DomainFilter</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping>
Inspect 
36 
! 
<dependency> 
<groupId>net.anotheria</groupId> 
<artifactId>moskito-inspect-remote</artifactId> 
<version>2.5.2</version> 
</dependency>
What else 
MoSKito Control ! 
! 
MoSKito Central! 
! 
MoSKito @ Barbecue 
37
39
MoSKito Control 
40
MoSKito Central 
Central server for snapshot storage.! 
Attachable storages can store data into sql- or 
nosql- based databases, xml/json files etc.! 
Runs in remote or embedded mode. 
41
MoSKito To Go 
42
Success stories 
Far too many, but here are some :-) 
45
I 
After a release of a new version huge traffic 
increase on one of the databases was 
detected.! 
The database in question was used by a 
service. There were 20 clients (code 
components) using this service. ! 
MoSKito showed that 55% of the traffic to the 
service came from one client. With MoSKito 
inspection we were able to detect which client 
was producing most traffic. 
46
I 
Closer inspection (code review) of the client 
revealed a bug which led to double calls to the 
service. ! 
Incident solved in 30 minutes. 
Most traffic 
Created here 
47
II 
Application overall performance was 
insufficient.! 
With moskito journeys and call tree analysis 
we were able to find redundant calls to the 
backend and remove them.! 
Request duration reduced to 50% with 4 hours 
analysis and 4 hours coding effort. 
48
II 
same call over net repeated thrice 
time in 
milliseconds 
49
III 
A bug only reproduceable by one user.! 
Second page of received messages won’t 
show. No exception logged. 
50
Broken Call 
red color indicates 
that the method 
was terminated 
abnormaly 
(exception) 
possible reason - user didn’t exist in the db and the code didn’t know how to 
handle it. 
51
What’s cooking? 
MoSKito 2.5.3 - JPA! 
Javaagent ! 
Central enhancements 
52
End of Data. 
Thank you.! 
https://itunes.apple.com/de/app/moskito-ui/id531387262?l=en&mt=8 
https://itunes.apple.com/de/app/msk-control/id688838411?l=en&mt=8 
https://github.com/anotheria/moskito-examples 
53 
http://www.moskito.org 
https://github.com/anotheria/moskito 
https://github.com/anotheria/moskito-control 
http://search.maven.org/#search%7Cga%7C1%7Cmoskito
54
55
End of Data. 
Thank you.! 
https://itunes.apple.com/de/app/moskito-ui/id531387262?l=en&mt=8 
https://itunes.apple.com/de/app/msk-control/id688838411?l=en&mt=8 
https://github.com/anotheria/moskito-examples 
56 
http://www.moskito.org 
https://github.com/anotheria/moskito 
https://github.com/anotheria/moskito-control 
http://search.maven.org/#search%7Cga%7C1%7Cmoskito

Mais conteúdo relacionado

Semelhante a MoSKito at Silpion Solutionscamp 2014

Csw2016 d antoine_automatic_exploitgeneration
Csw2016 d antoine_automatic_exploitgenerationCsw2016 d antoine_automatic_exploitgeneration
Csw2016 d antoine_automatic_exploitgeneration
CanSecWest
 
draft_report_Pablo_Panero
draft_report_Pablo_Panerodraft_report_Pablo_Panero
draft_report_Pablo_Panero
Pablo Panero
 

Semelhante a MoSKito at Silpion Solutionscamp 2014 (20)

Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
PyCon AU 2012 - Debugging Live Python Web Applications
PyCon AU 2012 - Debugging Live Python Web ApplicationsPyCon AU 2012 - Debugging Live Python Web Applications
PyCon AU 2012 - Debugging Live Python Web Applications
 
Probo.ci Drupal 4 Gov Devops 1/2 day Presentation
Probo.ci Drupal 4 Gov Devops 1/2 day Presentation Probo.ci Drupal 4 Gov Devops 1/2 day Presentation
Probo.ci Drupal 4 Gov Devops 1/2 day Presentation
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
 
2013 lecture-01-introduction
2013 lecture-01-introduction2013 lecture-01-introduction
2013 lecture-01-introduction
 
Solving the Automation Puzzle - how to select the right automation framework ...
Solving the Automation Puzzle - how to select the right automation framework ...Solving the Automation Puzzle - how to select the right automation framework ...
Solving the Automation Puzzle - how to select the right automation framework ...
 
The Nightmare Fuzzing Suite and Blind Code Coverage Fuzzer
The Nightmare Fuzzing Suite and Blind Code Coverage FuzzerThe Nightmare Fuzzing Suite and Blind Code Coverage Fuzzer
The Nightmare Fuzzing Suite and Blind Code Coverage Fuzzer
 
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.ioMuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
 
Test automation design patterns
Test automation design patternsTest automation design patterns
Test automation design patterns
 
Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018
Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018
Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018
 
Dipping Your Toes Into Cloud Native Application Development
Dipping Your Toes Into Cloud Native Application DevelopmentDipping Your Toes Into Cloud Native Application Development
Dipping Your Toes Into Cloud Native Application Development
 
Csw2016 d antoine_automatic_exploitgeneration
Csw2016 d antoine_automatic_exploitgenerationCsw2016 d antoine_automatic_exploitgeneration
Csw2016 d antoine_automatic_exploitgeneration
 
draft_report_Pablo_Panero
draft_report_Pablo_Panerodraft_report_Pablo_Panero
draft_report_Pablo_Panero
 
Workshop: Introduction to Web Components & Polymer
Workshop: Introduction to Web Components & Polymer Workshop: Introduction to Web Components & Polymer
Workshop: Introduction to Web Components & Polymer
 
Firefox OS Presentation
Firefox OS PresentationFirefox OS Presentation
Firefox OS Presentation
 
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...
 
Code Refactoring
Code RefactoringCode Refactoring
Code Refactoring
 
Built to Scale: The Mozilla Release Engineering toolbox
Built to Scale: The Mozilla Release Engineering toolboxBuilt to Scale: The Mozilla Release Engineering toolbox
Built to Scale: The Mozilla Release Engineering toolbox
 
Matteo Valoriani, Antimo Musone - The Future of Factory - Codemotion Rome 2019
Matteo Valoriani, Antimo Musone - The Future of Factory - Codemotion Rome 2019Matteo Valoriani, Antimo Musone - The Future of Factory - Codemotion Rome 2019
Matteo Valoriani, Antimo Musone - The Future of Factory - Codemotion Rome 2019
 

Último

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Último (20)

WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 

MoSKito at Silpion Solutionscamp 2014

  • 1. Open Source APM Leon Rosenberg (@dvayanu)! anotheria solution GmbH 1
  • 2.
  • 3. Who am I? Leon Rosenberg - Architect, DevOps. ! 1997 - Started programming with Java. ! 2000 - Started building Portals.! 2003 - Founded anotheria.net.! 2007 - Started MoSKito. 3
  • 4.
  • 5.
  • 6. Today 6 Short Story! Live Demo! Integration! Tools! Success Stories
  • 7. Why MoSKito Because running a production System without monitoring is like ... 7
  • 8.
  • 12. And now you've got traffic
  • 14. And simply don't know what the app does?
  • 17.
  • 23. Scale and get in control
  • 26. … and you … ? !
  • 28. Lets get some burgers
  • 29. Integration AOP / CDI / Spring! Proxies! WEB! ! Guide: https:// confluence.opensource.anotheria.net/display/ MSK/Integration+Guide 29
  • 30. AOP 30 @Monitor public class YourClass { public class YourClass { @Monitor public void firstMonitoredMethod(){... @Monitor public void secondMonitoredMethod(){... public void notMonitoredMethod(){... @Monitor public class YourClass { public void thisMethodWillBeMonitored(){... @DontMonitor public void thisMethodWillBeExcludedFromMonitoring(){ @Count public class PaymentCounter { @Count public class PaymentCounter { /** * Electronic card payment (lastchrifteinzug in germany). */ public void ec(){} /** * Credit card payment. */ public void cc(){} /** * Payment via paypal. */ public void paypal(){} } @CountByParameter void ingredientUsed(String ingredient) { !
  • 31. AOP + MAVEN 31 <dependencies> <dependency> <groupId>net.anotheria</groupId> <artifactId>moskito-core</artifactId> <version>2.5.2</version> </dependency> <dependency> <groupId>net.anotheria</groupId> <artifactId>moskito-aop</artifactId> <version>2.5.2</version> </dependency> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <version>1.4</version> <configuration> <aspectLibraries> <aspectLibrary> <groupId>net.anotheria</groupId> <artifactId>moskito-aop</artifactId> </aspectLibrary> </aspectLibraries> <source>1.6</source> <target>1.6</target> </configuration> <executions> <execution> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
  • 32. CDI 32 @Monitor @ProducerRuntime(producerId=”Foo”, category=”my”) public class YourClass { public class YourClass { @Monitor public void firstMonitoredMethod(){... @Monitor(“dao”) public void secondMonitoredMethod(){... public void notMonitoredMethod(){... @Monitor(MonitoringCategorySelector.WEB) public class YourClass { public void thisMethodWillBeMonitored(){... @DontMonitor public void thisMethodWillBeExcludedFromMonitoring(){ @Count public class PaymentCounter { @Count public class PaymentCounter { /** * Electronic card payment (lastchrifteinzug in germany). */ public void ec(){} /** * Credit card payment. */ public void cc(){} /** * Payment via paypal. */ public void paypal(){} } @CountByParameter void ingredientUsed(String ingredient) { !
  • 33. CDI <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"! 33 xsi:schemaLocation="! http://java.sun.com/xml/ns/javaee! http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">! <interceptors>! <class>net.anotheria.moskito.integration.cdi.CountInterceptor</class>! <class>net.anotheria.moskito.integration.cdi.CallInterceptor</class>! ! <class>net.anotheria.moskito.integration.cdi.WebCallInterceptor<class>! <class>net.anotheria.moskito.integration.cdi.ServiceCallInterceptor</class>! <class>net.anotheria.moskito.integration.cdi.DaoCallInterceptor</class>! ! </interceptors>! </beans>
  • 34. Proxies 34 public interface SimpleService{ void doSomethingMethod(); } public class SimpleServiceImpl implements SimpleService{ public void doSomethingMethod(){ } } SimpleService service = ProxyUtils.createServiceInstance(new SimpleServiceImpl(), "default", SimpleService.class);
  • 35. WEB Automagically with servlet 3.0 35 <filter> <filter-name>RequestURIFilter</filter-name> <filter-class>net.anotheria.moskito.web.filters.RequestURIFilter</filter-class> <init-param> <param-name>limit</param-name> <param-value>1000</param-value> </init-param> </filter> <filter-mapping> <filter-name>RequestURIFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>DomainFilter</filter-name> <filter-class>net.anotheria.moskito.web.filters.DomainFilter</filter-class> <init-param> <param-name>limit</param-name> <param-value>50</param-value> </init-param> </filter> <filter-mapping> <filter-name>DomainFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
  • 36. Inspect 36 ! <dependency> <groupId>net.anotheria</groupId> <artifactId>moskito-inspect-remote</artifactId> <version>2.5.2</version> </dependency>
  • 37. What else MoSKito Control ! ! MoSKito Central! ! MoSKito @ Barbecue 37
  • 38.
  • 39. 39
  • 41. MoSKito Central Central server for snapshot storage.! Attachable storages can store data into sql- or nosql- based databases, xml/json files etc.! Runs in remote or embedded mode. 41
  • 43.
  • 44.
  • 45. Success stories Far too many, but here are some :-) 45
  • 46. I After a release of a new version huge traffic increase on one of the databases was detected.! The database in question was used by a service. There were 20 clients (code components) using this service. ! MoSKito showed that 55% of the traffic to the service came from one client. With MoSKito inspection we were able to detect which client was producing most traffic. 46
  • 47. I Closer inspection (code review) of the client revealed a bug which led to double calls to the service. ! Incident solved in 30 minutes. Most traffic Created here 47
  • 48. II Application overall performance was insufficient.! With moskito journeys and call tree analysis we were able to find redundant calls to the backend and remove them.! Request duration reduced to 50% with 4 hours analysis and 4 hours coding effort. 48
  • 49. II same call over net repeated thrice time in milliseconds 49
  • 50. III A bug only reproduceable by one user.! Second page of received messages won’t show. No exception logged. 50
  • 51. Broken Call red color indicates that the method was terminated abnormaly (exception) possible reason - user didn’t exist in the db and the code didn’t know how to handle it. 51
  • 52. What’s cooking? MoSKito 2.5.3 - JPA! Javaagent ! Central enhancements 52
  • 53. End of Data. Thank you.! https://itunes.apple.com/de/app/moskito-ui/id531387262?l=en&mt=8 https://itunes.apple.com/de/app/msk-control/id688838411?l=en&mt=8 https://github.com/anotheria/moskito-examples 53 http://www.moskito.org https://github.com/anotheria/moskito https://github.com/anotheria/moskito-control http://search.maven.org/#search%7Cga%7C1%7Cmoskito
  • 54. 54
  • 55. 55
  • 56. End of Data. Thank you.! https://itunes.apple.com/de/app/moskito-ui/id531387262?l=en&mt=8 https://itunes.apple.com/de/app/msk-control/id688838411?l=en&mt=8 https://github.com/anotheria/moskito-examples 56 http://www.moskito.org https://github.com/anotheria/moskito https://github.com/anotheria/moskito-control http://search.maven.org/#search%7Cga%7C1%7Cmoskito