diff --git a/pymonitor/daemon.py b/pymonitor/daemon.py index 9062ba9..73bf069 100755 --- a/pymonitor/daemon.py +++ b/pymonitor/daemon.py @@ -175,9 +175,9 @@ class MonitorThread(Thread): """ Run the loaded checker function """ - result = self.checker_func(**args) - self.logger.info("result: %s" % (result,)) - self.backend.add_data(self.config["type"], result) + for result in self.checker_func(**args): + self.logger.info("result: %s" % (result,)) + self.backend.add_data(self.config["type"], result) def shutdown(self): """ diff --git a/pymonitor/monitors/load.py b/pymonitor/monitors/load.py index 2889c9b..e9f5fdb 100644 --- a/pymonitor/monitors/load.py +++ b/pymonitor/monitors/load.py @@ -1,7 +1,7 @@ def load(): with open("/proc/loadavg", "r") as f: m1, m5, m15, procs, pid = f.read().strip().split(" ") - return { + yield { "load_1m": m1, "load_5m": m5, "load_15m":m15 @@ -24,5 +24,5 @@ mapping = { } if __name__ == '__main__': - avg = load() - print(' '.join([avg["load_1m"], avg["load_5m"], avg["load_15m"]])) + for avg in load(): + print(' '.join([avg["load_1m"], avg["load_5m"], avg["load_15m"]])) diff --git a/pymonitor/monitors/meminfo.py b/pymonitor/monitors/meminfo.py index 9c7ea94..81a0784 100644 --- a/pymonitor/monitors/meminfo.py +++ b/pymonitor/monitors/meminfo.py @@ -38,7 +38,7 @@ def meminfo(whitelist=[]): for key in computed_fields: result[key] = computed_fields[key](result) - return result + yield result mapping = { "meminfo": { @@ -63,5 +63,6 @@ mapping = { } if __name__ == '__main__': - for k,v in meminfo().items(): - print("%s: %s"%(k,v)) + for item in meminfo(): + for k,v in item.items(): + print("%s: %s"%(k,v)) diff --git a/pymonitor/monitors/procs.py b/pymonitor/monitors/procs.py index 067024f..4839caa 100644 --- a/pymonitor/monitors/procs.py +++ b/pymonitor/monitors/procs.py @@ -57,7 +57,7 @@ def procs(): print(e) print("Failed to open %s" % f) - return {"procs": num_procs, "threads":num_threads, "kthreads": num_kthreads} + yield {"procs": num_procs, "threads":num_threads, "kthreads": num_kthreads} mapping = { "procs": { @@ -76,5 +76,5 @@ mapping = { } if __name__ == '__main__': - stats = procs() - print("%s procs %s kthreads %s threads" % (stats["procs"], stats["kthreads"], stats["threads"])) + for stats in procs(): + print("%s procs %s kthreads %s threads" % (stats["procs"], stats["kthreads"], stats["threads"])) diff --git a/pymonitor/monitors/uptime.py b/pymonitor/monitors/uptime.py index 25cb061..85d9520 100644 --- a/pymonitor/monitors/uptime.py +++ b/pymonitor/monitors/uptime.py @@ -1,6 +1,6 @@ def uptime(): with open("/proc/uptime", "r") as f: - return {"uptime":int(float(f.read().split(" ")[0]))} + yield {"uptime":int(float(f.read().split(" ")[0]))} mapping = { "uptime": { @@ -13,4 +13,5 @@ mapping = { } if __name__ == '__main__': - print(uptime()["uptime"]) + for item in uptime(): + print(item["uptime"])