Ruohang Feng
Ruohang Feng (@Vonng) writes PG Exporter and Pigsty, the PostgreSQL distribution it was built for.
PG Exporter started from a practical complaint: the metric definitions that matter to a database engineer were locked inside an exporter binary, where the people who understand the database could neither read them nor change them. Moving them into YAML and SQL made the metric contract reviewable, and made version, role, and extension differences something the exporter decides at runtime instead of something a release note apologises for.
- pigsty.io — the PostgreSQL distribution this exporter ships with
- @Vonng on GitHub — the repositories behind these projects
- vonng.com — long-form writing
PG Exporter v1.4.1
Subscription count and label validation fixes; RPM rename
PG Exporter v1.4.0
Snapshot histograms, pg_xact_age collector, HTTP hardening
PG Exporter v1.3.0
PostgreSQL 19 support, new PG19 collectors and branches
PG Exporter v1.2.2
Routine Go 1.26.2 refresh, no functional changes
PG Exporter v1.2.1
Config style cleanup, Go 1.26.1 refresh
PG Exporter v1.2.0
Hot reload, non-blocking startup, PG9.x legacy support
PG Exporter v1.1.2
fix pg_timeline conf issue, build with latest deps
PG Exporter v1.1.1
New pg_timeline collector, pg_sub_16 branch, bug fixes
PG Exporter v1.1.0
Update default metrics collectors, bump to go 1.25.5
PG Exporter v1.0.3
Routine update on 1.25.4, fix unsupported libpq env
PG Exporter v1.0.2
Build for more os arch with goreleaser
PG Exporter v1.0.1
Docker Hub images, Go 1.24.5, disable pg_tsdb_hypertable
PG Exporter v1.0.0
PostgreSQL 18 support, new WAL/checkpointer/I/O metrics
PG Exporter v0.9.0
TimescaleDB, Citus, pg_wait_sampling collectors
PG Exporter v0.8.1
Dependencies update, docker image tags
PG Exporter v0.8.0
PgBouncer 1.24 support, Go 1.24, logging refactor
PG Exporter v0.7.1
Routine update, configuration as Reader support
PG Exporter v0.7.0
PostgreSQL 17 support, predicate queries feature
PG Exporter v0.6.1
Security dependency update plus connection-timeout and configuration-directory fixes
PG Exporter v0.6.0
PostgreSQL 16 support, ARM64 packages, security fixes
PG Exporter v0.5.0
RPM/DEB builds, column scaling, metrics enhancements
PG Exporter v0.4.1
Collector updates, connect-timeout parameter
PG Exporter v0.4.0
PostgreSQL 14 support, auto-discovery feature
PG Exporter v0.3.2
Shadow DSN fixes, documentation updates
PG Exporter v0.3.1
Configuration fixes for older PostgreSQL versions
PG Exporter v0.3.0
PostgreSQL 13 support, REST APIs, dummy server
PG Exporter v0.2.0
YUM packages, configuration reload support
PG Exporter v0.1.2
Dynamic configuration reload, bulky mode
PG Exporter v0.1.1
Startup hang bug fix
PG Exporter v0.1.0
Initial stable release
PG Exporter v0.0.5
Timeouts, fatal collectors, priority semantics, pg_up fixes, and per-collector documentation
PG Exporter v0.0.4
Production tested release
PG Exporter v0.0.3
Production environment testing
PG Exporter v0.0.2
Early testing release
PG Exporter v0.0.1
Initial release with PgBouncer mode
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