1 from rrdweb import graph, html |
|
2 |
|
3 # list of targets |
|
4 from targets import targets |
|
5 |
|
6 import os.path, fnmatch |
|
7 |
|
8 rrd_dir = "rrd" |
|
9 img_dir = "img" |
|
10 web_dir = "web" |
|
11 |
|
12 def target_graph (target, style, interval) : |
|
13 # compose paths |
|
14 rrd_path = os.path.join(rrd_dir, target.rrd_name()) |
|
15 out_path = os.path.join(img_dir, style, interval, target.img_name()) |
|
16 |
|
17 # graph |
|
18 graph.mrtg(style, interval, target.title, rrd_path, out_path) |
|
19 |
|
20 |
|
21 def main (targets, filters, style='detail', interval='daily'): |
|
22 if filters : |
|
23 # filter targets |
|
24 targets = [target for target in targets if any(fnmatch.fnmatch(target.name, filter) for filter in filters)] |
|
25 |
|
26 # overview |
|
27 html_fmt = html.Formatter( |
|
28 url_prefix = "/~terom/rrdweb", |
|
29 img_url = "%(prefix)s/img/%(style)s/%(interval)s/%(target)s.png", |
|
30 target_url = "%(prefix)s/web/%(target)s.html", |
|
31 ) |
|
32 |
|
33 # overview page |
|
34 overview_path = os.path.join(web_dir, "index.html") |
|
35 open(overview_path, 'w').write(html_fmt.overview(targets)) |
|
36 |
|
37 for target in targets : |
|
38 print target.name |
|
39 |
|
40 target_graph(target, 'overview', 'daily') |
|
41 |
|
42 for interval in ('daily', 'weekly', 'yearly') : |
|
43 target_graph(target, 'detail', interval) |
|
44 |
|
45 # html |
|
46 html_path = os.path.join(web_dir, target.name + '.html') |
|
47 open(html_path, 'w').write(html_fmt.target(target)) |
|
48 |
|
49 if __name__ == '__main__' : |
|
50 import sys |
|
51 |
|
52 main(targets, sys.argv[1:]) |
|
53 |
|