I have learnt a lot of useful stuff: network programming (and also Twisted Matrix with it), a better understanding of Python programming, packaging and installation procedures and of course, some improved debugging skills with all of it:-). But most important for me, being a very disorganized person, I learnt to organize my time much better working at such a project.
As you may have noticed from the title, I worked at Network Inventory: New Generation, a platform to monitor hosts in your network trough asynchronous events sent by those hosts. The NI:NG is composed of 2 main components:
- Network Inventory Agent. A daemon/service that is installed on the host that should be monitored and sends out notifications when something happens. It offers an modular design so the users can add new monitoring functionality based on their needs (or better said, on what is needed to be monitored on that host).
- Network Inventory Server. Also a daemon/service that receives notifications from the agents installed on the monitored hosts. It stores those notifications and provides an interface so other applications can view them. Besides receiving notifications from agents, it also provides support for SNMP Traps and it can even be extended to support new monitoring protocols.
Besides these 2 main components, a Network Inventory frontend was also developed that connects to the Server Interface and allows the user to view notifications, search trough them, edit server and agent configurations and view host information.
As a very detailed view of the platform wouldn't be such an interesting read, here is a brief summary of some of the features:
- A Device Sensor agent module that generates notifications based on some device variables: RAM Load, CPU Load, HDD space, network traffic, open ports and others. The user can define under what conditions should a notification be generated. For example, you can say that you want a notification sent if the CPU% is over 90% over the last 5 minutes, if the remaining space on drive C:\ is under 10GB or if less than 1KB of data was received in the last 30 minutes trough your network connection. Some examples of course may not be interesting and relevant, but the conditions under which notifications are sent can be customized to your needs.
- Possibility to encrypt the notifications sent by the agents to the server and the data between the GUI and the server.
- An EMail Notifier server module that sends e-mail notifications for some pre-defined notification types.
- A SNMP server module that allows the server to receive SNMPv1, SNMPv2c and SNMPv3 Traps/Notifications.
For the Network Inventory GUI, I will just post some screenshots here as I think it will better describe it :-).