check_pgsql - NRPE PostgreSQL check

From TykWiki
Revision as of 01:20, 26 February 2010 by Tykling (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

By default NRPE includes a plugin (you need to enable it in the make config screen when installing net-mgmt/nagios-plugins) to check a PostgreSQL server. Follow the instructions on this page to enable it.

Configuring Nagios

Define a new service on the Nagios server, in /usr/local/etc/nagios/objects/services.cfg:

define service{
        use                             generic-service
        hostgroup_name                  postgresql-servers
        service_description             nrpe_check_pgsql
        check_command                   check_nrpe2!check_pgsql
}

The FreeBSD servers I monitor that has PostgreSQL installed are all members of the hostgroup postgresql-servers.

Configuring NRPE

Add the following line to /usr/local/etc/nrpe.cfg:

command[check_pgsql]=/usr/local/libexec/nagios/check_pgsql -H 10.16.255.65

Replacing 10.16.255.65 with the IP address the PostgreSQL server is listening on.

Remember to restart NRPE after changing the config:

sudo /usr/local/etc/rc.d/nrpe2 restart

Configuring PostgreSQL

The Nagios plugin needs to be able to connect to the database server. Test the plugin by running it from the Nagios server like so:

[tykling@nagios ~]$ /usr/local/libexec/nagios/check_nrpe2 -H dbserver.skabet.cn.dom -c check_pgsql
CRITICAL - no connection to 'template1' (FATAL:  no pg_hba.conf entry for host "10.16.255.65", user "nagios", database "template1", SSL off 
).

The error message from Postgres is pretty clear. I add the following line to the bottom of /usr/local/pgsql/data/pg_hba.conf:

host    template1   nagios      10.16.255.65/32       trust

... and restart Postgres:

sudo /usr/local/etc/rc.d/postgresql restart

Then I go add a nagios user to Postgres, this is done by the system pgsql user like all other Postgres management:

[tykling@dbserver ~]$ sudo su pgsql -c bash
[pgsql@dbserver /usr/home/tykling]$ cd
[pgsql@dbserver ~]$ createuser
Enter name of role to add: nagios
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
[pgsql@dbserver ~]$ exit
[tykling@dbserver ~]$

After doing this, the check works from the Nagios server:

[tykling@nagios ~]$ /usr/local/libexec/nagios/check_nrpe2 -H dbserver.skabet.cn.dom -c check_pgsql
 OK - database template1 (0 sec.)|time=0.000000s;2.000000;8.000000;0.000000
[tykling@nagios ~]$