Skip to content

Instantly share code, notes, and snippets.

@moos3
Created September 3, 2010 17:27
Show Gist options
  • Save moos3/564221 to your computer and use it in GitHub Desktop.
Save moos3/564221 to your computer and use it in GitHub Desktop.
var sys = require("sys"),
http = require("http"),
ws = require('./deps/node-websocket-server/lib/ws'),
fs = require("fs");
var iostat = require("child_process").spawn("iostat",["-w 1"]);
var httpServer = http.createServer();
var server = ws.createServer({debug:true},httpServer);
// Format iostat date
function format (data){
var output_data = data.toString();
console.log(output_data);
header = 'disk0 cpu load average';
if (output_data.match(header)){
console.log("ignore header");
}else{
var output_array = output_data.replace(/^\s+|\s+$/g,"").split(/\s+/);
for (var i=0; i < output_array.length; i++){
output_array[i] = parseFloat( output_array[i]);
};
output_hash = {
date:new Date(),
disk:{
kpt:output_array[0],
tps:output_array[1],
mbs:output_array[2]
},
cpu:{
us:output_array[3],
sy:output_array[4],
id:output_array[5]
},
load_average:{
m1:output_array[6],
m5:output_array[7],
m15:output_array[8]
}
}
return JSON.stringify(output_hash);
}
}
server.addListener("connection",function(conn){
console.log("opened connection: "+conn.id);
server.send(conn.id,"connected as:"+conn.id);
iostat.stdout.on('data',function(data){
console.log(typeof(data));
console.log('stdout: '+data);
console.log('stdout: '+format(data));
server.send(conn.id, format(data));
});
server.send(conn.id, "Connected as: "+conn.id);
});
server.addListener("close",function(conn){
console.log("closed connection: "+conn.id);
conn.broadcast("<"+conn.id+"> disconnected");
});
server.listen(9000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment