aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2012-05-12 05:42:51 +0000
committerRob Austein <sra@hactrn.net>2012-05-12 05:42:51 +0000
commit96899d4250701b6c5feb9f2eec2d7eb181ecf67b (patch)
treefbf88938c830b591d023ecc9d6c734b1754c0d14
parent8bd7447c2ed94123fa1b0ecbe67ec8db2419026d (diff)
First sorta-working version, although not right yet.
svn path=/trunk/; revision=4488
-rw-r--r--scripts/rrd-rcynic-history.py38
1 files changed, 27 insertions, 11 deletions
diff --git a/scripts/rrd-rcynic-history.py b/scripts/rrd-rcynic-history.py
index 27e66d2c..47788cb7 100644
--- a/scripts/rrd-rcynic-history.py
+++ b/scripts/rrd-rcynic-history.py
@@ -94,13 +94,13 @@ class Host(object):
def avg_conn_time(self):
return self.safe_division(self.total_conn_time, self.conn_count)
- field_table = (("timestamp", None),
- ("conn_count", "ABSOLUTE"),
- ("object_count", "ABSOLUTE"),
- ("objs_per_conn", "ABSOLUTE"),
- ("secs_per_obj", "ABSOLUTE"),
- ("avg_conn_time", "ABSOLUTE"),
- ("failed", "ABSOLUTE"))
+ field_table = (("timestamp", None, None, None),
+ ("conn_count", "GAUGE", "Connections", "FF0000"),
+ ("object_count", "GAUGE", "Objects", "00FF00"),
+ ("objs_per_conn", "GAUGE", "Objects/Connection", "0000FF"),
+ ("secs_per_obj", "GAUGE", "Seconds/Object", "FFFF00"),
+ ("avg_conn_time", "GAUGE", "Connection Time", "FF00FF"),
+ ("failed", "GAUGE", "Failed", "00FFFF"))
@property
def field_values(self):
@@ -111,6 +111,15 @@ class Host(object):
return ["DS:%s:%s:%s:%s:%s" % (field[0], field[1], heartbeat, minimum, maximum)
for field in cls.field_table if field[1] is not None]
+ @classmethod
+ def field_graph_specifiers(cls, hostname):
+ result = []
+ for field in cls.field_table:
+ if field[1] is not None:
+ result.append("DEF:%s=%s.rrd:%s:AVERAGE" % (field[0], hostname, field[0]))
+ result.append("'LINE1:%s#%s:%s'" % (field[0], field[3], field[2]))
+ return result
+
def save(self, rrdtable):
self.finalize()
rrdtable.add(self.hostname, self.field_values)
@@ -173,11 +182,18 @@ class RRDTable(dict):
for hostname in self:
print "rrdtool create %s.rrd --start %s --step 3600 %s" % (hostname, start, " ".join(ds_list))
- def save(self):
+ def update(self):
for hostname, data in self.iteritems():
for datum in data:
print "rrdtool update %s.rrd %s" % (hostname, ":".join(str(d) for d in datum))
+ def graph(self):
+ #
+ # Yes, I am making this up as I go, thanks for asking
+ #
+ for hostname in self:
+ print "rrdtool graph %s.png --start -1y %s" % (hostname, " ".join(Host.field_graph_specifiers(hostname)))
+
mb = mailbox.Maildir("/u/sra/rpki/rcynic-xml", factory = None, create = False)
rrdtable = RRDTable()
@@ -198,8 +214,7 @@ for i, key in enumerate(mb.iterkeys(), 1):
session.save(rrdtable)
# XXX
- if i > 4:
- break
+ #if i > 4: break
sys.stderr.write("\n")
@@ -208,4 +223,5 @@ print
rrdtable.create()
rrdtable.sort()
-rrdtable.save()
+rrdtable.update()
+rrdtable.graph()