Skip to content
This repository has been archived by the owner on Sep 20, 2022. It is now read-only.
Jack Fletcher edited this page Oct 10, 2013 · 4 revisions

Requirements


  • Agent sits on each machine to be monitored
  • Should be as lightweight as possible
  • Should be non-blocking and Event Based
  • Need heartbeat, so connection loss can be detected
  • Remotely Configurable (Which files/services to monitor etc.)
  • Places messages onto a RabbitMQ queue to be read by the control node

Discussion


  • NodeJS was settled on as the best framework to write this component in very early on. The client will be relatively IO heavy, and NodeJS lends itself to these tasks, as it provides non-blocking IO.
  • Prototyped having a dual HTTP/RabbitMQ RPC service, splitting configuration calls and normal operation calls. This would have allowed remote configuration of clients using an open HTTP server. However we decided that this might be disruptive to the machines other services, and does not fit with normal datacenter application configuration techniques, which tend towards using Puppet, Chef, and similar frameworks. A rails/django style routing system for Rabbit queues will be used exclusively instead.
  • Thinking about Auto-Configuration. Potentially, rather than running a web server, could open a socket to receive configuration (Hive Rabbit IP), and close after config is complete, move onto rabbit for everything else.