You've already forked postgres_exporter
mirror of
https://github.com/prometheus-community/postgres_exporter.git
synced 2025-11-04 18:51:42 +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,
|
count(*) AS count,
|
||||||
MAX(EXTRACT(EPOCH FROM now() - xact_start))::float AS max_tx_duration
|
MAX(EXTRACT(EPOCH FROM now() - xact_start))::float AS max_tx_duration
|
||||||
FROM pg_stat_activity
|
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
|
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
|
ON tmp.state = tmp2.state AND pg_database.datname = tmp2.datname
|
||||||
`,
|
`,
|
||||||
@@ -156,7 +157,9 @@ var queryOverrides = map[string][]OverrideQuery{
|
|||||||
application_name,
|
application_name,
|
||||||
COALESCE(count(*),0) AS count,
|
COALESCE(count(*),0) AS count,
|
||||||
COALESCE(MAX(EXTRACT(EPOCH FROM now() - xact_start))::float,0) AS max_tx_duration
|
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
|
FROM pg_catalog.pg_stat_activity
|
||||||
WHERE state IS DISTINCT FROM 'idle'
|
WHERE state IS DISTINCT FROM 'idle'
|
||||||
AND query NOT LIKE 'autovacuum:%'
|
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
|
COUNT(*) AS process_idle_seconds_count
|
||||||
FROM pg_stat_activity
|
FROM pg_stat_activity
|
||||||
WHERE state ~ '^idle'
|
WHERE state ~ '^idle'
|
||||||
|
AND pid <> pg_backend_pid();
|
||||||
GROUP BY state, application_name
|
GROUP BY state, application_name
|
||||||
),
|
),
|
||||||
buckets AS (
|
buckets AS (
|
||||||
@@ -72,6 +73,7 @@ func (PGProcessIdleCollector) Update(ctx context.Context, instance *instance, ch
|
|||||||
FROM
|
FROM
|
||||||
pg_stat_activity,
|
pg_stat_activity,
|
||||||
UNNEST(ARRAY[1, 2, 5, 15, 30, 60, 90, 120, 300]) AS le
|
UNNEST(ARRAY[1, 2, 5, 15, 30, 60, 90, 120, 300]) AS le
|
||||||
|
WHERE pid <> pg_backend_pid()
|
||||||
GROUP BY state, application_name, le
|
GROUP BY state, application_name, le
|
||||||
ORDER BY state, application_name, le
|
ORDER BY state, application_name, le
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user