aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Lasseter <nathan@4574.co.uk>2013-03-18 22:20:34 +0000
committerNathan Lasseter <nathan@4574.co.uk>2013-03-18 22:20:34 +0000
commit96cc1bae725bb8d74abfbf9b88b73e9d2293167e (patch)
treef5a4ead2e744544deedce04ea521defe1e5dace2
First Commit
-rw-r--r--Client/client.rb49
-rw-r--r--Parser/parser.rb19
-rw-r--r--README8
3 files changed, 76 insertions, 0 deletions
diff --git a/Client/client.rb b/Client/client.rb
new file mode 100644
index 0000000..4d499a2
--- /dev/null
+++ b/Client/client.rb
@@ -0,0 +1,49 @@
+require 'rubygems'
+require 'mongo'
+
+include Mongo
+
+THIS = "servera"
+settings = nil
+slock = false
+
+threads = {}
+
+client = MongoClient.new('home', 27017)
+cdb = client['configs']
+rdb = client['results']
+ccoll = cdb[THIS]
+rcoll = rdb[THIS]
+
+ccoll.find.each do |doc|
+ settings = doc
+end
+
+threads["pingthread"] = Thread.new do loop do
+ unless slock
+ slock = true
+ results = {"timestamp" => Time.now.to_i}
+ settings["neighbours"].each do |neighbour|
+ pingtime = %x[ping -c1 #{neighbour}][/time=(.*?) ms/, 1]
+ results.merge!({neighbour => pingtime})
+ end
+ rcoll.insert(results)
+ slock = false
+ sleep(settings["pinginterval"])
+ end
+end end
+
+threads["threadupdater"] = Thread.new do loop do
+ unless slock
+ slock = true
+ ccoll.find.each do |doc|
+ settings = doc
+ end
+ slock = false
+ sleep(settings["configttl"])
+ end
+end end
+
+threads.each do |name, thr|
+ thr.join
+end
diff --git a/Parser/parser.rb b/Parser/parser.rb
new file mode 100644
index 0000000..5f51964
--- /dev/null
+++ b/Parser/parser.rb
@@ -0,0 +1,19 @@
+require 'rubygems'
+require 'mongo'
+
+include Mongo
+
+client = MongoClient.new('home', 27017)
+db = client['results']
+
+puts "digraph {"
+db.collection_names.each do |coll|
+ next if coll === "system.indexes"
+ data = db[coll].find.sort(:timestamp => :desc).next
+ data.each do |server, ping|
+ next if server === "_id"
+ next if server === "timestamp"
+ puts "\t#{coll} -> #{server} [label = \"#{ping}\"];"
+ end
+end
+puts "}"
diff --git a/README b/README
new file mode 100644
index 0000000..4acc99c
--- /dev/null
+++ b/README
@@ -0,0 +1,8 @@
+PLANG - The Packet Internet Groper Local Area Network Groper
+
+Nowhere near finished.
+
+Client gathers stats and pushes them back to the home server
+Parser turns stats into graph
+
+You'll need graphviz to do the rest