automatically group processes by their basename (--auto-group switch)
[bwmon.git] / runaggregator.py
blob60dbd0210c2a74bf28f4f6535e0bbd21394933e9
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
4 from __future__ import absolute_import
6 import os
7 import sys
8 from optparse import OptionParser
9 import ConfigParser
11 sys.path.insert(0, os.path.dirname(__file__) or '.')
13 if __name__ == '__main__':
14 from bwmon import aggregator
15 from bwmon import monitor
16 from bwmon import pipe
18 parser = OptionParser()
19 parser.add_option('--app-config', dest='appconfig', type='string', action='store', default=None, help='set the file from which the app-grouping information is read')
20 parser.add_option('--auto-group', dest='autogroup', action='store_true', default=False, help='automatically group processes by their apllication basename')
21 (options, args) = parser.parse_args()
24 agg = aggregator.Aggregator()
26 # System monitor (connection tracker)
27 agg.add_monitor(monitor.Monitor())
29 if options.appconfig:
30 config = ConfigParser.ConfigParser()
31 config.read(options.appconfig)
32 for app in config.sections():
33 agg.set_app_config(app, [o[1] for o in config.items(app)])
35 agg.auto_group = options.autogroup
37 # Pipe monitors (port based)
38 pipes = []
39 pipes.append(pipe.Pipe(2222, 'khan.thpinfo.com', 22))
41 for p in pipes:
42 p.start()
43 agg.add_monitor(pipe.PipeMonitor(p))
45 try:
46 agg.run()
47 except KeyboardInterrupt:
48 print 'Please wait...'
49 for p in pipes:
50 p.close()