Here are the four challenges I see to writing this Jabber Monitoring System…
First: disconnected operation. What happens to messages if my clients aren’t able to contact the server?
Second: message formatting. How do I format these messages so they’ll be machine readable on the other side?
Third: guaranteed order. I want messages to be processed in a certain order.
Fourth: Receiving and processing the messages. How do we route the messages to the correct place? How do we write programs to deal with the incoming messages?
For monitoring, what do you think of Machines publishing a list of current statuses, and the monitoring server subscribing to those publications?
One TCP connection per agent. Interface to allow shell scripts to use it.
It would be nice to make this an extendable perl package that can reload itself dynamically (ala geektalk). We could then add system checks dynamically. ..Which we could push over Jabber!
Machines advertise their state via “Presence”. A PHP Jabber page can query all that presence and tell us how they are.
now, regarding XML-RPC messages… I think they should age out
Design Goal: Must be able to do 10K on off the shelf hardware.
Design Goal: Must not be heavy on the host agent.
Netmon: Have the MonitorBot write to the status database directly.
AdminBot: Converts natural language commands into JabberBot::RPC calls, also converts Agent responses into human readable text.
the would then subscribe to pubsub published sources, each agent would be the owner of it’s own pubsub published source.
- The Agent would disco announce itself as an “alertpublisher”.
- Alertbots would then disco search for all alertpublishers.
- they would then subscribe to pubsub published sources, each agent would be the owner of it’s own pubsub published source.
- in this way, the central alertbot would be aggressively discovering and subscribing, the agent would merely be announcing it’s disco and registering its published source with pubsub
- ..And when it actually had something to say, it would be publishing a single message, and the server would be responsible for disseminating it..
- ,..And the multiple alertbots could each subscribe to All or a Subset of agents.
- so a collection of pubsub and disco with the agent as the publisher