MoSKito is a relatively old (and mature) project by Internet reasoning (it made its first appearance in 2007). The project has been evolving fast, which led to re-arrangements among its components and caused some chaos in naming.
The intention of this post is to explain who’s who in MoSKito Universe. Meet the Swarm!
In the beginning there was
the word the bite. No, actually, in the beginning there was only MoSKito. It had no projects or components, and therefore the name was just fine. Today, we refer to original MoSKito as MoSKito Essential.
Within MoSKito, we differentiate between projects and components:
– Projects can be released as standalone applications,
– Components are parts (modules in maven sense) of a project.
Currently, we are talking about 3 projects within MoSKito:
1. MoSKito-Essential (the original, standalone MoSKito),
MoSKito-Essential (Standalone MoSKito)
is what you need to monitor a single instance of an application. If the monitored app only has a single JVM, MoSKito-Essential is enough.
However, MoSKito-Essential contains multiple components, all of them being maven modules inside the MoSKito project.
moskito-core is the engine that does all the counting. It contains Producers, Stats and Intervals. It also defines Accumulators and Thresholds.
moskito-web is a set of utilities for webapps. It contains some useful ready-to-use filters, like:
- RequestURIFilter: separates traffic by called url,
- DomainFilter: … by called domain,
- UserAgentFilter: … by used browser,
- AsyncSourceTldFilter: … by the client’s top level domain.
- or JourneyFilter that triggers recording User steps as Journeys (User actions in the form of actual calls/steps that occur in application code),
as well as base classes for monitored servlets, filters and actions, and, finally, session utils.
moskito-webui is the embedded user interface that runs in your application. It displays the collected performance data and allows providing some instant analysis for the app’s performance.
moskito-aop contains annotations for aop-style integration for AspectJ and spring-aop.
moskito-integration is a further sub-package that contains specific integration tools, for example, for CDI (JBoss, Glassfish) and SQL.
Finally, moskito-minimal is a standalone monitoring app that can be dropped into any Tomcat, allowing to instantly monitor cpu, memory, threads and jmx beans.
The standalone MoSKito provides everything needed for monitoring and error digging, still, there are use cases that go beyond that. A possible scenario is when you have multiple monitored instances of your app and want to know how the farm is doing. This is exactly what MoSKito-Control is made for.
MoSKito-Control is an application (with web and mobile interfaces) that gets connected to multiple standalone MoSKito instances and creates an overview display of the whole application and its health. This is a kind of application you want to run on a TV in your CommandCenter. <screenshots>
MoSKito-Control consists of two main components:
- moskito-control-agent (https://github.com/anotheria/moskito-control-agent) is a small piece of software that is dropped into the monitored application, sending data to MoSKito-Control server (aka Webapp),
- moskito-control-webapp (https://github.com/anotheria/moskito-control) is a standalone web application that provides the overview of a monitored application.
Optional (but extremely useful) MoSKito-Control components:
- moskito-control-ios-app is the mobile extension for the iUsers,
- moskito-control-android-app does the same for the Android users.
The other usage that standalone MoSKito doesn’t provide is monitoring over time.
MoSKito-Essential monitors here and now. After a monitoring interval has passed, the previously collected data is gone, being substituted by the current info. However, from time to time you want to dig deeper back into the history of your application performance, and add time to your data.
This is what Central is for. MoSKito-Central runs either as standalone server or gets embedded into a running MoSKito instance and stores the data in the way you need. This allows you to perform statistical analysis of the data, for example, how a certain value developed over weeks, comparing only values for Mondays, 10 p.m. This is very useful for post-release analysis and detecting changes in the system’s behaviour over long periods of time.
This overview’s intention was to introduce the MoSKito Swarm. Of course, there is much more to MoSKito that wouldn’t fit in a small overview, but we wanted to give you something for start.
So dig in!