#!/usr/bin/env python # # vim:syntax=python # # Plugin to monitor the amount of packages in an approx cache. # # Usage: place in /etc/munin/plugins/ (or link it there using ln -s) # # Parameters understood: # # config (required) # autoconf (optional - used by munin-config) # # Magic markers - optional - used by installation scripts and # munin-config: # # #%# family=manual # #%# capabilities=autoconf # # Now for the real work... 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().iteritems(): print("%s.value %d" % (filetype.lower(), count)) exit()