diff --git a/plugins/other/eaccelerator-python b/plugins/other/eaccelerator-python new file mode 100755 index 00000000..8c2da346 --- /dev/null +++ b/plugins/other/eaccelerator-python @@ -0,0 +1,110 @@ +#!/usr/bin/env python +''' +Plugin to monitor performance of eaccelerator module for PHP. + +To use: +1. Copy script to munin plugins folder +2. Symbolically link to eacc_memory and eacc_cached + * eacc_memory shows memory usage + * eacc_cached shows number of scripts cached and discarded +3. Set configuration options in munin config file as follows +[eacc_*] +env.auth_user username +env.auth_pwd password +env_cpanel url_of_stats.php +4. Copy stats.php into the eacc control panel folder and set $user/$pw to match auth_user/auth_pwd + * Ideally, these should be the same values as set in control.php +5. Run `munin-run eacc_memory` and `munin-run eacc_cached` to make sure scripts are running correctly, you should see non-zero values +6. Restart munin-node + +This script's homepage: https://github.com/hermzz/munin-eaccelerator-plugin +eAccelerator homepage: http://eaccelerator.net/ +''' +import sys, os + +command_vars = { + 'memory': ['memorysize', 'memoryallocated'], + 'cached': ['cachedscripts', 'removedscripts'] +} + +config = { + 'memory': + 'graph_title eacceleratory memory usage\n' + + 'graph_info This graph shows memory performance of PHP eaccelerator module\n' + + 'graphs_args -1 0\n' + + 'graph_category php\n' + + + 'memorysize.label total\n' + + 'memorysize.draw AREA\n' + + 'memorysize.min 0\n' + + 'memorysize.info Total memory\n' + + + 'memoryallocated.label allocated\n' + + 'memoryallocated.draw LINE1\n' + + 'memoryallocated.min 0\n' + + 'memoryallocated.info Memory allocated', + 'cached': + 'graph_title eacceleratory cached scripts\n' + + 'graph_info This graph shows how many scripts are cached by PHP eaccelerator module\n' + + 'graphs_args -1 0\n' + + 'graph_category php\n' + + + 'cachedscripts.label cached scripts\n' + + 'cachedscripts.draw LINE1\n' + + 'cachedscripts.min 0\n' + + 'cachedscripts.info Cached scripts\n' + + + 'removedscripts.label removed scripts\n' + + 'removedscripts.draw LINE1\n' + + 'removedscripts.min 0\n' + + 'removedscripts.info Removed scripts' +} + +def print_config(command): + print config[command] + +def get_stats(): + fetcher = httplib2.Http() + if 'auth_user' in os.environ and 'auth_pwd' in os.environ: + fetcher.add_credentials(os.environ['auth_user'], os.environ['auth_pwd']) + resp, content = fetcher.request(os.environ["cpanel"]) + + if resp['status'] != '200': + content = '0 0 0 0' + + bits = content.split(' ') + return {'memorysize': bits[0], 'memoryallocated': bits[1], 'cachedscripts': bits[2], 'removedscripts': bits[3]} + +def print_stats(command): + stats = get_stats() + + for var in command_vars[command]: + print "%s.value %s" % (var, stats[var]) + +if __name__ == "__main__": + try: + import httplib2 + except ImportError: + print "httplib2 not found" + sys.exit(1) + + if os.environ['cpanel'] == '': + print "env.cpanel not defined in munin config" + sys.exit() + + underscore = sys.argv[0].find('_') + + if underscore == -1: + print "Symbolically link this file to eacc_memory or eacc_cached" + sys.exit(1) + else: + command = sys.argv[0][underscore+1:] + + if len(sys.argv) > 1 and sys.argv[1] != '': + if sys.argv[1] == 'config': + print_config(command) + else: + print "Command %s not recognized" % sys.argv[1] + sys.exit(1) + else: + print_stats(command)