PostgreSQL custom background worker (BGW) for monitoring configuration log changes
C PLpgSQL Makefile
Switch branches/tags
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
META.json
Makefile
README.md
config_log--0.1.7.sql
config_log.c
config_log.control

README.md

config_log 0.1.7

config_log is an experimental extension which implements a custom background worker to monitor postgresql.conf and record any changes to a database table.

config_log requires PostgreSQL 9.3 or later and will not work in earlier versions.

To build config_log, just do this:

make
make install

If you encounter an error such as:

"Makefile", line 8: Need an operator

You need to use GNU make, which may well be installed on your system as gmake:

gmake
gmake install
gmake installcheck

If you encounter an error such as:

make: pg_config: Command not found

Be sure that you have pg_config installed and in your path. If you used a package management system such as RPM to install PostgreSQL, be sure that the -devel package is also installed. If necessary tell the build process where to find it:

env PG_CONFIG=/path/to/pg_config make && make install

Once config_log is compiled and installed, it needs to be added to a database in the PostgreSQL database cluster whose postgresql.conf you wish to monitor. It can only be installed in one database within the cluster.

By default, config_log expects to be installed into the default 'postgres' database's 'public' schema. The default values can be overridden by changing the following GUC settings:

config_log.database = 'some_other_db'
config_log.schema   = 'different_schema'

Note that the schema must appear in the superuser's search path.

Connect to the target database as a superuser and execute:

CREATE EXTENSION config_log

This will install the database objects required for this extension.

Following this step, the module must be added to postgresql.conf's 'shared_preload_libraries' parameter and the server restarted.

Log output

config_log will produce some log output, prefixed by "config_log:".

Following a successful startup, it will output the following:

LOG:  config_log: initialized, database objects validated
LOG:  config_log: pg_settings_logger() executed
LOG:  config_log: No configuration changes detected

Following a SIGHUP, it will output something like the following:

LOG:  received SIGHUP, reloading configuration files
LOG:  parameter "temp_buffers" changed to "64MB"
LOG:  config_log: received sighup
LOG:  config_log: pg_settings_logger() executed
LOG:  config_log: Configuration changes recorded

Usage

For more information please see these blog posts:

Links