1
0
mirror of https://github.com/prometheus-community/postgres_exporter.git synced 2025-11-01 20:11:07 +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:
Kaarel Moppel
2025-08-26 04:05:25 +03:00
committed by GitHub
parent cb0bac60e1
commit 198454cc9e
3 changed files with 8 additions and 2 deletions

View File

@@ -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
`,
},
},

View File

@@ -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();
`
)

View File

@@ -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
)