From 96cc1bae725bb8d74abfbf9b88b73e9d2293167e Mon Sep 17 00:00:00 2001 From: Nathan Lasseter Date: Mon, 18 Mar 2013 22:20:34 +0000 Subject: First Commit --- Client/client.rb | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ Parser/parser.rb | 19 +++++++++++++++++++ README | 8 ++++++++ 3 files changed, 76 insertions(+) create mode 100644 Client/client.rb create mode 100644 Parser/parser.rb create mode 100644 README 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 -- cgit v1.2.1