Skip to content

Ruohang Feng

Author of PG Exporter and Pigsty; PostgreSQL infrastructure, monitoring, and the tooling in between.

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.

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