Nagcat is a monitoring framework written in Python for use with Nagios 3.x. It is intended for monitoring large and complex systems that require a wide range of tests to verify that everything is functioning properly.
The primary difference between Nagcat and more traditional Nagios plugin scripts is that Nagcat runs as a separate daemon running tests that are defined in a configuration file rather than a script. This offers a couple advantages over Nagios plugins:
- Multiple tests that pull data from the same source but make different checks can be combined together to make a single request. When the monitored service provides a unified status report new tests can be added to Nagcat/Nagios without adding additional load to the monitored service. The closest way to achieve this with a normal Nagios plugin would be to use a script that queries for the data once and then processes all of the tests against that data which has the advantage that the various tests cannot send alerts independently. With Nagcat each test is configured as a separate 'Service' in the Nagios.
- Maintaining a large number of custom Nagios plugins can eventually turn into a headache over time. Plugins are easy to create in an ad-hoc manner so over time each script will behave a bit differently. Nagcat defines all tests in a declarative syntax so each test is small, easy to read, and easy to modify. When creating a new test the writer does not need to worry about handling all the possible ways a test may fail (and then reporting them clearly) because Nagcat takes care of everything.
Nagcat supports making queries via:
- HTTP and HTTPS
- Raw TCP and SSL sockets
- SNMP versions 1 and 2c
- External programs/scripts
Data can be processed and checked using:
- Regular expressions
- XML XPath 1.0
- Basic math and comparison expressions.
- Results are submitted to Nagios as passive tests.
- Data can be recorded and graphed using RRDTool.
Future plans include:
- Adaptive thresholds based on previous trends. For example if the amount of disk space used starts growing faster than it normally does the problem can be detected before the static critical threshold is reached.
- Python 2.x, 2.4 or greater required
- The Twisted framework, 8.2 or later recommended
- Nagios 3.x
For more info see the README and the docs directory in the source tree.
This project is currently under heavy development at ITA Software but is already reasonably functional and stable.