Sorry folks, I hoped to be able to release the source code I created for a Nagios Web Interface, but after starting on it a few hours ago, I'm giving up on this project. The code works just fine, as you can see from the screenshots below.
The problem is the amount of work it will take to make this code "clean" for public release. It currently has my client name all over it, and removing all those references is just going to take too long. (Unless of course an angel investor wants to contribute a few week's pay into my PayPal account.)
While I can't release the code in the current state, I'm glad to release several images from this Nagios web application to give you an idea of how it works.
Nagios Host Template inheritance
Soon after you start working with Nagios, you realize that the concept of "inheritance" is extremely important. And from a UI standpoint, if you're trying to create a user interface that is simple enough for non-techies to use, you have to find a decent way of showing Nagios inheritance.
This figure shows a list of Nagios Host Template objects, and also shows inheritance between the Host Templates, with the Base Host Template being the base object for the Windows Host Template and Linux Host Template:
(The red warning icon in the upper-left indicates that you have made changes to the Nagios configuration that haven't been changed to the Nagios configuration files. You must click the "Generate Files" link to validate and public the Nagios configuration file changes, and automatically restart the Nagios server.)
Nagios Host Template
When editing a Nagios object that supports inheritance, you need to show inherited properties in the object editor, and also give the user a chance to override those properties. These two screenshots demonstrate many of these properties for the "Linux Host Template" object I created:
(this second figure is a continuation of the first figure)
Nagios Host inheritance
After defining your Nagios Host Template objects, you'll want to start configuring Nagios Host objects, i.e., the actual physical servers you want to monitor. This screenshot shows a short list of hosts I have defined in my test environment:
A lot of the power of Nagios comes from the commands you can define. In short, if you can define a command in the Nagios format, you can monitor whatever you want. This screenshot shows a list of Nagios Command objects (some real, some fake) that I have defined in my test environment.
The concept of Nagios Hostgroups also gives you more power, and this figure shows a list of how you might configure your Nagios Hostgroups objects:
Nagios web utilities
Finally, because this web interface isn't directly tied into the Nagios server, I found it very helpful to have a list of links that would show me all the Nagios configuration information I might want to see from the command line. This "Utilities" view provides some more "glue" between the Nagios web interface and the Nagios server.
Nagios web interface - summary
Again, my apologies for not being able to release this code to the public. Cleaning up the code and writing the necessary documentation will just take too long, and without being paid for it, I just can't take out that much time to make this happen. That being said, if you're thinking about creating your own Nagios web interface, I hope these screenshots will give you some ideas of what the user interface must look like to support the Nagios concepts, including inheritance.
Two final notes: This Nagios web application is written in Java, and uses all the JSF goodies. This project also started with my working on the Nagios "Blue" project, though in the end it became a major re-write. That being said, thanks to the Blue project for their initial working ideas.