diff options
Diffstat (limited to 'GlobalRRD.py')
-rw-r--r-- | GlobalRRD.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/GlobalRRD.py b/GlobalRRD.py new file mode 100644 index 0000000..f3f3960 --- /dev/null +++ b/GlobalRRD.py @@ -0,0 +1,35 @@ +import os +import subprocess +from RRD import RRD, DS, RRA + +class GlobalRRD(RRD): + ds_list = [ + # Number of nodes available + DS('nodes', 'GAUGE', 120, 0, float('NaN')), + # Number of client available + DS('clients', 'GAUGE', 120, 0, float('NaN')), + ] + rra_list = [ + RRA('AVERAGE', 0.5, 1, 120), # 2 hours of 1 minute samples + RRA('AVERAGE', 0.5, 60, 744), # 31 days of 1 hour samples + RRA('AVERAGE', 0.5, 1440, 1780),# ~5 years of 1 day samples + ] + + def __init__(self, directory): + super().__init__(os.path.join(directory, "nodes.rrd")) + self.ensureSanity(self.ds_list, self.rra_list, step=60) + + def update(self, nodeCount, clientCount): + super().update({'nodes': nodeCount, 'clients': clientCount}) + + def graph(self, filename, timeframe): + args = ["rrdtool", 'graph', filename, + '-s', '-' + timeframe, + '-w', '800', + '-h' '400', + 'DEF:nodes=' + self.filename + ':nodes:AVERAGE', + 'LINE1:nodes#F00:nodes\\l', + 'DEF:clients=' + self.filename + ':clients:AVERAGE', + 'LINE2:clients#00F:clients', + ] + subprocess.check_output(args) |