2 # -*- coding: utf-8 -*-
4 from __future__
import absolute_import
8 from optparse
import OptionParser
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()
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
):
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
54 except KeyboardInterrupt:
55 print 'Please wait...'