Free Network Automatic Testing System (FreeNATS)

FreeNATS is a completely free extensible network monitoring and reporting system with a wide range of test types, reporting/alerting options, publishable views, SLA reporting, and more besides. Built primarily by one crazed developer (as a substitute for human contact), it nonetheless incorporates quite a lot of community content and add-ons.

Standard Types of Test

Standard tests are also known as "server side tests" in that they run on the monitoring server and connect to the monitored node, nothing needs installed onto the node. These are by far the most common and most used of the tests. Out of the box tests include:

All these tests are configurable in terms of parameters (e.g. credentials, retries, failure threasholds, etc). For a full list see the tests documentation.

Nodeside Monitoring and Testing

Another way of monitoring a node, and gaining much more detail from the operating system, is by installing a little script which reports back to the FreeNATS server. This setup can either be pulled (FreeNATS server polls node) or pushed (node connects to FreeNATS server) to support most network configurations.

Such nodeside monitors are available for both POSIX-compatable (Linux, OSX, BSD, Unix) and Windows hosts and allow the collection and monitoring of items such as:

New tests can easily be added either by the core development team or by anyone (either altering the scripts or writing their own XML generator). Full details on nodeside monitoring can be found on the wiki.

Sensitivity and Alerting

All of the tests can be configured to have a set number of retries and configured threashold values before triggering a warning or an alert.

When an alert is raised a range of actions can occur, as configured. The interface will show an alert (replicated in any published views), emails can be generated, and/or external events triggered by calling a remote URL or piece of local event code.

Views & Reporting

A core feature of FreeNATS is the ability to create and publish embeddable views in external web pages, for example putting performance graphs or alert statuses onto an intranet page. This allows for integration with third-party web content. For more detail see the views documentation.

Also in-built is a feature allowing the creation of SLA/availability reports which can be periodically run for a given reporting period and provide "uptime"/availability statistics for given nodes/groups/services.

Extensibility & Extras

At it's heart FreeNATS is highly extensible, externally via a data API and internally using a plugin and event handling system. This allows developers to interact and extend FreeNATS as they see fit.

Example extensions are shipped with FreeNATS in the extras package which provides a good example of extensibilty and also some niche functionality that may be required. Extras shipped with FreeNATS include:

  • Test: Advanced Page - more advanced HTTP page test including the ability to check for content to be found/not found
  • Test: Dynamic DNS - check that a hostname maps to our current external IP (to check a dynamic DNS service is in sync)
  • Alerts: More Detail - include more detail in the alerts
  • Alerts: Syslog - log failure events to syslog

For more information see the extras package documentation.

To make use of FreeNATS in other systems, for example pulling out historic performance or currently failed nodes, a data API has been defined supporting both XML and Javascript formats.

Extending FreeNATS to add functionality or behaviour typically takes one of two forms:

  • Adding/Modifying Tests: tests within FreeNATS are PHP classes extending FreeNATS_Local_Test that can implement both the configuration interface (UI components to setup the test) and testing behaviour (actual test/monitor). Once a test is created it is then registered with FreeNATS and automatically becomes available for adding to nodes as needed. For more information see the documentation on developing server-side tests in FreeNATS.
  • Adding/Modifying Events: the event-handling framework within FreeNATS is designed to allow for a great degree of customisation in terms of what happens when an event is triggered. Commonly used events include an alert being opened on a node, a test comlpeting, or an alert being closed. Events are PHP files (though can of course call any other executable code on the monitoring system or a remote URL) which register functions to handle specific events on a first-register first-serve basis. For more information see the FreeNATS event development documentation.

Whatever you are developing be sure to have a look at the general Developing with FreeNATS Refrence Documentation.

Further Information