Hi all,

after many months and working hours, I finally very happy to comunicate about a new release of munin_plugins. 

This version is the forth major release and it is a very heavy refator of this software. First of all, the sources are available on GitHub (as usual) and on Pypi (only verions >=4). I’m very excited about the last one.

Change log:


  • egg
  • removed symlinks with complex naming 
  • only one sensor for all nginx measuring
  • expandable nginx plugin developing class
  • plone sensors based on psutil (really hard to do)
  • multigraph usage
  • cache a lot

To submit issues, you ca use GitHub issue tracker.




Hi all,

after some test in a production enviroment, I released a stable version.


Major changes are related generate.py script:

  • moved env variables from generate.py in etc/env.py
  • changed command line options
  • added check to avoid munin_node config replication
  • added check for existing symlinks



As previous, you need python2.7.


Take a look at INSTALL file.


You can download here, on github.



Hi All,

In these days I studied about HA of Plone. Some years ago I tested the same things using Oracle in an Enterprise context, so with licenced support of Oracle. Oracle has a client called instantclient, who hide any problem about the presence of more than a dbserver, so relstorage makes no difference between a local db and a cluster. So it was very easy.

With Postgres there’s pgpool, a tool to make the same thing, but I want to take some time to study repmgr, some kind of wrapper around PostgreSQL Hot standby.

The configuration is not so complicated but a little bit long and I don’t want to repeat every step, so: this is the guide about configure repmgr and postgresql:


About this guide, I have to say a couple of words:

  • promote_command.sh is never shown but it may be something like this:
repmgr -f /etc/repmgr/repmgr.conf --verbose standby promote
/etc/init.d/postgresql restart
  • repmgr try to use pg_ctl: in debian this is not necessary available, so after clone command or promote (see before) is necessary to restart postgres by hand

If everything goes well, we now have 2 dbservers in Master/Slave mode using Streaming Replication. Well a few steps are necessary:

  • take a buildout for Plone: a new one or your favorite
  • locate the instance or the instances (sections with recipe plone.recipe.zope2instance)
  • add as usual, the relstorage support (be sure you get at least 1.5.1)
  • remove from DSN relstorage option, ‘host=…’
  • add option replica-conf (see relstorage documentation)
  • write a file in the root of buildout with the list of dbase ips, one for line
  • Buildout and enjoy

To get a really HA, you have to build at least two dbservers and two plone servers with public ip and a round robin DNS (are always in HA) to manage two or more ips for the same domain. To avoid the single point of failure is necessary to get a real HA.


Hi all,

finally, after two weeks of debug, here we are with the first release of my munin plugins, nginx version.


  • various fixes about parsing
  • lock on cache files
  • sensor for monit downtime
  • moved bots from a single sensor to multiple sensors (one for file)


A python2.7 at least. Be sure to have python2.7 in system path for every user.


Take a look at INSTALL file.


Hi All,

on github I released a new version of my munin plugins.


  • added Bots sensor
  • refactoring code
  • moved from Apache to Nginx
  • added etc folder for configuration
  • added cache for shared informations (bots only in this release)

Here is the repo, for download and/or issues.


It requires Nginx as webserver, with custom access log, see README file for details.

Requires Python 2.7 because I use collections.Counter, read this if you don’t know.


Download the zip or make a clone using git. Modify etc/env.py to set file locations: by default I assume a self compiled nginx in /opt/nginx, but you can modify as you want.

After configuration, you can use generate.py to link plugins in munin/plugins folder.

Remember to restart munin-node.

Known bugs

  • generate.py append [runner_*] config every time you run it, so it will be duplicated


Nginx is the actual choice, talking about webserver. It is easy to configure and can serve high levels of parallel requests. Apache, long loved webserver, is losing fan… until now.

Google develop a very interesting module called pagespeed who transform a site in a optimized site using PageSpeed,analyzer. A simple example would be images: every time you analyze a site, PageSpeed shown you how your images are bad, fat a bandwidth eager. This module perform the optimization on the image and keep it a local cache to serve any request.

The site you have to read is https://developers.google.com/speed/pagespeed/mod.

Setup is very easy, use apt, rpm or what_you_like toi install Apache. After that, you can download mod_pagespeed directly from the previous url, and install it.

Now you are ready to fight: start your backend, start apache and test it. Usually I user pagespeed plugin for firefox, because the one for chromium doesn’t works.

If you use Plone as backend, many problems are easy fixed installing plone.app.caching. Strong caching for static resources and no-cache for else may be a good way. Remember to enable gzip compression. Forget all about cache invalidation, it doesn’t works and I’m able to explain why. Contact me if you want to know.

After setting content expiration, the big problem is optimize all images: this link show you how you ca do that cut & pasting few rows in apache cfg file.

My test was made using a production website that obtain 84/100 with pagespeed using varnish as frontend and Plone as backend. I installed apache instead varnish and applied the image optimization: the ne score is 93/100.

Nice fly for 15 working minutes.


Posted: 20/07/2012 in Uncategorized
Tags: ,

Hi All,

this is my Google+ page.