IntroductionMonDemand is an open source library that is used to log messages and statistics in order to monitor real-time metrics and events in applications. As opposed to many full-featured profiling systems, it is designed to be run in production, with a minimal impact on performance. By default, MonDemand uses the Light Weight Event System in order to log events to the network; however, developers can easily add additional transports to MonDemand to use the protocol of their choice.
FeaturesWhen using the default network transport, MonDemand inherits the design features of the Light Weight Event System - non-blocking, best-effort delivery of monitoring events. This ensures that applications are not blocked with monitoring calls. Also, if logging events remotely, it provides a way to offload the processing of monitoring events to other machines.
Use CasesThe stream of events coming from applications using MonDemand are useful for a variety of purposes:
- Real-time performance monitoring - using the MonDemand listener, events can be processed in real-time to display summaries and graphs, or the data can be fed into monitoring systems such as Nagios.
- Performance Analysis - MonDemand events can be warehoused and aggregated on batch processing systems such as Hadoop.
- Alerts - error conditions can be detected and trigger notifications using a script or existing notification and monitoring system.
- Forensics - the MonDemand trace facility provides a way to enable debug logging for a single transaction, which makes it easier to troubleshoot specific runtime errors without the need to enable verbose logging globally.