Re: [Armory-devel] Server/agent
Status: Planning
Brought to you by:
bicofino
|
From: <ana...@gm...> - 2007-06-30 03:35:38
|
Hi Robert, My name is Ananth. I am currently working on the Server/Agent. Most of my (little) experience is in C and UNIX system programming along with networking, IPCs, etc and partly in C++. Here are my comments: > 1) Dynamically linked plugins. I think it's a must both for server and > agents. It will enable us to better divide responsibilities, avoid clashes > in SVN and add new features without recompiling the whole app. The statistics gathering programs will be compiled into shared libs. The agent will be linked with these shared libs. > 2) Server-Agent communication protocol. Agents will be running on multiple > platforms and probably multiple different CPUs, so we need a good data > representation mechanism. Text format is the most cross-platform one, but > its also more heavyweight than binary format. The proposed format (see > https://sourceforge.net/forum/forum.php?thread_id=1751975&forum_id=689813) > is too inflexible. Bicofino mentioned about database monitoring, which will > definitely need lists. It is possible to do lists with the proposed format, > but it'll look much like binary data represented as text which means waste > of space. So why not use a binary format? I suggest we use XDR (which is > standard and endian neutral) to transfer data through network. XDR is a good idea. I have not programmed using it, but it would be a great opportunity to learn. > 3) Transport protocol. Since Armory is about monitoring, lots of small data > packets are going to be sent from many hosts. Only a high-performance > networking framework (like ACE) will be able to handle TCP connections. > Moreover, if you have ever used any P2P software, you should know what > happens to most routers/switches when there are too many TCP connections > open. > We can use UDP instead. It's true that some data will be lost, but things > like CPU or memory usage are updated frequently, so no one will ever notice > the loss of packets. If minor loss of data is ok, then I have no problems with it. > > 4) Networking library. Depends on all of the above. Darrik (another developer) and myself were discussing about which framework to use (Qt, ACE or Boost), but unfortunately he had to leave the project. I'm somewhat familiar with ACE and I think it is ideal for our requirements. > > > Any comments? > > > Maybe we start writing down every key decision we make? There is no info > about what is going on with the project. > So far, I've written the programs for getting CPU, memory, disk and swap space stats on Linux, FreeBSD, HP-UX and AIX and a basic server and agent in C, it is on the SVN. There are still many things to do in the programs, but i uploaded to SVN anyway. ~Ananth |