How to control your loadbalancer

Applications grow. At least successful applications. At some point your growing application will require a loadbalancer. It may be for scaling or availability purpose or something else. The day your application runs behind the loadbalancer first time will make you proud. And it will make you ask, how can I control what the loadbalancer thinks of my application availability? This is how.

Continue reading

Newest. Hottest. Tracers.

Today MoSKito 2.7.3 is released, and it contains the hottest feature since long time. But decide for yourself.

The feature request goes back some years to Dec 02, 2010 to my time at Parship, as Malte once asked, if it would be possible to know where a call to a method actually came from. It was on the list since then, but time was hard to find.

So what are tracers anyway? Tracers have 3 purposes or aspects:

  1. Tracers allow you to find out which part of your code has been calling some methods in a class of your application you are interested in. They achieve it by guarding the class in question (works with most monitoring points) and triggering and saving a stack trace once something passes by. This is useful if you see strange behavior of some method/class in the MoSKito monitoring, but don’t know who is actually using this class.
  2. After the execution has passed the tracer, the tracer start to record everything that happens afterwards. This means that a TracedCall (part of MoSKito Journey) is created on the fly and recorded. Every call on the monitored class will be noted, along with parameters and return values.
  3. To round this up, tracer will gather some amount of traces (code passing by). Depending on how you configured MoSKito, the tracers could collect only calls with largest duration or simply oldest or newest calls. This way you can run a tracer over a long period of time, collect all slow calls and investigate what slows them down.

Continue reading

Connect Moskito-Central to MongoDB

Today we are going to connect MoSKito-Central to MongoDB database.

In a few words, MoSKito-Central is a service (remote or embedded) that receives your MoSKito statistics and stores it in the place of your choice (Filesystem, Database, …).

Our choice for now is MongoDB and MoSKito-Central in embedded mode.

Continue reading

Case Study: Monitoring a cluster of java daemon processes

Hello,

today I am going to speak about a concrete example of the MoSKito Control capabilities. Today we will build up a monitoring system, but not for WebApps as in previous posts, but for just plain java processes, that we are going to call daemons. Daemon, in my understanding, is just a plain old java bean/thread running in background in a separate JVM and doing some work. To make the post easier to write I created a small project on github that serves me as example:

https://github.com/dvayanu/moskito-control-rmi-cluster-example

Continue reading

The complete MoSKito integration guide – Step 6 – Watching the big app with MoSKito-Control

Quote

In all previous steps, we integrated MoSKito into our application and set up data storage. In simple words, we learned how to monitor our app’s performance and store the obtained MoSKito data for later analysis. What’s next?

Here’s the good news: our burgershop is now the world’s leading burger-seller, with million revenues. It has become a big distributed app, with multiple instances and servers.
The bad news: even the smallest fail might lead to a thousand-euro loss per minute.

The question: how to keep trace of hundreds of producers on a dozen of instances? It’s the moment to call Superman another hero!

So, today we’re setting up MoSKito-Control, a tool for monitoring multi-node web applications.

moskito_control

Continue reading

The complete MoSKito integration guide – Step 5 – MoSKito-Central in remote mode

In the previous step we integrated MoSKito-Central in embedded mode, today is exactly the promised fine day to integrate MoSKito-Central in remote (standalone) mode.

You may ask “Why do we need it?”,  the answer is: our burgershop has become a real empire with multiple application instances and we want to monitor all of them and consolidate the obtained performance data in one place.

So, let’s start!
Continue reading

The complete MoSKito integration guide – Step 4 – Central storage

Today we are going to unlock even more MoSKito power: more persisting, more centralising.

As you know, we can access MoSKito producer’s statistics while application is running: http://localhost:8080/burgershop/mui/mskShowAllProducers.

But what if: 

  • we want to check statistics for some time ago, like the last night, when we were sleeping?
  • we want to have and check statistics for all our applications, not only a single burgershop (as good businessmen, we surely have various projects to be safe from total fail one day!)?
  • we want to automatically analyse the collected (in time and space) data and make
    some strategical changes, based on results of this analysis?

The answer to all these if’s is: MoSKito-Central.

Continue reading