Releases: cybertec-postgresql/pgwatch
Release list
v6.0.0
pgwatch v6 is here 🎉
The biggest release since v5 — full Postgres v19 support, a new source type, fully modernized dashboards, and a reaper core built for reliability at scale.
The big three
🔌 Prometheus as a source. pgwatch can now scrape your existing Prometheus endpoints (patroni, postgres_exporter, etc.) directly — no need to stand up native connections everywhere. Mix and match Postgres and Prometheus sources in the same setup.
📊 Dashboards, reimagined. Every dashboard has been rebuilt on Grafana's new v13 schema with a unified row layout — cleaner, faster, and wall-display ready. Prometheus now gets first-class dashboard parity with Postgres, including brand-new Lock Details, Server Log Events, and Stored Procedures views.
⚙️ A reaper that doesn't choke under load. The collection core no longer runs one goroutine per (source × metric) — it runs one per source, waking on a shared tick and sending every due metric in a single round-trip. On a six-source test run that removes 414 goroutines, cuts steady-state allocation by 8–9×, and drops GC CPU by roughly 3×. Around it, the per-source sweep in the main loop is now bounded-parallel (32 at a time) on every refresh, every database round-trip has a deadline, and continuous discovery is served from a last-known-good cache when it fails. Translation: one wedged database can no longer stall the fleet, and a restart is no longer the fix.
Also worth knowing
- WebUI modernized to React 19 + MUI v9
- New metrics:
recovery,stat_lock,settings_num,autovacuum_scores, plusstats_resettracking across table/index/sproc stats - Fixed: graceful sink outage handling,
SourceReaperdeadlocks,NaN/Infsanitization in measurements, replication lag panel bugs - Security: JWT secret is now randomly generated at startup, not hardcoded
- Postgres support bumped to v19
- New Task build tool support for contributors
What's Changed
[!]add Prometheus exporter as a pgwatch source by @pashagolub in #1405[!]bump Postgres to v19 by @pashagolub in #1497[!]reaper goroutine consolidation viapgx.Batchqueries (#1316)[!]refactorreaper.Reapmain loop as parallel by @pashagolub in #1512[!]restructure docs into Diátaxis quadrants by @pashagolub in #1532[!]transform v13 dashboards to row layout with unified colophon by @pashagolub in #1500[!]upgradewebuito React v19, MUI v9, MUI X Data Grid v9 by @pashagolub in #1422[!]upgrade Grafana dashboards to v13 by @pashagolub in #1487[!]use bounded contexts for all database round-trips by @pashagolub in #1511[+]add "Lock details" dashboard by @pashagolub in #1498[+]add.git-blame-ignore-revsby @pashagolub in #1389[+]addautovacuum_scoresmetric by @nadashaban11 in #1403[+]addmem_exceeded_counttopg_stat_replication_slots, closes #1395 by @pashagolub in #1503[+]addrecoverymetric, closes #1394 by @pashagolub in #1490[+]addsettings_nummetric, closes #1247 by @pashagolub in #1436[+]addstat_lockmetric to report per-lock statistics, closes #1393 by @pashagolub in #1496[+]addstats_resettotable_*statsandindex_stats, closes #1396 by @pashagolub in #1502[+]addwal_fpi_bytesfield towal_statsmetric, fixes #1399 by @nadashaban11 in #1402[+]add Prometheus "Server Log Events" dashboard by @pashagolub in #1518[+]add Prometheus stored procedures dashboards by @pashagolub in #1516[+]add Prometheus variant of "Version Overview" dashboard by @pashagolub in #1514[+]add stats_reset to sproc_stats and database_conflicts metrics, closes #1397 by @pashagolub in #1501[+]add support for Task build tool by @pashagolub in #1504[+]add v13 "Health check" dashboard by @avandras in #1448[+]add v13 global DB overview dashboard by @avandras in #1454[+]bump@humanfs/nodefrom 0.16.7 to 0.16.8 by @dependabot[bot] in #1546[+]bumpactions/cachefrom 5 to 6 by @dependabot[bot] in #1453[+]bumpactions/checkoutfrom 6 to 7 by @dependabot[bot] in #1447[+]bumpactions/setup-gofrom 6 to 7 by @dependabot[bot] in #1465[+]bumpactions/setup-nodefrom 6 to 7 by @dependabot[bot] in #1462[+]bumpactions/setup-pythonfrom 6 to 7 by @dependabot[bot] in #1468[+]bumpactions/stalefrom 10 to 11 by @dependabot[bot] in #1478[+]bumpaxiosfrom 1.15.0 to 1.18.0 in webui by @dependabot[bot] in #1390 #1424 #1471[+]bumpbrace-expansionfrom 5.0.6 to 5.0.9 in webui by @dependabot[bot] in #1485 #1420[+]bumpbrowserslistfrom 4.28.1 to 4.28.8 by @dependabot[bot] in #1543[+]bumpetcd/client/v3from 3.6.11 to 3.6.12 by @dependabot[bot] in #1431[+]bumpgo.etcd.io/etcd/client/v3from 3.6.12 to 3.7.1 by @dependabot[bot] in #1461 #1472[+]bumpgoogle.golang.org/grpcfrom 1.81.0 to 1.83.0 by @dependabot[bot] in #1410 #1457 #1463 #1479[+]bumpgoogle.golang.org/protobuffrom 1.36.11 to 1.36.12 by @dependabot[bot] in #1522[+]bumpgopsutil/v4from 4.26.4 to 4.26.5 by @dependabot[bot] in #1425[+]bumpgrpcfrom 1.80.0 to 1.81.0 by @dependabot[bot] in #1388[+]bumpjackc/pgx/v5from 5.9.2 to 5.10.0 by @dependabot[bot] in #1432[+]bumpjs-yamlfrom 4.3.0 to 4.3.2 in webui by @dependabot[bot] in #1510 #1557[+]bumpnanoidfrom 3.3.16 to 3.3.18 in webui by @dependabot[bot] in #1509[+]bumpprometheus/client_golangfrom 1.23.2 to 1.24.1 by @dependabot[bot] in #1469 #1473[+]bumpsethvargo/go-retryfrom 0.3.0 to 0.4.0 by @dependabot[bot] in #1466[+]bumpshirou/gopsutil/v4from 4.26.5 to 4.26.7 by @dependabot[bot] in #1458 #1484[+]bumpsirupsen/logrusfrom 1.9.4 to 1.10.0 by @pashagolub in #1524[+]bumptestcontainers/testcontainers-gofrom 0.42.0 to 0.44.0 by @dependabot[bot] in #1450 #1508[+]bumpvitefrom 7.3.2 to 8.0.16 by @pashagolub in #1421 #1440 #1445[+]bumpyamlfrom 1.10.0 to 2.8.4 in webui by @pashagolub in #1391[+]bump pgwatch module to v6 by @pashagolub in #1530[+]cut allocations inPrometheusWriter.WritePromMetricsby @pashagolub in #1550[+]improveadmin.drop_all_metric_tablesroutine, closes #1474 by @pashagolub in #1520[+]increase test coverage fortestutilpackage by @pashagolub in #1521[-]avoid deadlock inSourceReaper, fixes #1412 by @pashagolub in #1417[-]fixcheckpointermetric by @0xgouda in #1411[-]fix Grafana postgres datasource provisioning for Grafana 12+ by @pashagolub in #1406[-]fix multiple logging errors by @0xgouda in #1541[-]fix partition creation after long downtime, closes #1529 by @0xgouda in #1531[-]fix potential race conditions, fixes #1359 by @pashagolub in #1492[-]fix the default dashboard file name by @0xgouda in #1538[-]fix the way log parser started in newDbConnReaperby @pashagolub in #1517[-]fix v12 "Replication lag" panel, closes #1444 by @youdie006 in #1483[-]fix webui column resizing glitches by @0xgouda in #1527[-]forbid different pgURI for metrics and sources, fixes #1288 by @pashagolub in #1519[-]handle pg sink being down gracefully, fixes #1426 by @0xgouda in #1429[-]patch security vulnerabilities in webui dependencies by @pashagolub in #1477[-]sanitizeNaN/Inffloat values in measurements, fixes #1416 by @justin212407 in #1418[-]use random JWT secret instead of hardcoded key by @pashagolub in #1475[*]add cache for Postgres continous discovery by @pashagolub in #1513[*]add missing if condition to pg partitioning logic by @0xgouda in #1534[*]changebackendsvalues from int to float by @avandras in #1439[*]fix log message by @0xgouda in #1413[*]handle counter resets in dashboard queries by @0xgouda in #1528[*]improve "Health check" dashboard by @pashagolub in #1486[*]improve Replication dashboards by @pashagolub in #1489[*]improve source reaper error logging by @pashagolub in #1456[*]migrate to time-only partitioning in pg sink by @0xgouda in #1408[*]move Cybertec logo to repo by @pashagolub in #1433[*]optimizeflush()in pg sink by @0xgouda in #1537[*]optimize prom sink memory usage by @0xgouda in #1549[*]refactorreaper.Reap()by @pashagolub in #1505[*]remove duplicate assignment tometricsConfigby @pashagolub in #1493[*]remove EOL Grafana v11 dashboards by @pashagolub in #1407[*]repurposeduplicate_countinDROP INDEXrecommendations by @avandras in #1446[*]serve dashboards Cybertec logo from the repo by @pashagolub in #1434
New Contributors
- @justin212407 made their first contribution in #1418
- @avandras made their first contribution in #1446
- @youdie006 made their first contribution in #1483
Full Changelog: v5.3.0...v6.0.0
What to do next?
v5.3.0
What's Changed
[-] use random JWT secret instead of hardcoded key (#1475)
Important
The Web UI/API signed and validated all JWTs with a hardcoded key published in the source, letting anyone forge accepted tokens and bypass authentication.
Tokens now rotate on every restart, invalidating leaked ones.
Full Changelog: v5.2.0...v5.3.0
What to do next?
v4.2.0
What's Changed
[-] fix pgwatch_instance_up metric for down sources, closes #1158 (#1162)
[-] use random JWT secret instead of hardcoded key (#1475)
Important
The Web UI/API signed and validated all JWTs with a hardcoded key published in the source, letting anyone forge accepted tokens and bypass authentication.
Tokens now rotate on every restart, invalidating leaked ones.
Full Changelog: v4.1.0...v4.2.0
What to do next?
v5.2.0
What's Changed
[+]addadmin.drop_source_partitions, closes #1340 by @RafayKhattak in #1364[+]addtestutils.TestSetupRPCServers()by @pashagolub in #1383[+]add customTimescaleDBDockerfile with plpython3u support by @0xgouda in #1372[+]add parallel source discovery by @pashagolub in #1378[+]add SQL syntax highlighting to webuiInitSQLpopup by @mohamadyasser118 in #1317[+]bumpaxiosfrom 1.13.6 to 1.15.0 in webui by @dependabot[bot] in #1363[+]bumpcybertec-postgresql/pgx-migratorfrom 1.3.0 to 1.4.0 by @dependabot[bot] in #1347[+]bumpetcd/client/v3from 3.6.8 to 3.6.11 by @dependabot[bot] in #1332 #1353 #1387[+]bumpflattedfrom 3.4.1 to 3.4.2 by @dependabot[bot] in #1330[+]bumpfollow-redirectsfrom 1.15.11 to 1.16.0 by @dependabot[bot] in #1367[+]bumpgo.uber.org/zapfrom 1.27.1 to 1.28.0 by @dependabot[bot] in #1380[+]bumpgopsutil/v4from 4.26.2 to 4.26.3 by @dependabot[bot] in #1351[+]bumpgrpcfrom 1.79.2 to 1.80.0 by @dependabot[bot] in #1310 #1352[+]bumpjackc/pgx/v5from 5.8.0 to 5.9.2 by @dependabot[bot] in #1331 #1371[+]bumppicomatchfrom 4.0.3 to 4.0.4 by @dependabot[bot] in #1338[+]bumppostcssfrom 8.5.8 to 8.5.12 in webui by @dependabot[bot] in #1381[+]bumptestcontainers/testcontainers-gofrom 0.41.0 to 0.42.0 by @dependabot[bot] in #1360[+]bumpvitefrom 7.3.1 to 7.3.2 by @dependabot[bot] in #1357[+]bumpyamlfrom 2.8.2 to 2.8.3 by @dependabot[bot] in #1337[+]enhanceQuery Performance Analysispg dashboard by @0xgouda in #1375[+]enhance TimescaleDB compose setup by @0xgouda in #1366[+]improveReapertest coverage by @pashagolub in #1384[+]introduce new typemetrics.MetricIntervalsby @pashagolub in #1312[-]apply non-recursive yaml dir reading, fixes #1368 by @pashagolub in #1382[-]fix--web-base-pathdeployments, closes #1328 by @Syedowais312 in #1329[-]fixSingle query detailspg dashboard by @0xgouda in #1376[-]fix more typos by @RafayKhattak in #1355[-]fix quoting$databasesvar in pgbouncer dashboard by @slardiere in #1349[-]fix typo inmetric_definitions.mdby @mohamadyasser118 in #1309[-]fix typo in timescaledb dockerfile by @0xgouda in #1373[-]fix typos across codebase by @RafayKhattak in #1374[-]fix typos by @RafayKhattak in #1348[*]SourceConn.GetMetricInterval()now returnstime.Durationby @pashagolub in #1315[*]deprecateconvert_metricsutility by @pashagolub in #1313[*]improvecustom_installation.mddocs file by @0xgouda in #1379[*]improvedocker_installation.mdclarity and accuracy by @0xgouda in #1339[*]improve pg container by @0xgouda in #1311
Full Changelog: v5.1.0...v5.2.0
What to do next?
- Star the repository
- Read the documentation
- Check out the blog
- Follow us on Linkedin
v5.1.0
What's Changed
[!]refactor Prometheus sink, closes #1267 by @pashagolub in #1289[+]add ARTIFICIAL INTELLIGENCE & AUTOMATION POLICY by @pashagolub in #1252[+]add links toSingle Query DetailsinQuery Perf..pg dashboard by @Bishoywadea in #1235[+]add tests forReaper.FetchMetric()by @pashagolub in #1268[+]add tests forReaper.LoadMetrics()by @pashagolub in #1266[+]add SQL syntax highlighting in metrics popup by @mohamadyasser118 in #1299[+]bumpdownload-artifactfrom 7 to 8 by @dependabot[bot] in #1255[+]bumpgopsutil/v4from 4.26.1 to 4.26.2 by @dependabot[bot] in #1263[+]bumpgrpcfrom 1.79.1 to 1.79.2 by @dependabot[bot] in #1286[+]bumpreact-router-domfrom 6.8.1 to 6.28.1 by @pashagolub in #1257[+]bumptestcontainers/testcontainers-gofrom 0.40.0 to 0.41.0 by @dependabot[bot] in #1291[+]bumpupload-artifactfrom 6 to 7 by @dependabot[bot] in #1254[+]improve missing metric reporting, closes #1125 by @Copilot in #1306[+]recreateaurorapreset by @0xgouda in #1304[+]refactorpsutilOS metric fetchers by @pashagolub in #1269[-]fixpg_buffercachemetrics by @pashagolub in #1305[-]fixwebuipanels needs refresh, fixes #1243 by @Mazen050 in #1246[-]fix exec mode for all.shfiles by @pashagolub in #1284[-]fix flag name typo in docs by @nadashaban11 in #1261[-]fix sources handling inconfig upgradeby @0xgouda in #1287[-]fix various typos by @RafayKhattak in #1302[-]makeadd-test-db.shexecutable by @Syedowais312 in #1272[-]makelastErrorsends inflush()non-blocking, closes #1212 by @pashagolub in #1265[*]clean up integration tests, fixes #1298 by @pashagolub in #1300[*]deprecateconfigured_dbsby @0xgouda in #1262[*]fix data race inlog/log_broker_hook.go, fixes #1285 by @Mazen050 in #1296[*]fix docs update grafana install steps and add yaml setup example by @kevo-1 in #1264[*]fix typos incmdopts/cmdconfig_test.goby @Mazen050 in #1290[*]ignore Coveralls errors by @pashagolub in #1253[*]improvesingle query detailspg dashboard by @Bishoywadea in #1276[*]improve log parser, closes #1295 by @0xgouda in #1294[*]improve SQL popup readability, closes #1241 by @mohamadyasser118 in #1280[*]improve tests forPostgresMetricReaderWriterby @Mahmoud-Ayman-Saleh in #1221[*]move extensions and helpers creation tosourcesby @pashagolub in #1259[*]releaselogrus.Entryimmediately inBrokerHook.Fire()by @pashagolub in #1303[*]set explicit permissions for Stale GHA workflow by @pashagolub in #1258[*]update README by @0xgouda in #1256
New Contributors
- @nadashaban11 made their first contribution in #1261
- @Syedowais312 made their first contribution in #1272
- @mohamadyasser118 made their first contribution in #1280
- @kevo-1 made their first contribution in #1264
- @RafayKhattak made their first contribution in #1302
- @Copilot made their first contribution in #1306
Full Changelog: v5.0.0...v5.1.0
What to do next?
- Star the repository
- Read the documentation
- Check out the blog
- Follow us on Linkedin
v5.0.0
pgwatch v5 introduces a major update to the PostgreSQL monitoring tool, focusing on enhanced stability, new features, and modernization. Key highlights include:
Major Changes
Schema migration support for PostgreSQL sinks, module version bump to v5, and migration of the web UI from react-scripts to Vite for improved performance and build efficiency.
New Features
Added metrics like stat_statements_jit, new Grafana panels (e.g., "Tables with the oldest non-frozen xid" and "Total index size"), support for reverse proxies on different paths, and functions like admin.maintain_unique_sources() for PostgreSQL sinks. Also includes graceful fallback for local log parsing and a new testutil package.
Improvements
Enhanced dashboards (e.g., Index Overview, Health Check), deprecation of old Stats Statements dashboards, refactoring of recommendation metrics, and better handling of configurations and logs. Minimum retention interval set to 1 hour.
Bug Fixes
Resolved issues with panel queries, data races in Prometheus sink, source config updates, logging, and more. Fixed circular dependencies in config upgrades and improved partition creation logic.
For full details, see the full changelog below.
What's Changed
[!]add schema migration support for PostgreSQL sinks, closes #1110 by @pashagolub in #1111[!]bump Go to v1.26 by @pashagolub in #1207[!]bump module version to v5 by @pashagolub in #1112[!]migrate webui fromreact-scriptsto Vite by @pashagolub in #1170[!]upgrade core webui dependencies by @pashagolub in #1237[+]addadmin.maintain_unique_sources()to Postgres sink by @pashagolub in #1100[+]addSingle Query Detailsprom dashboard, fixes #1169 by @Bishoywadea in #1179[+]addstat_statements_jitmetric by @0xgouda in #1054[+]addTables with the oldest non-frozen xidpanel by @0xgouda in #1133[+]addTotal index sizepanel toHealth Checkdashboard by @0xgouda in #1115[+]add graceful fallback for local log parsing by @0xgouda in #1109[+]add newtestutilpackage by @0xgouda in #1064[+]add popup dialogs for large fields, closes #1051 by @0xgouda in #1096[+]add support for reverse proxies on a different path, closes #1049 by @pashagolub in #1063[+]allow sink schema upgrades without --metrics/--sources, fixes #1114 by @pashagolub in #1175[+]apply admin functions migrations for v5, fixes #1180 by @0xgouda in #1181[+]bumpactions/cachefrom 4 to 5 by @dependabot[bot] in #1074[+]bumpactions/download-artifactfrom 6 to 7 by @dependabot[bot] in #1076[+]bumpactions/upload-artifactfrom 5 to 6 by @dependabot[bot] in #1075[+]bumpajvfrom 6.12.6 to 6.14.0 by @dependabot[bot] in #1220[+]bumpaxiosfrom 1.12.0 to 1.13.5 by @dependabot[bot] in #1197[+]bumpdocker.io/postgresto v18 by @pashagolub in #1102[+]bumpetcd/client/v3from 3.6.6 to 3.6.8 by @dependabot[bot] in #1080 #1205[+]bumpgolang-jwt/jwt/v5from 5.3.0 to 5.3.1 by @dependabot[bot] in #1149[+]bumpgoogle.golang.org/grpcfrom 1.77.0 to 1.78.0 by @dependabot[bot] in #1095[+]bumpgoogle.golang.org/protobuffrom 1.36.10 to 1.36.11 by @dependabot[bot] in #1077[+]bumpgoreleaser-actionfrom 6 to 7 by @dependabot[bot] in #1231[+]bumpgrpcfrom 1.78.0 to 1.79.1 by @dependabot[bot] in #1201 #1206[+]bumplodashfrom 4.17.21 to 4.17.23 in webui by @dependabot[bot] in #1139[+]bumpnode-forgefrom 1.3.1 to 1.3.2 by @dependabot[bot] in #1045[+]bumpshirou/gopsutil/v4from 4.25.10 to 4.26.1 by @dependabot[bot] in #1055 #1105 #1161[+]bumpsirupsen/logrusfrom 1.9.3 to 1.9.4 by @dependabot[bot] in #1124[+]bump Grafana image to v12.3 by @pashagolub in #1104[+]improveIndex overviewdashboard by @0xgouda in #1146[+]improveQuery Performance Analysisprom dashboard by @0xgouda in #1193[+]mentionAptinstallation option in docs. by @0xgouda in #1043[+]minor improvement toMissing Indexespanel by @0xgouda in #1129[+]more improvements toindex overviewdashboard by @0xgouda in #1154[-]add missing cybertec panels by @0xgouda in #1062[-]add missing newline inmetric print-sqloutput, fixes #1145 by @Abdelrhmansersawy in #1147[-]fixconfig upgradecircular dependency, closes #1156 by @pashagolub in #1171[-]fixDeleteOldPartitions()scheduling interval, fixes #1087 by @0xgouda in #1088[-]fixexpandEnvVars()to expandconnStrandGroupfields by @0xgouda in #1232[-]fixpgwatch_instance_upmetric for down sources, closes #1158 by @pashagolub in #1162[-]fix data race in Prometheus sink, fixes #1136 by @abhijeetsharma200 in #1140[-]fix error on using special chars in source names by @0xgouda in #1094[-]fix file leak inGetPathUnderlyingDeviceID, fixes #1185 by @Mazen050 in #1192[-]fix log parser to not re-read non-truncated files, fixes #1089 by @0xgouda in #1168[-]fix logging of cli options names by @0xgouda in #1178[-]fix panel queries inTable Detailsdashboard by @0xgouda in #1150[-]fix race condition inPrometheusWriter, fixes #1194 by @abhijeetsharma200 in #1195[-]fix recommendation dashboard panel name by @0xgouda in #1060[-]fix source config update handling by @0xgouda in #1106[-]fix sql ofShared Buffers hit pctpanel by @0xgouda in #1058[-]migrate all panels inHealth Checkdashboard to table format by @0xgouda in #1057[-]only create time partitions if needed by @0xgouda in #1127[-]pinpgwatch-metricsdata source to all panels and vars. by @df7cb in #1053[-]pinpgwatch-metricsdata source to all v11 panels and vars by @0xgouda in #1056[-]remove deprecated db types from webui, fixes #1044 by @0xgouda in #1047[-]remove sqls for pre postgres 14 versions by @0xgouda in #1123[-]resolve race conditions in YAML file operations, fixes #1198 by @pashagolub in #1209[-]return HTTP 405 for non-POST methods in login handler by @gemy26 in #1226[-]return the error fromMultiWriter.DefineMetrics(), fixes #1222 by @Mahmoud-Ayman-Saleh in #1224[*]allow Postgres sink schemas to exist before init/upgrade by @pashagolub in #1116[*]apply minimum retention interval to 1 hour by @pashagolub in #1052[*]deprecateStats Statements [Top|Visual|Search]dashboards by @0xgouda in #1131[*]don't remove\n \t \rmeta chars from query text by @0xgouda in #1142[*]drop redundant and unused admin functions by @0xgouda in #1191[*]fix typos in docs and source comments by @HIJOdelIDANII in #1204[*]ignore revive lintervar-namingwarning forapipackage by @pashagolub in #1069[*]improve Prometheus Health-check dashboard by @kmoppel in #1130[*]migrate all helpers totestutilby @0xgouda in #1071[*]monitor specified groups only, fixes #1093 by @0xgouda in #1163[*]move cache to Prometheus sink struct, closes #1176 by @abhijeetsharma200 in #1177[*]optimizePrometheusWriter.Collectlocking, fixes #1189 by @abhijeetsharma200 in #1190[*]refactorreco_add_indexmetric by @0xgouda in #1117[*]refactorreco_drop_indexmetric by @0xgouda in #1121[*]relocate% DB Totalcolumn inQuery Performance Analysisdashboard by @0xgouda in #1066[*]removefmt.Printlnfromwebservertests by @Makeepan-dev in #1218[*]remove redundantSource NamefromTables Overviewdashboard, fixes #1134 by @Mohamed-Elfardy in #1160[*]set lock_timeout via connection RuntimeParams instead of per-query transaction by @NikolayS in #1067[*]sort webui preset selection list and add descriptions, fixes #1050 by @pashagolub in #1172[*]suppressgolangci-lintvar naming warnings by @pashagolub in #1196[*]usetestutilpackage in the main integration test by @pashagolub in #1101
New Contributors
- @NikolayS made their first contribution in #1067
- @Abdelrhmansersawy made their first contribution in #1147
- @abhijeetsharma200 made their first contribution in #1140
- @Mohamed-Elfardy made their first contribution in #1160
- @HIJOdelIDANII made their first contribution in #1204
- @Mazen050 made their first contribution in #1192
- @Bishoywadea made their first contribution in #1179
- @Mahmoud-Ayman-Saleh made their first contribution in #1224
- @gemy26 made their first contribution in #1226
- @Makeepan-dev made their first contribution in #1218
Full Changelog: v4.1.0...v5.0.0
v4.1.0
Warning
pgwatch v4.1 introduced a breaking change to --retention parameter. It must be a valid Postgres interval now instead of integer value used before. So if you used, for example, --retention=90 to keep measurements for 90 days, now you must use --retention="90 days" value!
What's Changed
[!]switch to the Green Tea garbage collector by @pashagolub in #1007[+]add test patroni cluster to docker compose by @pashagolub in #993[+]allow to specify sink retention period as interval value by @pashagolub in #988[+]bumpactions/checkoutfrom 5 to 6 by @dependabot[bot] in #1035[+]bumpactions/setup-nodefrom 5 to 6 by @dependabot[bot] in #998[+]bumpactions/upload-artifactfrom 4 to 5 by @dependabot[bot] in #1000[+]bumpgo.uber.org/zapfrom 1.27.0 to 1.27.1 by @dependabot[bot] in #1034[+]bumpgolangci/golangci-lint-actionfrom 8 to 9 by @dependabot[bot] in #1017[+]bumpgoogle.golang.org/grpcfrom 1.75.1 to 1.77.0 by @dependabot[bot] in #986 #1027[+]bumpgoogle.golang.org/protobuffrom 1.36.9 to 1.36.10 by @dependabot[bot] in #979[+]bumppashagolub/pgxmock/v4from 4.8.0 to 4.9.0 by @dependabot[bot] in #987[+]bumpshirou/gopsutil/v4from 4.25.8 to 4.25.10 by @dependabot[bot] in #976 #1005[+]bumptestcontainers/testcontainers-gofrom 0.39.0 to 0.40.0 by @dependabot[bot] in #1013[+]bump Go from 1.24 to 1.25 by @pashagolub in #983[+]improve partition deletion in postgres sink, close #786 by @pashagolub in #985[+]mentiondemo.pgwatch.comin README and docs by @0xgouda in #1038[+]mentionRestartSecandTimeoutStopSecfor systemd by @kylorend3r in #1029[+]support custom configs for maintenance tasks by @0xgouda in #1018[+]support variable partition intervals in postgres sink by @0xgouda in #1012[*]updatepgbench.shandadd-test-db.shfile paths by @0xgouda in #1011[*]refactor object changes metric by @pashagolub in #984[*]misc updates to docs by @0xgouda in #1016[*]make legends consistent in "Global Database Overview" dashboard by @slardiere in #996[*]improve README by @0xgouda in #1026[*]fix maintenance task to delete entries of dropped tables by @0xgouda in #1020[*]fix column names inQuery Performance Analysisdashboard by @0xgouda in #1041[*]deprecate--direct-os-statsflag by @0xgouda in #1024[-]fix webui password hiding regex by @0xgouda in #1009[-]fix typo in source resolving log messages, fixes #997 by @pashagolub in #999[-]fix pgbouncer dashboard by @slardiere in #1002[-]fix default dashboard path inpgwatch-demoby @naub1n in #1040[-]fix bad path for pg dashboards in demo by @naub1n in #1037[-]fix aggregation of counts in v11stat-activitydashboard by @ArnaudDecatec in #1021[-]fixpgpoolandpgbouncerimage links, closes #981 by @pashagolub in #982[-]fix "could not parse ETCD node..." for patroni resolving, fixes #990 by @pashagolub in #991[-]addsourceandmetrictags to pgx traces, fixes #978 by @0xgouda in #980
New Contributors
- @slardiere made their first contribution in #996
- @ArnaudDecatec made their first contribution in #1021
- @naub1n made their first contribution in #1037
Full Changelog: v4.0.0...v4.1.0
What to do next?
- Star the repository
- Read the documentation
- Check out the blog
- Follow us on Linkedin
v4.0.0
What's New
This major release introduces several significant updates, new features, bug fixes, and enhancements
Important Changes
PostgreSQL 18 Metrics
total_XXX_timecolumns are added totable_statsmetric;read_bytes,write_bytes, andextend_bytesare added tostat_iometric;- use
pg_stat_ioforwal_statsmetric; - use
pg_ls_archive_statusdir()inarchiver_pending_countmetric; num_doneandslru_writtencolumns are added tocheckpointermetric;parallel_workers_to_launchandparallel_workers_launchedcolumns are added todb_statsmetric.
Grafana Dashboards
- New Grafana v12 dashboards have been added for both PostgreSQL and Prometheus sinks;
- Grafana v10 support is discontinued;
- New "Global Database Overview" dashboard with 26 panels, including new panels for replication, connections, and index usage (inspired by postgres.ai);
- New "Database Overview" now has 21 panels with time lag support and improved visualizations;
- New "Query Performance Analysis" dashboard with enhanced table with 17 metrics and 8 visualization panels (inspired by postgres.ai);
- New "Tables Overview" dashboard providing insights into table sizes, bloat, and index usage with treemap visualizations panels.
Metrics
- Realtime metrics have been deprecated and removed from the system.
- Metrics can now be loaded from a specified folder, allowing for better organization and management of metric definitions.
Sinks
- gRPC Sink Enhancements: Basic authentication support has been added to the gRPC sink, along with improved documentation for its usage.
Development and Contribution
- The development experience with Docker Compose has been enhanced, making it easier to set up and manage the environment.
- A new repository, pgwatch-contrib, has been created to host additional contributions and extensions for pgwatch from the community. The
rpcsubdirectory contains sample gRPC sinks implementations.
Changelog
[!]add Grafana v12 dashboards for Prometheus data source by @pashagolub in #933[!]add support for PostgreSQL v18 by @pashagolub in #903[!]deprecate realtime metrics by @pashagolub in #925[!]remove Grafana v10 dashboards due to EOL of Grafana v10 by @pashagolub in #934[!]remove obsoletedb_stats_aurorametric by @pashagolub in #930[*]add note in sizing docs about metrics returning thousands of rows by @0xgouda in #874[*]clarify the usage of docker compose, closes #879 by @pashagolub in #880[*]fixupdateSources()query parameters number by @0xgouda in #875[*]increase Postgres sink partitions to precreate from 0 to 3 by @kylorend3r in #960[*]mentionpgwatch-contrib/rpcin docs by @0xgouda in #922[*]misc minor updates to docs by @0xgouda in #871[*]removeuidfrom datasource by @smiyc in #952[*]remove hard coded metric defs from docs by @0xgouda in #870[*]update docs for metrics yaml folder configs by @0xgouda in #892[+]add "Query Performance Analysis" dashboard by @pashagolub in #916[+]add "Tables Overview" dashboard by @pashagolub in #918[+]add basic auth support to grpc sink by @0xgouda in #862[+]add docs for grpc sink by @0xgouda in #867[+]add PlantUML diagrams by @pashagolub in #926[+]add sample metrics YAML file, closes #883 by @pashagolub in #900[+]allow metrics loading from folder, closes #882 by @0xgouda in #889[+]bumpactions/checkoutfrom 4 to 5 by @dependabot[bot] in #888[+]bumpactions/download-artifactfrom 4 to 5 by @dependabot[bot] in #881[+]bumpactions/setup-gofrom 5 to 6 by @dependabot[bot] in #939[+]bumpactions/setup-nodefrom 4 to 5 by @dependabot[bot] in #936[+]bumpactions/setup-pythonfrom 5 to 6 by @dependabot[bot] in #938[+]bumpactions/stalefrom 9 to 10 by @dependabot[bot] in #937[+]bumpaxiosfrom 1.11.0 to 1.12.0 by @dependabot[bot] in #953[+]bumpdocker/dockerfrom 28.3.2 to 28.3.3 by @dependabot[bot] in #872[+]bumpgo.etcd.io/etcd/client/v3from 3.6.2 to 3.6.5 by @dependabot[bot] in #858 #868 #965[+]bumpgolang-jwt/jwt/v5from 5.2.3 to 5.3.0 by @dependabot[bot] in #876[+]bumpgoogle.golang.org/grpcfrom 1.73.0 to 1.75.1 by @dependabot[bot] in #865 #902 #950[+]bumpgoogle.golang.org/protobuffrom 1.36.6 to 1.36.9 by @dependabot[bot] in #887 #904 #948[+]bumpjackc/pgx/v5from 5.7.5 to 5.7.6 by @dependabot[bot] in #946[+]bumpprometheus/client_golangfrom 1.22.0 to 1.23.2 by @dependabot[bot] in #878 #941[+]bumpshirou/gopsutil/v4from 4.25.6 to 4.25.8 by @dependabot[bot] in #877 #923[+]bumpstretchr/testifyfrom 1.10.0 to 1.11.1 by @dependabot[bot] in #906 #912[+]bumptestcontainers/testcontainers-gofrom 0.38.0 to 0.39.0 by @dependabot[bot] in #964[+]bumpwebui/react-scriptsto v5.0.1 (pinned version) by @pashagolub in #866[+]improve "Global Database Overview" dashboard by @pashagolub in #869[+]improvechange_eventsmetric processing by @pashagolub in #932[+]improve development experience with docker compose by @pashagolub in #927[+]update docs with new v12 dashboards screenshots by @pashagolub in #943[-]do not fail on db resolve error, just log an error, fixes #890 by @pashagolub in #899[-]fix assignment to entry in nil map, fixes #968 by @pashagolub in #969[-]fix dashboard links to single query details, fixes #961 by @pashagolub in #970[-]fix Patroni resolver, fixes #962 by @pashagolub in #973[-]fix source YAML test introduced by #900 by @pashagolub in #901[-]fix weekly partition naming at year boundaries by @pashagolub in #974[-]move to next envelope in Postgres sink ifCOPYfails, fixes #908 by @pashagolub in #911[-]prevent concurrent map read and write inSourceConby @pashagolub in #971[-]removehost_configquerying fromGetSources()by @0xgouda in #863[-]remove double "git checkout" from "README.md" by @smiyc in #942[-]use proper datasource id in Prometheus dashboards by @pashagolub in #972
New Contributors
- @smiyc made their first contribution in #942
- @kylorend3r made their first contribution in #960
Full Changelog: v3.7.0...v4.0.0
v3.7.0
What's Changed
[-]monitor all sources if--groupcmdopt is omitted, fixes #843 (#847)[*]improve stat-statements Grafana v11 Postgres dashboards by @f9n in #846
Full Changelog: v3.6.0...v3.7.0
What to do next?
- Star the repository
- Read the documentation
- Check out the blog
- Follow us on Linkedin
v3.6.0
What's Changed
[+]add "default" group processing by @pashagolub in #798[+]addmeasurements writtenlog message to RPC sink by @0xgouda in #829[+]add TLS encryption to RPC channel by @0xgouda in #796[+]bumpgo.etcd.io/etcd/v3from 3.6.0 to 3.6.2 by @dependabot[bot] in #789 #837[+]bumppashagolub/pgxmock/v4from 4.7.0 to 4.8.0 by @dependabot[bot] in #806[+]bumpshirou/gopsutil/v4from 4.25.5 to 4.25.6 by @dependabot[bot] in #827[+]bumptestcontainers/testcontainers-gofrom 0.37.0 to 0.38.0 by @dependabot[bot] in #839[+]optimize the size ofMeasurementEnvelopeby @pashagolub in #793[*]excludeMetricDeffromMeasurementEnvelopeby @pashagolub in #787[*]improve--batching-delayparameter description, closes #821 by @pashagolub in #828[-]fix--groupcommand-line option, closes #792 by @pashagolub in #794[-]fixinstance_upmetric, closes #759 by @pashagolub in #791[-]fixmaster onlypostgres source shutdown due to catchedInRecoverystate logic by @0xgouda in #813[-]fixReap()method to update Recovery cache after processing the previous value by @0xgouda in #815[-]fixReap()to not requireSource.MinDbSizeMbto be >= 8 by @0xgouda in #818[-]fixSource.Equal()presets comparison, closes #830 by @0xgouda in #831[-]fix typo inreapMetricMeasurements()log message by @0xgouda in #807[-]fix JSONB null casting errors inpostgres/v11dashboards by @f9n in #838[-]fix JSONB null casting errors in "Top Tables" and "Health-check" dashboards by @kmoppel in #833[-]improve Prometheus scrapping, fixes #749 by @pashagolub in #790[-]remove unnecessary check fromFetchMetric()by @0xgouda in #808
New Contributors
Full Changelog: v3.5.0...v3.6.0
What to do next?
- Star the repository
- Read the documentation
- Check out the blog
- Follow us on Linkedin