bearmon is a simple server monitoring tool designed to require minimal configuration.
- Checks each define one monitoring instance, for example a URL to make sure is OK.
- A contact is a communication instance, for example an email address or a phone number (for SMS).
- Alerts connect checks with contacts, so that the contact will be alerted when the check goes offline.
Create a database from the schema defined in install.sql
.
First, look at config.default.py. Configure database, mail, and other settings and save it as config.py.
Define a check. The one below will make sure the URL contains the given substring.
INSERT INTO checks (name, type, data) VALUES ('example.com', 'http_contains', 'url=http://example.com/critical.php&substring=GOOD');
Define a contact.
INSERT INTO contacts (type, data) VALUES ('email', '[email protected]');
Define an alert.
INSERT INTO alerts (check_id, contact_id) VALUES (1, 1);
Now, run bearmon:
python monitor.py
Note: all "data" values above use URL encoding scheme to encode key-value pairs. So, if your URL contains ampersand (&) symbols, they should be encoded as %26 in the database. See decode in util.py for how the data is decoded.
bearmon can be configured to monitor services from multiple sources. This way, if the source crashes, you don't get extraneous notifications.
There are two steps to setting this up. You can do the first step without doing the second and get a decent system.
- Run monitor.py on multiple slaves with the same database setup.
- Configure your MySQL to run in clustered/HA mode.
- Favyen Bastani [email protected]