The monet monitoring tool

monet is a flexible monitoring tool, suitable for network monitoring, host performance tracking, and for the instrumentation of complex systems, among others.

 Original version of this documentation at LFCIA lab, University of A Coruņa, Spain
SourceForge Logo  Mirror at SourceForge

monet is written in Erlang. Erlang is a functional language developed at Ericsson, with nice fault-tolerancy features, inherent distribution, and soft realtime capabilities. It also makes heavy use of OTP, the Open Telecom Platform: a set of applications and libraries that provide support for SNMP, HTTP, ASN.1 and lots of other useful protocols and functionality. See the open-source erlang site or your closest mirror for more information.

At its current stage, monet is certainly not for the faint of heart. It works, but an alpha version is an alpha... Standard disclaimer about you being the only responsible if your cat dies and your network switches blow up because of using this software applies.

Because of legal issues, it has been almost completely reimplemented. Right now it's quite more primitive than the original monet, but I hope it will evolve quickly.

monet is released to the public under the terms of the General Public License (GPL), version 2 or later.

How does it work? (an overview)

On startup, monet starts the Mnesia database, the EVA alarm handler, the MESH measurement and event handler, and the System Architecture Support Libraries (SASL), all part of OTP. Then it starts the Measurement Responsible Processes (MRPs) specified in the config files, and sends messages to each MRP to create the configured Measurement Objects (MOs).

Measurement Objects are responsible for reading values from external resources (ie, performing measures) and then reporting them to MESH. They can also throw alarms at EVA upon errors from the resources they monitor.

An adaptation can be installed on EVA in order to receive and process the system alarms. By default, monet installs the main_handler adaptation, which calls user-defined alarm handlers. The syslog_adapt adaptation, which logs all events and alarms to the unix syslog can also be started.

Measurement reports and alarm deassertions, among others, generate events. EVA receives and logs them. Measurement values are logged separately.

Structure of monet


First, download monet-0.1.tgz, gunzip and untar it. You will get a monet-0.1 directory with erlang files inside, a README file and a Makefile. Of course, read the README file first (don't you always?) and type make. At this point, you will either: Now, configure it according to the following sections.

Basic configuration

Before proceeding, please note the erlang notation: terms between curly braces {} denote tuples, ie., like a record on a database. Terms between brackets [] denote a list. A list can have arbitrary length.

In erlang, strings are represented between double quotation marks, "So, this is a sample string". Atoms are identifiers, and they can be denoted with arbitrary strings as long as they use only a restricted set of characters (letters, numbers, underline). They can't begin with an uppercase letter, so thisIsAValidAtom but ThisIsNotAValidAtom. In case one needs to use an atom whose textual representation would be invalid (atoms including spaces, for instance) they can be enclosed between simple quotation marks, so 'this is a valid atom with spaces'.

Basic configuration is spread across three files: