bin/pvl.rrd-graph
author Tero Marttila <terom@paivola.fi>
Sat, 21 Dec 2013 22:57:44 +0200
changeset 329 b3778c190aa5
parent 156 999ae3e9fdec
permissions -rwxr-xr-x
version 0..0:

pvl.rrd: api.report()
pvl.wlan-syslog: track openwrt hostapd syslog wlan sta activity
pvl.verkko.wlan: basic Table view
pvl.dns-serial
pvl.dns-zone
pvl.dhcp.config: nested blocks
pvl.hosts-import: import hosts from dns/dhcp
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235
pvl.hosts-dhcp: generate dhcp hosts conf
143
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#!/usr/bin/env python
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
"""
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
    pvl.rrd graph output
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
"""
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
__version__ = '0.1'
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
import pvl.args
156
999ae3e9fdec pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents: 143
diff changeset
    10
import pvl.rrd.args
143
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
import pvl.rrd.graph
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
import os.path
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
import logging, optparse
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
log = logging.getLogger('main')
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
def parse_options (argv) :
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
    """
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
        Parse command-line arguments.
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
    """
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
    prog = argv[0]
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
    parser = optparse.OptionParser(
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
            prog        = prog,
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
            usage       = '%prog: [options]',
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
            version     = __version__,
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
            # module docstring
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
            description = __doc__,
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
    )
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
    
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
    # options
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
    parser.add_option_group(pvl.args.parser(parser))
156
999ae3e9fdec pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents: 143
diff changeset
    37
    parser.add_option_group(pvl.rrd.args.parser(parser))
143
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
    parser.add_option('--style',        metavar='STYLE',        default='detail',
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
            help="overview/detail")
156
999ae3e9fdec pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents: 143
diff changeset
    41
143
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
    parser.add_option('--interval',     metavar='INTERVAL',     default='daily',
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
            help="daily/weekly/yearly")
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
    # parse
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
    options, args = parser.parse_args(argv[1:])
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
    
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
    # apply
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
    pvl.args.apply(options, prog)
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
    return options, args
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
156
999ae3e9fdec pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents: 143
diff changeset
    53
def graph (options, rrds, rrd) :
143
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
    """
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
        Graph given rrd.
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
    """
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
156
999ae3e9fdec pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents: 143
diff changeset
    58
143
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
    # out
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
    path, ext = os.path.splitext(rrd)
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
    ext = options.graph
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
    out = path + ext
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
    
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
    # graph
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
    log.info("%s -> %s", rrd, out)
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
    
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
    pvl.rrd.graph.collectd_ifoctets(options.style, options.interval, "Test", rrd, out)
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
def main (argv) :
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
    """
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
        Usage: [options] rrd
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
    """
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
    options, args = parse_options(argv)
156
999ae3e9fdec pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents: 143
diff changeset
    75
999ae3e9fdec pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents: 143
diff changeset
    76
    # RRDDatabase
999ae3e9fdec pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents: 143
diff changeset
    77
    rrds = pvl.rrd.args.apply(options)
143
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
    
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
    for rrd in args :
156
999ae3e9fdec pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents: 143
diff changeset
    80
        graph(options, rrds, rrd)
143
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    82
    # done
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    83
    log.info("Exiting...")
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
    return 0
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86
if __name__ == '__main__':
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    87
    import sys
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    88
fb48ba17ae3e pvl.rrd: copy+update from old rrdweb
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    89
    sys.exit(main(sys.argv))