add html user manual
[bwmon.git] / runaggregator.py
blob4e6d858aa2a2a62a2558d6e0bfcf135e4a4b4a38
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
17 from bwmon import util
19 parser = OptionParser()
20 parser.add_option('--app-config', dest='appconfig', type='string', action='store', default=None, help='app-grouping configuration file')
21 parser.add_option('--monitor-config', dest='monitorconfig', type='string', action='store', default=None, help='monitor configuration file'),
22 parser.add_option('--notification-config', dest='notificationconfig', type='string', action='store', default=None, help='notification configuration file'),
23 parser.add_option('--auto-group', dest='autogroup', action='store_true', default=False, help='automatically group processes by their apllication basename')
24 (options, args) = parser.parse_args()
27 agg = aggregator.Aggregator()
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 if options.monitorconfig:
36 for mon in util.read_monitor_config(options.monitorconfig):
37 agg.add_monitor(mon)
39 else:
40 # System monitor (connection tracker)
41 agg.add_monitor(monitor.Monitor())
44 if options.notificationconfig:
45 for (re, in_t, out_t, interval, cmd) in util.read_notification_config(options.notificationconfig):
46 agg.add_notification(re, in_t, out_t, interval, cmd)
49 agg.auto_group = options.autogroup
52 try:
53 agg.run()
54 except KeyboardInterrupt:
55 print 'Please wait...'
56 agg.close()