From: Brian Warner <warner@allmydata.com>
Date: Thu, 28 Aug 2008 20:32:36 +0000 (-0700)
Subject: munin: add tahoe_diskleft plugin, update spacetime/diskwatcher.tac to support it
X-Git-Url: https://git.rkrishnan.org/components/%22news.html/about.html?a=commitdiff_plain;h=be11bfe812d1b7d6e531fb7f09bfec138d67c2b7;p=tahoe-lafs%2Ftahoe-lafs.git

munin: add tahoe_diskleft plugin, update spacetime/diskwatcher.tac to support it
---

diff --git a/misc/munin/tahoe_diskleft b/misc/munin/tahoe_diskleft
new file mode 100644
index 00000000..8a177f6c
--- /dev/null
+++ b/misc/munin/tahoe_diskleft
@@ -0,0 +1,22 @@
+#! /usr/bin/python
+
+# This is a munin plugin which pulls data from the server in
+# misc/spacetime/diskwatcher.tac . It produces a graph of how much free space
+# is left on all disks across the grid. The plugin should be configured with
+# env_url= pointing at the diskwatcher.tac webport.
+
+import os, sys, urllib, simplejson
+
+if len(sys.argv) > 1 and sys.argv[1] == "config":
+    print """\
+graph_title Tahoe Remaining Disk Space
+graph_vlabel bytes remaining
+graph_category tahoe
+graph_info This graph shows the total amount of disk space left available in the grid
+disk_left.label disk left
+disk_left.draw LINE1"""
+    sys.exit(0)
+
+url = os.environ["url"]
+data = simplejson.load(urllib.urlopen(url))["available"]
+print "disk_left.value", data
diff --git a/misc/spacetime/diskwatcher.tac b/misc/spacetime/diskwatcher.tac
index 5fa72d89..ee24f9d9 100644
--- a/misc/spacetime/diskwatcher.tac
+++ b/misc/spacetime/diskwatcher.tac
@@ -152,7 +152,7 @@ class DiskWatcher(service.MultiService, resource.Resource):
 
     def calculate_growth_timeleft(self):
         timespans = []
-        total_avail_space = self.find_total_avail_space()
+        total_avail_space = self.find_total_available_space()
         pairs = [ (timespan,name)
                   for name,timespan in self.AVERAGES.items() ]
         pairs.sort()
@@ -166,7 +166,7 @@ class DiskWatcher(service.MultiService, resource.Resource):
                 timespans.append( (name, timespan, growth, timeleft) )
         return timespans
 
-    def find_total_avail_space(self):
+    def find_total_available_space(self):
         # this returns the sum of disk-avail stats for all servers that 1)
         # are listed in urls.txt and 2) have responded recently.
         now = extime.Time()
@@ -293,6 +293,7 @@ class DiskWatcher(service.MultiService, resource.Resource):
         elif t == "json":
             current = {"rates": self.calculate_growth_timeleft(),
                        "used": self.find_total_used_space(),
+                       "available": self.find_total_available_space(),
                        }
             data = simplejson.dumps(current, indent=True)
         else: