From 3cba33964cc835b1f9ffdc9e302c0790d1520e94 Mon Sep 17 00:00:00 2001 From: Jeffrey Forman Date: Sat, 9 Feb 2013 16:22:46 -0500 Subject: [PATCH] some more cleanup around pool management. TODO: Make pool handling smarter, handle keyboardinterrupt --- .gitignore | 1 + m2g-poller.py | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/m2g-poller.py b/m2g-poller.py index 8456011..c85339f 100755 --- a/m2g-poller.py +++ b/m2g-poller.py @@ -11,8 +11,7 @@ import struct import sys import time -LOGGING_FORMAT = "%(asctime)s : %(levelname)s : %(message)s" -HOSTLIST = ["localhost", "127.0.0.1"] +LOGGING_FORMAT = "%(asctime)s:%(levelname)s:%(message)s" RE_LEFTRIGHT = re.compile(r"^(?P\S+)\s+(?P\S+)$") @@ -162,17 +161,20 @@ def parse_args(): parser = argparse.ArgumentParser(description="Send Munin statistics to Graphite.") parser.add_argument("--carbon", action="store", - help="Carbon hostport (ex: localhost:2003).") - parser.add_argument("-n", "--noop", + help="Carbon host and Pickle port (ex: localhost:2004).") + parser.add_argument("--muninhosts", + action="store", + help="Comma separated list of hosts running Munin to query for stats.") + parser.add_argument("--noop", action="store_true", help="Don't actually send Munin data to Carbon.") - parser.add_argument("-v", "--verbose", + parser.add_argument("--poolsize", type=int, default=1, + help="Pool size of simultaneous connections when polling multiple hosts.") + parser.add_argument("--verbose", choices=[1, 2, 3], default=2, type=int, help="Verbosity level. 1:ERROR, 2:INFO/Default, 3:DEBUG.") - parser.add_argument("--poolsize", type=int, default=1, - help="Pool size of simultaneous connections for polling.") args = parser.parse_args() return args @@ -186,7 +188,7 @@ def worker_return(retval): """Outputs any return values from each pool iteration.""" logging.debug("Iteration Return Value: %s", retval) -if __name__ == '__main__': +def main(): args = parse_args() if args.verbose == 1: LOGGING_LEVEL = logging.ERROR @@ -197,8 +199,11 @@ if __name__ == '__main__': logging.basicConfig(format=LOGGING_FORMAT, level=LOGGING_LEVEL) pool = multiprocessing.Pool(args.poolsize) - for host in HOSTLIST: - logging.debug("Adding host %s to the pool.", host) - pool.apply_async(worker_bootstrap, args = (host, args,), callback = worker_return) + muninhosts = args.muninhosts.split(",") + for muninhost in muninhosts: + pool.apply_async(worker_bootstrap, args = (muninhost, args,), callback = worker_return) pool.close() pool.join() + +if __name__ == '__main__': + main()