Nomit is a small library that can be used to process HTTP/XML POST requests from Monit instances. While it is a relatively trivial adaption of Python’s BaseHTTPRequestHandler, it may be useful to multiple other projects. For this reason Nomit is registered as its own little project.
Monit is a free utility for managing Unix systems. Multiple Monit instances can be centrally managed by its sister project MMonit. Monit communicates with MMonit through HTTP/XML POST request.
Nomit provides a single class MonitHandler which is a sub-class of BaseHTTPRequestHandler. MonitHandler is meant to be sub-classed itself.
It provides two methods:
The default implementation of these methods does nothing. Any derived class must implement these methods as necessary.
The example below implements handle_unparsed() to print the raw XML as POSTed by the Monit agent and uses handle_parsed() to display the data structure returned by lxml.objectify.fromstring():
import BaseHTTPServer import xml.dom.minidom import lxml.objectify import nomit class ExampleHandler(nomit.MonitXmlHandler): def handle_unparsed(self, s): print xml.dom.minidom.parseString(s).toprettyxml() def handle_parsed(self, o): print lxml.objectify.dump(o) server = BaseHTTPServer.HTTPServer(("127.0.0.1", 2811), ExampleHandler) server.serve_forever()
The Monit agent must be told to POST status information to the Python script above. From the agent’s point of view the script is simply (another_) MMonit server.
set mmonit http://monit:email@example.com:8080/collector http://localhost:2811/
_ The set mmonit directive accepts multiple URLs.
TODO: Figure out how to actually get changelog content.
Changelog content for this version goes here.