pg_stat_activity und Long Running Statement

Hallo,

ich versuche lang laufende Statements per Nagios zu überwachen:

SELECT max(now() - xact_start) AS duration, (max(now() - xact_start) > ‘30 seconds’::interval) AS warning, (max(now() - xact_start) > ‘60 seconds’::interval) AS critical, count(*) AS connections
FROM pg_catalog.pg_stat_activity

Die Rechte reichen für “pg_stat_activity” nicht aus.
Gibt es eine elegante Lösung (eigene View, Function)? Einfach die Privilegien anheben ist nicht gerade empfehlenswert.

Gruß
Holger

Okay, so habe ich es jetzt definiert.
Das geht auch mit “SELECT * FROM dba.fct_connections()”.



– Function: dba.fct_connections()

– DROP FUNCTION dba.fct_connections();

CREATE OR REPLACE FUNCTION dba.fct_connections(OUT duration double precision, OUT connections bigint)
RETURNS record AS
$BODY$SELECT EXTRACT(EPOCH FROM max(now() - xact_start)) AS duration, count(*) AS connections
FROM pg_catalog.pg_stat_activity$BODY$
LANGUAGE sql VOLATILE SECURITY DEFINER
COST 100;
ALTER FUNCTION dba.fct_connections() OWNER TO postgres;