]> git.ipfire.org Git - collecty.git/blobdiff - collecty/plugins/base.py
Add some more verbose logging when creating/updating RRDs.
[collecty.git] / collecty / plugins / base.py
index ddb5e164ca5df1dc6af9c5e465b32cbf41adb096..5767997bc32a2b709e0d482d9c23da49fa0c5d5b 100644 (file)
@@ -36,18 +36,22 @@ class Timer(object):
                self.timeout = timeout
                self.heartbeat = heartbeat
 
+               self.delay = 0
+
                self.reset()
 
-       def reset(self):
+       def reset(self, delay=0):
                # Save start time.
                self.start = time.time()
 
+               self.delay = delay
+
                # Has this timer been killed?
                self.killed = False
 
        @property
        def elapsed(self):
-               return time.time() - self.start
+               return time.time() - self.start - self.delay
 
        def cancel(self):
                self.killed = True
@@ -135,6 +139,10 @@ class DataSource(threading.Thread):
        def stepsize(self):
                return self.interval
 
+       @property
+       def heartbeat(self):
+               return self.stepsize * 2
+
        @property
        def file(self):
                """
@@ -162,6 +170,8 @@ class DataSource(threading.Thread):
                rrdtool.create(self.file, *args)
 
                self.log.debug(_("Created RRD file %s.") % self.file)
+               for arg in args:
+                       self.log.debug("  %s" % arg)
 
        def get_rrd_schema(self):
                schema = [
@@ -176,7 +186,7 @@ class DataSource(threading.Thread):
                                                prefix,
                                                name,
                                                type,
-                                               "%s" % self.stepsize,
+                                               "%s" % self.heartbeat,
                                                lower_limit,
                                                upper_limit
                                        ))
@@ -231,6 +241,13 @@ class DataSource(threading.Thread):
                        return
 
                self.log.debug(_("Submitting data to database. %d entries.") % len(self.data))
+               for data in self.data:
+                       self.log.debug("  %s" % data)
+
+               # Create the RRD files (if they don't exist yet or
+               # have vanished for some reason).
+               self.create()
+
                rrdtool.update(self.file, *self.data)
                self.data = []