Repository
Munin (contrib)
Last change
2020-11-26
Graph Categories
Family
manual
Capabilities
Keywords
Language
Python (3.x)
Authors

approx

Name

approx - monitor the amount of packages in an approx cache

Configuration

Usage: place in /etc/munin/plugins/ (or link it there using ln -s)

Parameters understood:

config   (required)
autoconf (optional - used by munin-config)

Authors

Copyright 2008 Morten Siebuhr unknown@munin-monitoring.org

Magic Markers

#%# family=manual
#%# capabilities=autoconf
#!/usr/bin/env python3
"""
=head1 NAME

approx - monitor the amount of packages in an approx cache


=head1 CONFIGURATION

Usage: place in /etc/munin/plugins/ (or link it there using ln -s)

Parameters understood:

 config   (required)
 autoconf (optional - used by munin-config)


=head1 AUTHORS

Copyright 2008 Morten Siebuhr <unknown@munin-monitoring.org>


=head1 MAGIC MARKERS

 #%# family=manual
 #%# capabilities=autoconf

=cut
"""

from os.path import walk, exists, isfile, join
from sys import argv, exit


def get_file_types():
    """Returns an array of filetype => count."""
    out = {}

    def visitor(arg, dirname, names):
        for filename in names:
            if not isfile(join(dirname, filename)):
                continue
            ext = filename.split(".")[-1].lower()
            out[ext] = out.get(ext, 0) + 1

    walk('/var/cache/approx/', visitor, None)
    return out


if len(argv) > 1:

    # Autoconfiguration
    if argv[1] == "autoconf":
        # Test if we can find a approx cache
        if exists('/var/cache/approx'):
            print("yes")
        else:
            print("no ('/var/cache/approx' not found)")
        exit()

    elif argv[1] == "config":
        print("graph_title Approx cache")
        print("graph yes")
        print("graph_category loadbalancer")
        print("graph_info Statistics from the Approx cache.")
        for filetype in get_file_types().keys():
            print("%s.label %s" % (filetype.lower(), filetype))
        exit()

for filetype, count in get_file_types().items():
    print("%s.value %d" % (filetype.lower(), count))

exit()