Skip to content

Commit 416cda7

Browse files
committed
Capture usename and application_name for pg_stat_activity
It is necessary to be able to exclude backups from long-running transaction alerts, as they are to be expected. With the current pg_stat_activity metric there is no ability to filter out specific users or application names. Resolves prometheus-community#668
1 parent 591c019 commit 416cda7

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

cmd/postgres_exporter/postgres_exporter.go

+2
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,8 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
284284
map[string]ColumnMapping{
285285
"datname": {LABEL, "Name of this database", nil, nil},
286286
"state": {LABEL, "connection state", nil, semver.MustParseRange(">=9.2.0")},
287+
"usename": {LABEL, "connection usename", nil, nil},
288+
"application_name": {LABEL, "connection application_name", nil, nil},
287289
"count": {GAUGE, "number of connections in this state", nil, nil},
288290
"max_tx_duration": {GAUGE, "max duration in seconds any active transaction has been running", nil, nil},
289291
},

cmd/postgres_exporter/queries.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ var queryOverrides = map[string][]OverrideQuery{
137137
SELECT
138138
pg_database.datname,
139139
tmp.state,
140+
tmp2.usename,
141+
tmp2.application_name,
140142
COALESCE(count,0) as count,
141143
COALESCE(max_tx_duration,0) as max_tx_duration
142144
FROM
@@ -153,9 +155,11 @@ var queryOverrides = map[string][]OverrideQuery{
153155
SELECT
154156
datname,
155157
state,
158+
usename,
159+
application_name,
156160
count(*) AS count,
157161
MAX(EXTRACT(EPOCH FROM now() - xact_start))::float AS max_tx_duration
158-
FROM pg_stat_activity GROUP BY datname,state) AS tmp2
162+
FROM pg_stat_activity GROUP BY datname,state,usename,application_name) AS tmp2
159163
ON tmp.state = tmp2.state AND pg_database.datname = tmp2.datname
160164
`,
161165
},
@@ -165,9 +169,11 @@ var queryOverrides = map[string][]OverrideQuery{
165169
SELECT
166170
datname,
167171
'unknown' AS state,
172+
usename,
173+
application_name,
168174
COALESCE(count(*),0) AS count,
169175
COALESCE(MAX(EXTRACT(EPOCH FROM now() - xact_start))::float,0) AS max_tx_duration
170-
FROM pg_stat_activity GROUP BY datname
176+
FROM pg_stat_activity GROUP BY datname,usename,application_name
171177
`,
172178
},
173179
},

0 commit comments

Comments
 (0)