diff options
author | Rob Austein <sra@hactrn.net> | 2012-05-12 05:42:51 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2012-05-12 05:42:51 +0000 |
commit | 96899d4250701b6c5feb9f2eec2d7eb181ecf67b (patch) | |
tree | fbf88938c830b591d023ecc9d6c734b1754c0d14 | |
parent | 8bd7447c2ed94123fa1b0ecbe67ec8db2419026d (diff) |
First sorta-working version, although not right yet.
svn path=/trunk/; revision=4488
-rw-r--r-- | scripts/rrd-rcynic-history.py | 38 |
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() |