Releases: pganalyze/collector
Releases · pganalyze/collector
v0.51.1
- Fix handling of tables that only have an entry in pg_class, but not pg_stat_user_tables
- Due to a bug introduced in the last release (0.51.0), databases with such tables would error out and be ignored due to n_mod_since_analyze and n_ins_since_vacuum being NULL
v0.51.0
- Autovacuum:
- Add support for updated log format in Postgres 15+
- Remember unqualified name for "skipping vacuum" log events
- Add more cases for "canceling autovacuum task" log context line
- Track n_ins_since_vacuum value to determine when insert-based autovacuum was triggered
- AWS Aurora: Correctly detect Aurora reader instances as replicas
- Self-managed servers: Use log_timezone setting to determine log timezone if possible
- Azure: Fix partition selection issue in Azure log processing
- Helm chart: Improve default security settings
- Update Go version to 1.21
- Packages:
- Switch to SHA256 signatures to fix RHEL9 install errors
- Drop Ubuntu 16.04, 18.04 and Debian 10 (Buster) support, as they are no longer supported
v0.50.1
- Bugfix: Return correct exit code with the data collection test run
- The correct exit code was returned with "--reload --test", but not with "--test"
- Xmin horizon metrics: Fix incorrect ReplicationSlotCatalog
- ReplicationSlot was wrongly sent as ReplicationSlotCatalog
- Xmin horizon metrics collection was introduced in 0.49.0
- Update github.com/satori/go.uuid to 1.2.0
- Fixes CVE-2021-3538 which may have led to random UUIDs having less
randomness than intended - Effective security impact of this historic issue is expected to be minimal,
since random UUIDs are only used for snapshot identifiers associated to a
particular pganalyze server ID
- Fixes CVE-2021-3538 which may have led to random UUIDs having less
- Log Insights: Add autovacuum index statistics information introduced in Postgres 14
- Previously, if autovacuum logs included such information, the collector
failed to match the log line and the events would not be classified
correctly in Log Insights
- Previously, if autovacuum logs included such information, the collector
v0.50.0
- Track TOAST table name, reltuples and relpages
- Reload collector config after successful test run
- If you have previously run "--reload --test" you can now simply run "--test"
- To restore the old behaviour, pass the "--no-reload" flag together with "--test"
- RPM packages: Ensure collector gets started after reboot
- Due to a packaging oversight, the pganalyze-collector service was not correctly
enabled in systemd, which caused the collector to not start after a system reboot - If you are upgrading, the package upgrade script will automatically fix this for you
- Due to a packaging oversight, the pganalyze-collector service was not correctly
- Collector install script: Add Amazon Linux 2023, refresh other versions
- Azure Database for PostgreSQL / Azure Cosmos DB for PostgreSQL
- Add support for Azure Kubernetes Service (AKS) Workload Identity
- To utilize this integration, follow the regular Azure instructions for workload
identity - the relevant environment variables will be automatically recognized
- To utilize this integration, follow the regular Azure instructions for workload
- Add support for Azure Kubernetes Service (AKS) Workload Identity
- Amazon RDS:
- auto_explain and slow query log: Look for "[Your log message was truncated]" marker
in the middle of multi-line log messages, not just at the end- This can occur due to limitations of the AWS API - this way the log line is
correctly marked as truncated, instead of as a parsing error
- This can occur due to limitations of the AWS API - this way the log line is
- auto_explain and slow query log: Look for "[Your log message was truncated]" marker
- Heroku Postgres:
- Rewrite syslog parsing code and inline it, to avoid "lpx" library license ambiguity
v0.49.2
- Bugfix: Ensure all relation information will be sent out even with a lock
- This fixes a bug where we were not sending out relation information of
relations encountered locks. Processing a snapshot missing such information
was failing
- This fixes a bug where we were not sending out relation information of
- Allow pg_stat_statements_reset() to fail with a soft error
- This was a hard error previously, which failed the snapshot and the snapshot
state did not get persisted, indirectly led to a memory leak
- This was a hard error previously, which failed the snapshot and the snapshot
- Add integrity checks before uploading snapshots
- Validate some structural assumptions that cannot be enforced by protobuf
before sending a snapshot
- Validate some structural assumptions that cannot be enforced by protobuf
- Bugfix: Increase timeout to prevent data loss when monitoring many servers
- This mitigates an issue introduced in 0.49.0
v0.49.1
- Relation queries: Correctly handle later queries encountering a lock
- This fixes edge cases where relation metadata (e.g. which indexes exist)
can appear and disappear from one snapshot to the next, due to locks
held for parts of the snapshot collection
- This fixes edge cases where relation metadata (e.g. which indexes exist)
- Relation statistics: Avoid bogus data due to diffs against locked objects
- This fixes a bug where table or index statistics can be skipped due to
locks held on the relation, and that causing a bad data point to be
collected on a subsequent snapshot, since the prior snapshot would be
missing an entry for that relation. Fixed by consistently skipping
statistics for that table/index in such situations.
- This fixes a bug where table or index statistics can be skipped due to
- Amazon RDS / Aurora: Support new long-lived CA authorities
- Introduces the new "rds-ca-global" option for db_sslrootcert, which is the
recommended configuration for RDS and Aurora going forward, which encompasses
both "rds-ca-2019-root" and all newer RDS CAs such as "rds-ca-rsa2048-g1". - For compatibility reasons we still support naming the "rds-ca-2019-root" CA
explicitly, but its now just an alias for the global set.
- Introduces the new "rds-ca-global" option for db_sslrootcert, which is the
- Citus: Add option to turn off collection of Citus schema statistics
- For certain Citus deployments, running the relation or index size functions
can fail or time out due to a very high number of distributed tables. - Adds the new option "disable_citus_schema_stats" / "DISABLE_CITUS_SCHEMA_STATS"
to turn off the collection of these statistics. When using this option its
recommended to instead monitor the workers directly for table and index sizes.
- For certain Citus deployments, running the relation or index size functions
- Add troubleshooting HINT when creating pg_stat_statements extension fails
- This commonly fails due to creating pg_stat_statements on the wrong database,
see https://pganalyze.com/docs/install/troubleshooting/pg_stat_statements
- This commonly fails due to creating pg_stat_statements on the wrong database,
v0.49.0
- Update pg_query_go to v4 / Postgres 15 parser
- Besides supporting newer syntax like the MERGE statement, this parser
update also drops support for "?" replacement characters found in
pg_stat_statements output before Postgres 10
- Besides supporting newer syntax like the MERGE statement, this parser
- Postgres 10 is now the minimum required version for running the collector
- We have dropped support for 9.6 and earlier due to the parser update,
and due to Postgres 9.6 now being End-of-Life (EOL) for over 1 year
- We have dropped support for 9.6 and earlier due to the parser update,
- Enforce maximum time for each snapshot collection using deadlines
- Sometimes individual database servers can take longer than the allocated
interval (e.g. 10 minutes for a full snapshot), which previously lead to
missing data for other servers monitored by the same collector process - The new deadline-based logic ensures that collector functions return with
a "context deadline exceeded" error when the allocated interval is exceed,
causing a clear error for that server, and allowing other servers to
continue reporting their data as planned - As a side effect of this change, Ctrl+C (SIGINT) now works to stop a
collector test right away, instead of waiting for the snapshot to complete
- Sometimes individual database servers can take longer than the allocated
- Log Insights
- Only consider first 1000 characters for log_line_prefix to speed up parsing
- Clearly report errors with closing/removing temporary files
- Improve --analyze-logfile mode for debugging log parsing
- Amazon RDS/Aurora: Improve handling of excessively large log file portions
- Azure DB for Postgres: Fix log line parsing for DETAIL lines
- Collect xmin horizon metrics
- Bugfixes
- Relation info: Correctly filter out foreign tables for constraints query
- Return zero as FullFrozenXID for replicas
- Update Go modules flagged by dependency scanners (issues are not actually applicable)
v0.48.0
- Update to Go 1.19
- Bugfix: Ensure relfrozenxid = 0 is tracked as full frozenxid = 0 (instead of
adding epoch prefix) - Amazon RDS and Amazon Aurora: Support IAM token authentication
- This adds a new configuration setting,
db_use_iam_auth
/DB_USE_IAM_AUTH
.
If enabled, the collector fetches a short-lived token for logging into the
database instance from the AWS API, instead of using a hardcoded password
in the collector configuration file - In order to use this setting, IAM authentication needs to be enabled on the
database instance / cluster, and the pganalyze IAM policy needs to be
extended to cover the "rds-db:connect" privilege for the pganalyze user:
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.IAMPolicy.html
- This adds a new configuration setting,
- Amazon RDS: Avoid DescribeDBInstances calls for log downloads for RDS instances
- This should reduce issues with rate limiting on this API call in some cases
- Amazon Aurora: Cache failures in DescribeDBClusters calls for up to 10 minutes
- This reduces repeated calls to the AWS API when the cluster identifier is
incorrect
- This reduces repeated calls to the AWS API when the cluster identifier is
- Log parsing: Add support for timezones specified by number, such as "-03"
v0.47.0
- Fix RDS log processing for large log file sections
- This fixes an issue with RDS log file chunks larger than 10MB that caused
the collector to calculate log text source offsets incorrectly and could
lead to mangled log text in the pganalyze UI and incorrect log filtering
- This fixes an issue with RDS log file chunks larger than 10MB that caused
- Warn if some log lines will be ignored
- Some verbose logging settings can lead to log lines being ignored by the
collector for performance reasons: warn about this on startup
- Some verbose logging settings can lead to log lines being ignored by the
- Improve Aiven Service ID and Project ID detection from hostname
- Fix error handling when fetching stats
- The missing checks could previously lead to incomplete snapshots, possibly
resulting in tables or indexes temporarily disappearing in pganalyze
- The missing checks could previously lead to incomplete snapshots, possibly
- Fix error handling regarding reading SSL-related config values on startup
- Ignore non-Postgres URIs in environment on Heroku (@Preovaleo)
- Send additional Postgres table stats
- Send relpages, reltuples, relallvisible
- Send additional Postgres transaction metadata
- server level (new stats): current TXID and next MXID
- database level: age of datfrozenxid and datminmxid, also xact_commit and
xact_rollback - table level: the age of relfrozenxid and relminmxid
- Send Citus distributed index sizes
- Add
always_collect_system_data
config option- Also configurable with the
PGA_ALWAYS_COLLECT_SYSTEM_DATA
environment
variable - This is useful for package-based setups which monitor the local server by a
non-local IP
- Also configurable with the
- Update pg_query_go version to 2.2.0
- Install script: Detect aarch64 for Ubuntu/Debian package install
v0.46.1
- Fix Postgres 15 compatibility due to version check bug
- This fixes an issue with Postgres 15 only that caused the collector to reject
the newer pg_stat_statements version (1.10) by accident
- This fixes an issue with Postgres 15 only that caused the collector to reject
- Add packages for Ubuntu 22.04, RHEL9-based distributions and Fedora 36