Skip to content

Commit 4b36248

Browse files
authored
database_observability: add database exclude list for Postgres (#4819)
1 parent a42f386 commit 4b36248

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ v1.12.0-rc.0
4848
- enable `explain_plans` collector by default (@rgeyer)
4949
- safely generate server_id when UDP socket used for database connection (@matthewnolf)
5050
- add table registry and include "validated" in parsed table name logs (@fridgepoet)
51+
- add database exclusion list for Postgres schema_details collector (@fridgepoet)
5152

5253
- Add `otelcol.exporter.googlecloudpubsub` community component to export metrics, traces, and logs to Google Cloud Pub/Sub topic. (@eraac)
5354

internal/component/database_observability/postgres/collector/schema_details.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,15 @@ const (
2929
)
3030

3131
const (
32+
excludedDatabases = `('azure_maintenance')`
33+
3234
// selectAllDatabases makes use of the initial DB connection to discover other databases on the same Postgres instance
3335
selectAllDatabases = `
34-
SELECT datname
35-
FROM pg_database
36+
SELECT datname
37+
FROM pg_database
3638
WHERE datistemplate = false
37-
AND has_database_privilege(datname, 'CONNECT')`
39+
AND has_database_privilege(datname, 'CONNECT')
40+
AND datname NOT IN ` + excludedDatabases
3841

3942
// selectSchemaNames gets all user-defined schemas, excluding system schemas
4043
selectSchemaNames = `

internal/component/database_observability/postgres/collector/schema_details_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,3 +1706,12 @@ func Test_SchemaDetails_populates_TableRegistry(t *testing.T) {
17061706
}, actual)
17071707
})
17081708
}
1709+
1710+
func Test_Postgres_SchemaDetails_query_excludes_databases(t *testing.T) {
1711+
assert.Equal(t, `
1712+
SELECT datname
1713+
FROM pg_database
1714+
WHERE datistemplate = false
1715+
AND has_database_privilege(datname, 'CONNECT')
1716+
AND datname NOT IN ('azure_maintenance')`, selectAllDatabases)
1717+
}

0 commit comments

Comments
 (0)