Design Records
Design records explain why PG Exporter works the way it does. Each article separates the decision, implementation, release, package, deployment, and production-verification gates so an accepted design is never mistaken for a shipped feature.
Use the manuals for current product behavior and the release archive for shipped versions. Use this section for the reasoning, alternatives, invariants, and evidence behind those outcomes.
Turning PostgreSQL CSV Logs into Durable Metrics
The product boundary, durable-state protocol, bounded metric contract, and failure semantics for PostgreSQL CSV log metrics in PG Exporter
Caching pgBackRest Metrics Outside the Scrape Path
Why PG Exporter executes pgBackRest in a bounded background worker and serves an immutable last-good snapshot
The PostgreSQL Observability Product We Chose Not to Build
Why a local-first PostgreSQL incident workbench was explored, then replaced by a much smaller CSV-log metrics feature inside PG Exporter
One Endpoint, Several Sources: The Composite Exporter Contract
How PG Exporter combines PostgreSQL, PgBouncer, Patroni, and cached components without weakening the primary PostgreSQL scrape
Snapshot Histograms Are Gauges, Not Counters
Why PG Exporter rebuilds SQL distributions on every query and exposes their buckets, count, and sum as gauge series
-
Turning PostgreSQL CSV Logs into Durable Metrics
Decision status: Implemented in a development line; not present in main, a tag, or a published package as of 2026-08-28. Decision date: 2026-08-24. Applies to: the default-off PostgreSQL 14+ CSV log collector inside the Composite exporter. …
Decision status: Implemented in a development line; not present in main, a tag, or a published package as of 2026-08-28. Decision date: 2026-08-24. Applies to: the default-off PostgreSQL 14+ CSV log collector inside the Composite exporter. …
-
Caching pgBackRest Metrics Outside the Scrape Path
Decision status: Implemented in a development line; not present in main, a tag, or a published package as of 2026-08-28. Decision date: 2026-08-23. Applies to: the optional --pgbackrest cached component inside the Composite exporter. Release …
Decision status: Implemented in a development line; not present in main, a tag, or a published package as of 2026-08-28. Decision date: 2026-08-23. Applies to: the optional --pgbackrest cached component inside the Composite exporter. Release …
-
The PostgreSQL Observability Product We Chose Not to Build
Decision status: Superseded on 2026-08-24 by the in-process PostgreSQL CSV log metrics decision. Research date: 2026-08-13. What remains valid: CSV framing, rotation, SQLSTATE, privacy, and bounded-cardinality findings. What no longer applies: a new …
Decision status: Superseded on 2026-08-24 by the in-process PostgreSQL CSV log metrics decision. Research date: 2026-08-13. What remains valid: CSV framing, rotation, SQLSTATE, privacy, and bounded-cardinality findings. What no longer applies: a new …
-
One Endpoint, Several Sources: The Composite Exporter Contract
Decision status: Implemented in a development line; not present in main, a tag, or a published package as of 2026-08-28. Decision date: 2026-08-11; extended by cached components on 2026-08-23 and 2026-08-24. Applies to: the optional Composite …
Decision status: Implemented in a development line; not present in main, a tag, or a published package as of 2026-08-28. Decision date: 2026-08-11; extended by cached components on 2026-08-23 and 2026-08-24. Applies to: the optional Composite …
-
Snapshot Histograms Are Gauges, Not Counters
Decision status: Shipped in v1.4.0. Decision date: 2026-07-11; amended on 2026-07-17 before release. Applies to: HISTOGRAM columns and the bundled pg_xact_age collector in PG Exporter v1.4.0 and later. Release boundary: this article describes a …
Decision status: Shipped in v1.4.0. Decision date: 2026-07-11; amended on 2026-07-17 before release. Applies to: HISTOGRAM columns and the bundled pg_xact_age collector in PG Exporter v1.4.0 and later. Release boundary: this article describes a …