Work around munin bug caused by names that start with a number
[invirt/packages/xvm-munin-config.git] / master / usr / share / xvm-munin-master-config / plugins / postgres_connections
1 #!/usr/bin/perl -w
2 # -*- perl -*-
3
4
5 use strict;
6 use DBI;
7
8 my $dbhost = $ENV{'dbhost'} || '';
9 my $dbport = $ENV{'dbport'} || '';
10 my $dbname = $ENV{'dbname'} || 'template1';
11 my $dbuser = $ENV{'dbuser'} || 'postgres';
12
13 my $Con = "DBI:Pg:dbname=$dbname";
14 $Con .= ";host=$dbhost" if $dbhost;
15 $Con .= ";port=$dbport" if $dbport;
16 my $Dbh = DBI->connect ($Con, $dbuser,'',{RaiseError =>1}) || 
17     die "Unable to access Database $dbname on host $dbhost as user $dbuser.\nError returned was: ". $DBI::errstr;
18
19 if ($ARGV[0] && $ARGV[0] eq 'config') {
20     my $sql_max = "SHOW max_connections;";
21     my $sth_max = $Dbh->prepare($sql_max);
22     $sth_max->execute();
23     my ($max_conn) = $sth_max->fetchrow();
24     my $warning = int ($max_conn * 0.7);
25     my $critical = int ($max_conn * 0.8);
26     print <<EOF;
27 graph_title Postgres active connections
28 graph_args -l 0 --base 1000
29 graph_vlabel Active connections
30 graph_category Postgresql
31 graph_info Shows active Postgresql connections
32 connections.label Active connections
33 connections.info Active connections
34 connections.type GAUGE
35 connections.warning $warning
36 connections.critical $critical
37 EOF
38 } else {
39     my $sql_curr = "SELECT COUNT (*) FROM pg_stat_activity;";
40     my $sth_curr = $Dbh->prepare($sql_curr);
41     $sth_curr->execute();
42     my ($curr_conn) = $sth_curr->fetchrow();
43     print "connections.value $curr_conn\n";
44 }