NConf is a PHP based web-tool for configuring the Nagios monitoring software. It differs from similar tools by offering enterprise-class features like templates, dependencies and the ability to configure a large-scale, distributed Nagios server topology. It is mainly targeted at sysadmins, who already know Nagios, but are looking for a more convenient way of managing their configuration files.
NConf development began back in 2006. The main reason for the project was that we needed a graphical tool, which could be handled by any sysadmin, and which could automatically provision a distributed Nagios server topology. Since there is a physical limit to the amount of services that one Nagios instance can monitor, our tool allows services to be provisioned across several Nagios instances (optional).
The tool is based on PHP, Perl and MySQL. To guarantee flexibility towards future changes to the Nagios software, we implemented an abstract data model that allows us to extend the data schema and to integrate any new options available within Nagios. Therefore there are no “host”, “service”, “servicegroup” or similar entities to be found within the database. Instead we reduced each entity to a so called “configuration item”. Each item is of a certain “class” and has multiple “attributes” assigned to it. A class roughly represents a Nagios configuration file. Attribute values are stored separately from attributes, so that attributes only need to be defined once for each class. Items can be linked with each other. The whole database currently consist of 6 tables.
The web interface is implemented in PHP. All views and forms are implemented as dynamically as possible, so that no changes to the PHP code are necessary, if Nagios configuration attributes change. Each GUI is generated dynamically based on the attribute information in the database. This allows us to drastically reduce the amount of code needed for the GUI.
The focus has always been on usability and ease of use. The look ’n’ feel can easily be adapted to one’s liking. Features can be enabled or disabled according to a user's privileges. The tool also features several configurable modules for authentication, password encryption and configuration deployment, as well as syntax checking.