munin: add tahoe_diskleft plugin, update spacetime/diskwatcher.tac to support it
authorBrian Warner <warner@allmydata.com>
Thu, 28 Aug 2008 20:32:36 +0000 (13:32 -0700)
committerBrian Warner <warner@allmydata.com>
Thu, 28 Aug 2008 20:32:36 +0000 (13:32 -0700)
misc/munin/tahoe_diskleft [new file with mode: 0644]
misc/spacetime/diskwatcher.tac

diff --git a/misc/munin/tahoe_diskleft b/misc/munin/tahoe_diskleft
new file mode 100644 (file)
index 0000000..8a177f6
--- /dev/null
@@ -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
index 5fa72d897df1422cbee1198817a9468bc68983c7..ee24f9d9ce97b52ffba9112a60905da040f0fe29 100644 (file)
@@ -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: