Skip to main content

Munin plugins for Zope/Plone.

Project description


This package was originally started as redturtle.munin by RedTurtle Technology. From 1.1a1 we have move development to munin.zope leaving some free place for other munin plugins.


This package provides munin plugins for monitoring various aspects of a Zope instance.

It uses gocept.munin for plugin registration. Please refer to its documentation if you want to write new plugins.

Bits of the code is based on plugins found at munin exchange (many thanks to Gaute Amundsen and Arthur Lutz).


Currently there are 4 plugins available:

  • “zopethreads” - reports free Zope threads

  • “zopecache” - reports database cache parameters

  • “zodbactivity” - reports ZODB activity

  • “zopememory” - reports Zope memory usage (only works on Linux)

How to use it

  • First include the package in your buildout instance slot:

    eggs =
    zcml =
  • If you use z3c.autoinclude and plone (default from Plone 3.3.x), you need only eggs stuff:

    eggs =
  • To create the pluging helper script you’ll also need to include the following, additional section and extend your parts definition:

    parts =
    recipe = zc.recipe.egg
    eggs = munin.zope
    arguments = http_address='${instance:http-address}', user='${instance:user}'

    The arguments option is used to pass configuration values to the generated helper script, which is then used as the actual munin plugin (see below). Any settings for ip-address, http-address, port-base and user given in the instance section should be repeated here, separated by commas.

    Please be aware, that the variable names use underscores instead of dashes here — the following list shows all supported settings and their respective default values:

    • ip_address=’<ip-address>’ [‘localhost’]

    • http_address=<http-address> [8080]

    • port_base=<port-base> [0]

    • user=<user-credentials> [n.a.]

    Either literal values or references to the instance part can be used here, i.e. “http_address=’${instance:http-address}’, user=’${instance:user}’”. Please note that the resulting line will be verbosely copied into the generated bin/munin script, so the extra quoting is required.

  • When monitoring more than one Zope instance, i.e. in a ZEO setup, separate helper scripts need to be generated. In order to do so the scripts option of zc.recipe.egg can be used like so:

    parts =
    recipe = zc.recipe.egg
    eggs = munin.zope
    scripts = munin=munin1
    arguments = http_address='${instance1:http-address}', user='${instance1:user}'
    recipe = zc.recipe.egg
    eggs = munin.zope
    scripts = munin=munin2
    arguments = http_address='${instance2:http-address}', user='${instance2:user}'

    The necessary symlinks can then be created with each of the scripts in turn (see below). Please note, that in this case you should explicitly provide at least a differing prefix argument.

  • Now you should be able to call the plugins as follow:


    Where zopethreads is you plugin name.

  • Next you need to make symlinks from the helper script inside your buildout’s bin/ to the munin plugin directory. The helper script itself can assist you with this:

    $ bin/munin install /opt/munin/etc/plugins [<prefix>] [<suffix>]

    This will install the necessary symlinks in the given directory using either the provided prefix and suffix or else the hostname and current directory to assemble their names (see below).

    Alternatively, you may also install the desired symlinks yourself:

    $ cd /opt/munin/etc/plugins
    $ ln -s ~/zope/bin/munin company_zodbactivity_site1

    Here /opt/munin/etc/plugins is your munin directory, ~/zope/ is the root directory of your buildout, zodb_activity the name of the plugin you want to enable, company a placeholder for an arbitrary prefix and site1 the name which will be shown in munin.

  • Finally configure the plugin in munin (this step can be skipped if you have correctly set up the arguments option as described in step 2 above):

    $ cd /opt/munin/etc/plugin-conf.d/
    $ vi munin.zope.conf
    ... [company_*_site1]
    ... env.AUTH myuser:myuser
    ... env.URL http://localhost:8080/@@munin.zope.plugins/%s

    Here myuser:myuser are your Zope user credentials and localhost:8080 your site url. Please check munin for more information about plugin configuration.

Multiple zodb storage

If you have multiple zodb storage, you can manage it adding filestorage parameter to the scripts using initFilestorages helper function, like so:

recipe = zc.recipe.egg
eggs = munin.zope
initialization =
    from munin.zope.plugins import initFilestorages
    initFilestorages(['catalog', 'other'])

Or whith c.r.filestorage:

recipe = collective.recipe.filestorage
parts =

recipe = zc.recipe.egg
eggs = munin.zope
initialization =
    from munin.zope.plugins import initFilestorages
arguments = http_address='${instance:http-address}', user='${instance:user}'


For security reasons the views requires the View management screens permission…

… or you can use a shared secret on the request, you must configure the shared key on zope.conf adding a stanza like:

<product-config munin.zope>
    secret yoursecrethere

On your buildout instance slot:

zope-conf-additional +=
    <product-config munin.zope>
        secret yoursecrethere

So you can make a request without authentication, using the secret, like:


You can also pass in the secret in the munin helper script:

recipe = zc.recipe.egg
eggs = munin.zope
scripts = munin=munin3
arguments = http_address='${instance2:http-address}', secret='mylittlesecret'

Please note that, for zopethreads, you need to use the secret approach.




2.1 (2014-09-17)

  • Added helper function initFilestorages for manage multiple zodb storages (zodbactivity, zopecache plugins) [mauro]

2.0 (2013-02-05)

  • Fix zopethreads count, and make it not skew its own count of free threads. Bumping version, as zopethreads is no longer accessible through authenticated access, only through “secret” configuration. [leorochael]

1.3.3 (2012-12-17)

  • fix totalthread for zeo client/server setup [mauro]

1.3.2 (2012-08-07)

  • Allow passing the secret in the bin/munin script as well [fredvd]

  • Added testrunner for Plone 4.2 [fredvd]

  • updated for distribute compat. [fredvd]

  • Manage multiple filestorage (zodbactvity, zopecache plugins) [mauro]

1.3.1 (2012-03-15)

  • Fixed egg build: was missing ZCML & docs [mitchellrj]

1.3 (2012-03-08)

  • z3c.autoinclude with plone target [mamico]

  • Make use of shared secret for authentication [mamico]

1.2 - 2011/04/28

  • Remove threadframe dependency on python >= 2.5 [amleczko]

1.1 - 2010/02/25

  • Change restrictedTraverse to unrestrictedTraverse in data fetching. [amleczko]

1.1a1 - 2009/08/13

  • Change the package name to munin.zope [amleczko]

1.0a2 - 2009/07/27

  • Fix dimension for memory usage plugin. [witsch]

  • Add info about monitoring more than one instance, e.g. a ZEO setup. [witsch]

  • Allow overriding the default prefix/suffix when setting up plugin links. [witsch]

1.0a1 - 2009/07/17

  • Add script option to automatically setup symlinks for all available plugins in the munin plugin directory. [witsch]

  • Add plugin to track zope’s memory usage (only available on Linux). [witsch]

  • Add logging of slow plugin execution as a safety net. [witsch]

  • Allow setting of necessary configuration values directly in buildout. [witsch]

  • Refactor and try to simplify things. [witsch]

0.0.3 - 2009/03/30

  • Add documentation. [amleczko]

  • Refactor plugin registration. [amleczko]

0.0.2 - 2009/03/26

  • Small refactoring. [amleczko]

0.0.1 - 2009/03/24

  • Initial release. [amleczko]

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (22.5 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page