From cd98cf7c33194a1e7b84b54b70f4af52d4670a30 Mon Sep 17 00:00:00 2001 From: Joe Adams Date: Thu, 15 Jul 2021 21:51:25 -0400 Subject: [PATCH 1/2] Add a warning for pg_stat_statements This metric can be very expensive to store in prometheus and has the potential to create an unreasonably large cardinality set of metrics so warn the user. Signed-off-by: Joe Adams --- queries.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/queries.yaml b/queries.yaml index 35b75431..d0fd3997 100644 --- a/queries.yaml +++ b/queries.yaml @@ -158,6 +158,7 @@ pg_database: usage: "GAUGE" description: "Disk space used by the database" +# Note that this set of metrics can be very expensive on a busy server as every unique query executed will create an additional time series pg_stat_statements: query: "SELECT t2.rolname, t3.datname, queryid, calls, total_time / 1000 as total_time_seconds, min_time / 1000 as min_time_seconds, max_time / 1000 as max_time_seconds, mean_time / 1000 as mean_time_seconds, stddev_time / 1000 as stddev_time_seconds, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time / 1000 as blk_read_time_seconds, blk_write_time / 1000 as blk_write_time_seconds FROM pg_stat_statements t1 JOIN pg_roles t2 ON (t1.userid=t2.oid) JOIN pg_database t3 ON (t1.dbid=t3.oid) WHERE t2.rolname != 'rdsadmin'" master: true From d9eb99555bf9742fa4ccf1e6120e4bf880084c7c Mon Sep 17 00:00:00 2001 From: Joe Adams Date: Thu, 15 Jul 2021 21:54:39 -0400 Subject: [PATCH 2/2] Adjust comment to WARNING Signed-off-by: Joe Adams --- queries.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/queries.yaml b/queries.yaml index d0fd3997..1102da44 100644 --- a/queries.yaml +++ b/queries.yaml @@ -158,7 +158,7 @@ pg_database: usage: "GAUGE" description: "Disk space used by the database" -# Note that this set of metrics can be very expensive on a busy server as every unique query executed will create an additional time series +# WARNING: This set of metrics can be very expensive on a busy server as every unique query executed will create an additional time series pg_stat_statements: query: "SELECT t2.rolname, t3.datname, queryid, calls, total_time / 1000 as total_time_seconds, min_time / 1000 as min_time_seconds, max_time / 1000 as max_time_seconds, mean_time / 1000 as mean_time_seconds, stddev_time / 1000 as stddev_time_seconds, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time / 1000 as blk_read_time_seconds, blk_write_time / 1000 as blk_write_time_seconds FROM pg_stat_statements t1 JOIN pg_roles t2 ON (t1.userid=t2.oid) JOIN pg_database t3 ON (t1.dbid=t3.oid) WHERE t2.rolname != 'rdsadmin'" master: true