JAppMonitor
>> Solutions >> Register >> Log In >> JBuildingBlocks >> MonitorIt
Table of Contents
What is JAppMonitor?

JAppMonitor is a free Java™ software application that:

  • Continuously monitors your applications to make sure that they are up and running
  • Notifies you in real time of any problem
  • Maintains valuable historical performance data for report generation, performance analysis and problem investigation

Please consult our detail description section for more details.

In the grand scheme of things, our goal is to bridge the gap between traditional Software Developers/Architects and Network Operations Centers/CIO/CTO/Operators that supervise and monitor software applications/solutions in production environment. In the same way that JUnit or TestNG have revolutionized the way software applications are designed and developed, our goal is to modify the way software applications are designed and developed so that the final and critical production phase is an integral part of the overall design and development process.

Click here to return to the top of the page.
Detailed Description

MonitorIt is a client/server software application that continuously monitors the availability of your applications by simulating the behavior of your customers. For instance, to monitor a web based application, MonitorIt generates the same request that your customers would generate with their browser. Similarly, to monitor an e-mail server, MonitorIt would regularly send and retrieve an e-mail message...
MonitorIt provides you with the peace of mind that you know that your applications are up and running and that you will be immediately notified of any problem.

MonitorIt also collects historical performance data and generates report for performance analysis, trend analysis and problem investigation.

MonitorIt comes out of the box with a multitude of built-in monitoring application tasks and its open architecture allows you to write your own custom monitoring task. For instance, you can integrate a specific web conversation (e.g. a login page followed by a query page followed by...) or a specific API to monitor a proprietary software component...
You can use the built-in reporting features and can also directly access the collected data in the database to write your own ad hoc report with your own third party tool (e.g. crystal reports...).

Click here to return to the top of the page.
Monitorlet: interfaces and handlers
A monitorlet handles two types of behavior: :
- 1 repetitive lifecycle for monitoring purposes (e.g. pb detection, result storage, pb filtering....pb notificaton)
- 1 API for on demand admin/management purposes (e.g. get results from X1 t oX2, disable..., on demand report... )
a monitorlet goes through a succession of individual phases ...
each phase is represented by an interface
there are n interfaces with a default implementation (a handler) for each
built for customization (typically for pb detection)
Click here to return to the top of the page.
Results
JAppMonitor handles ad maintains two types of result for any given monitorlet:
- the raw or individual result: the result of each monitorlet execution is stored in the database and is available for data retrieval
- the aggregated results :

what is an aggreated result: based on an industry standard (see RFC ... ), instead of storing each individual results, the results average, min,max and std are stored for each 15 min interval (96 buckets per day...)

why the aggregated:
1) primary reason is data storage:
1 monitorlet that is executed evey 5 seconds -> 720 results per hour, 17280 per day, 535680 results per monh, 6307200 per year... prohibitive in most cases ...
2) consolidated results are more meaningful as they are less subject to variations: average allows us to filter the out of the ordinary situations / spikes...

why does the framework provide both?
best of both words: you get the entire details for the past 24 hours as well as the overall history while minimizing your data storage requiremnts and havin more meaningful results

Click here to return to the top of the page.
Database layout for results

raw results:
4 columns: idTask datetime type result
Need the type for 2 reasons:
1) to be able to change the display (e.g. cross intead of bullets) of he results when a warning/error occured
2) the recurrent task that builds the aggregated type is so simple to implement :)
Note: when error/warning occurs, a raw result is stored as well (with 0 if no value is available)

aggregated results:
9 columns: idTask datetime avg max min std #ok #war #errors

Click here to return to the top of the page.
Database layout for problems

On a per problem:
N columns: idTask | datetimeFirstDetection | datetimeLastDetection | nb of detection / occurences (in a row) | pb description (summary, less than x characters for comparison) | pb full details In separate tables (in case not used): | pb acknowledged | datetime ack | ack description | pb solved | solution description

advanced problem analysis (regular expressions, full text search with lucene...)

Click here to return to the top of the page.
References

Please consult the following pages for more details:

More...