MuninPgPlugins
Postgresql plugins are in the core of Munin 1.4 !
The current muninpgplugins are
not actively maintain.
MuninPgPlugins are a set of plugins to collect statistic data from a PostgreSQL server.
They are mainly used to monitor by database, so you need to install them for every database you want to monitor.
All the plugins are in perl and need the DBD::Pg Perl module.
Plugins Descriptions
Every plugins are self documented and can be used alone.
Munin.conf options
Munin let you do some things with data grabbed by the plugins.
For example you can agreagte, stack and do some basic stuff.
Or remove some data from graph when they are useless and noisy.
Check the file pg.munin.conf for examples.
pg__connections
This plugin output the number of idle, waiting and active connections.
pg__db_size
This plugin output the database size as provided by pg_database_size('my_db');
pg__locks
This plugin output all possible locks from postgresql.
pg__stat_database
This plugin output all data from this view for specified database.
pg__stat_tables
This plugin take every column in pg_stat_*_tables (except *vacuum and *analyze). The data is then usable for agregate graph in munin.conf (like ratio).
Special parameter (statscope) to specify if pg_stat_all_tables or pg_stat_user_tables or pg_stat_sys_tables is used (user by default).
pg__statio_tables
This plugin take every column in pg_statio_*_tables. The data is then usable for agregate graph in munin.conf (like ratio).
Special parameter (statscope) to specify if pg_statio_all_tables or pg_statio_user_tables or pg_statio_sys_tables is used (user by default).
pg__stat_bgwriter
This plugin take every column in pg_stat_bgwriter. The data is then usable for agregate graph in munin.conf (like ratio).
As all databases have the same values in this table, it is unecessary to grab them more than once.
Install
First you'll need the DBD::Pg Perl module.
For example, on Debian, you should have:
sudo aptitude install libdbd-pg-perl
Then just untar the tarball where you want.
$ tar xvzf muninpgplugins-*.tar.gz
$ cd muninpgplugins*
You must also activate Postgresql statistics for most of the plugin to work. See
monitoring
for how to enable this. Specifically, the following lines must
exist in your postgresql.conf:
stats_start_collector = true
stats_block_level = true
Usage
MuninPgPlugins come with a special file to help you install the plugins for your specified database.
$ ./install.sh mydb
This will output the commandlines you have to execute yourself. And look at the last lines, it is the configuration you have to add to munin-node :
sudo ln -s /usr/share/munin/plugins/muninpgplugins/pg__connections /etc/munin/plugins/pg_mydb_connections
sudo ln -s /usr/share/munin/plugins/muninpgplugins/pg__db_size /etc/munin/plugins/pg_mydb_db_size
sudo ln -s /usr/share/munin/plugins/muninpgplugins/pg__locks /etc/munin/plugins/pg_mydb_locks
sudo ln -s /usr/share/munin/plugins/muninpgplugins/pg__stat_bgwriter /etc/munin/plugins/pg_mydb_stat_bgwriter
sudo ln -s /usr/share/munin/plugins/muninpgplugins/pg__stat_database /etc/munin/plugins/pg_mydb_stat_database
sudo ln -s /usr/share/munin/plugins/muninpgplugins/pg__statio_tables /etc/munin/plugins/pg_mydb_statio_tables
sudo ln -s /usr/share/munin/plugins/muninpgplugins/pg__stat_tables /etc/munin/plugins/pg_mydb_stat_tables
# Add this to your plugin-conf.d/munin-node :
cat <<INFO >> /etc/munin/plugin-conf.d/munin-node
[pg_mydb*]
user postgres
env.dbname mydb
INFO
If required, you can give username, password and/or Postgresql server
host through environment variables or via the configuration file :
dbhost
Which database server to use. Defaults to 'localhost'.
dbname
Which database to use. Defaults to template1
dbuser
A Postgresql user account with read permission to the given database. Defaults to 'postgres'. Anyway, Munin must be told which user this plugin should be run as.
dbpass
The corresponding password, if applicable. Default to undef. Remember that pg_hba.conf must be configured accordingly.
The config variables need to be write like this in the configuration file:
[pg_foobase*]
user foouser
env.dbname foobase