You've already forked postgres_exporter
							
							
				mirror of
				https://github.com/prometheus-community/postgres_exporter.git
				synced 2025-11-03 07:53:12 +03:00 
			
		
		
		
	Exclude the metrics fetching session's data from pg_stat_activity (#1185)
To reduce the observer effect, filter out pg_stat_activity rows of the postgres_exporter session from all SA queries, based on pid / procpid. A bit annoying to see idling DBs showing pg_stat_activity_count "active" count of 1 Signed-off-by: Kaarel Moppel <kaarel.moppel@gmail.com>
This commit is contained in:
		@@ -142,6 +142,7 @@ var queryOverrides = map[string][]OverrideQuery{
 | 
			
		||||
					count(*) AS count,
 | 
			
		||||
					MAX(EXTRACT(EPOCH FROM now() - xact_start))::float AS max_tx_duration
 | 
			
		||||
				FROM pg_stat_activity
 | 
			
		||||
				WHERE pid <> pg_backend_pid()
 | 
			
		||||
				GROUP BY datname,state,usename,application_name,backend_type,wait_event_type,wait_event) AS tmp2
 | 
			
		||||
				ON tmp.state = tmp2.state AND pg_database.datname = tmp2.datname
 | 
			
		||||
			`,
 | 
			
		||||
@@ -156,7 +157,9 @@ var queryOverrides = map[string][]OverrideQuery{
 | 
			
		||||
				application_name,
 | 
			
		||||
				COALESCE(count(*),0) AS count,
 | 
			
		||||
				COALESCE(MAX(EXTRACT(EPOCH FROM now() - xact_start))::float,0) AS max_tx_duration
 | 
			
		||||
			FROM pg_stat_activity GROUP BY datname,usename,application_name
 | 
			
		||||
			FROM pg_stat_activity
 | 
			
		||||
			WHERE procpid <> pg_backend_pid()
 | 
			
		||||
			GROUP BY datname,usename,application_name
 | 
			
		||||
			`,
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,8 @@ var (
 | 
			
		||||
FROM pg_catalog.pg_stat_activity
 | 
			
		||||
WHERE state IS DISTINCT FROM 'idle'
 | 
			
		||||
AND query NOT LIKE 'autovacuum:%'
 | 
			
		||||
AND pg_stat_activity.xact_start IS NOT NULL;
 | 
			
		||||
AND pg_stat_activity.xact_start IS NOT NULL
 | 
			
		||||
AND pid <> pg_backend_pid();
 | 
			
		||||
	`
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -56,6 +56,7 @@ func (PGProcessIdleCollector) Update(ctx context.Context, instance *instance, ch
 | 
			
		||||
				COUNT(*) AS process_idle_seconds_count
 | 
			
		||||
				FROM pg_stat_activity
 | 
			
		||||
				WHERE state ~ '^idle'
 | 
			
		||||
				AND pid <> pg_backend_pid();
 | 
			
		||||
				GROUP BY state, application_name
 | 
			
		||||
			),
 | 
			
		||||
			buckets AS (
 | 
			
		||||
@@ -72,6 +73,7 @@ func (PGProcessIdleCollector) Update(ctx context.Context, instance *instance, ch
 | 
			
		||||
				FROM
 | 
			
		||||
				pg_stat_activity,
 | 
			
		||||
				UNNEST(ARRAY[1, 2, 5, 15, 30, 60, 90, 120, 300]) AS le
 | 
			
		||||
				WHERE pid <> pg_backend_pid()
 | 
			
		||||
				GROUP BY state, application_name, le
 | 
			
		||||
				ORDER BY state, application_name, le
 | 
			
		||||
			)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user