k h n e i a
 
What does the word khneia mean ? k h h - n e e - y - e

To make a long story short. Khneia is a Khmer word (Khmer is the language of Cambodia). Its meaning is something like group or us. A phrase I hear often in Cambodian is "khneia yhung" which translates to "us". I am not sure of the proper way to spell it in English... but it looks close enough.
Project description Khneia is a server monitoring and administration system that consists of a few customizable components. These components include the monitor, administration and master daemon. The intended use for this system would be large server farms. However this system could be deployed on a few web servers in tandem with other system administration tools and provide a simple low cost fail over solution.

The monitoring component will gather low lever statistics from the servers and report them to the master daemon for analysis and long term storage. These statistics include memory, cpu load, network interface information, file system usage and other relative information.

The admin component is the system configuration and file system synchronization. This component will ensure that the servers are in a constant state and also allow for one simple interface to configure basic system settings across all servers.

The master daemon will control the entire system by pulling the information from the web servers. This is done by issuing heartbeat requests. The heartbeat requests will be sent out to all severs at a customizable interval. The servers will respond to the heartbeat request with the required information. If a server should fail to respond to a given heartbeat an alert can be sent. Also alert notices can be sent if a servers information is outside given limits. An example of this would be high CPU load or the system disk is full. After simple analysis the master daemon will store the information into a database for long term use.
 
Implementation master daemon
Written in C++ and embedded SQL. The data will be stored into a PostgreSQL database. Simple analysis and database clean up can be done using stored procedures and triggers.

The master daemon will listen on port 8888 and heartbeats will be sent out on 8889. This will allow a master to be both a client and a server.

Clients and information gathered.
Written in C++ and file synchronization will be done with rsync. Information will consist of the following:
  • Ethernet mac address for all devices
  • Ethernet IP/Netmask for all devices
  • Default route information
  • Operating system and kernel information (similar to uname -a)
  • Memory usage (total available, used, free, swap info)
  • All mounts and disk usage (size, free, used, fstype)
  • CPU load

Communication

For the most flexibility all communication will be done using TCP/IP.
 
User interface Since the master daemon will store all information inside the database. The user has many possibilities as to interaction with the master daemon. Configuration changes will be made by adding, deleting or updating records in the database. The HUP signal will tell the daemon to reload these options. There might be a small Java or php web based system in place for viewing the statistics.
 
Platforms Khneia will support FreeBSD and Solaris and will be completely open source under a BSD license. (currently only FreeBSD has been tested)
Why make it ? Several reasons:

The first and foremost is that I really enjoy programing. I spend most of my free time programming and participating in open source development.

Second, is that FreeBSD (and Unix) needs a good simple open source monitoring system. Its always good to follow your systems and see their usage. This is important for system admins with large networks and many servers. Since they can do simple analysis on the statistics and plan their network accordingly. Or they can use the statistics to plot the performance of a large cluster. I know their are systems around and they are pretty good. However I felt that they did not report what I wanted or they where to complex and offered to much information that was not needed.

Third, I am very interested in super computing with clusters. I hope to add a clone feature to khneia. That way it would be possible to automate the cloning of a large cluster.

Fourth, maybe someone will see my work and offer me a good job developing on the Unix platform.
Khneia Implementation khneia outline
Latest source (5.6.2) khneia_0.1.0