Xymon Mailing List Archive search

ext hobbit client scripts

list Henrik Størner
Tue, 13 Sep 2005 09:23:25 +0200
Message-Id: <user-b444cdbe5f37@xymon.invalid>

On Mon, Sep 12, 2005 at 09:57:51PM -0500, Craig Cook wrote:
Given the new client design of sending "raw" data back to the sever 
so it can decide what the status should be...

How can I extend this concept and write an external client script 
with the same logic...

ie. a custom mysql status script that just sends its data back 
to the central server.  The server must analyse it somehow and 
set the status message
You need to write two programs:

1) The client side tool that collects the data. Run it as a client
   extension, and have it send back the data in using a "data"
   message. I.e. 
      $BB $BBDISP "data $MACHINE.mydata"

2) A Hobbit server module to process the data.


Server modules are all of those programs in hobbitlaunch.cfg
that runs "hobbitd_channel --channel=X hobbitd_bla". For a start,
try running 
  ~hobbit/server/bin/bbcmd hobbitd_channel --channel=data cat
(you must be logged in as the hobbit user). This just dumps the
incoming "data" messages to the console. You'll see it looks like
this:

@@data#18078|1126595825.225133|127.0.0.1||voodoo.hswn.dk|mydata
<the contents of the data message>
@@

The first line always has
   @@data#Seq.no.|Timestamp|SenderIP|Origin|Hostname|Type
and the message ends with "@@"

"Origin" is currently not used and will always be blank.

So your server module - written in C, Perl, Ruby or whatever your
favourite programming language is - now has access to the full
data message sent by your client, and hence it can parse the data
and build a "status" message to generate the final status.

For debugging, You can start/stop modules without having to restart
Hobbit - just run the "hobbitd_channel ..." command on the command line.

-- 
Henrik Storner