PostgreSQL: How to Upgrade temBoard from 9.0.1 to 10.0.0

Dalibo released on the 08th of December temBoard version 10.0.0. The new release does not come with  a lot of new features, however, it is still worth upgrading, because temBoard 10.0.0 supports now PostgreSQL 18 and Red Hat 10.

The top changes are

  • Fix register-instance CLI
  • Fix running daemonized
  • Raise proper error on unknown environment
  • Improve alerting performance
  • Support Tornado 6.4 on RHEL9
  • Postgres 18 support
  • Requires Python 3.9
  • Packages for Debian Trixie
  • Packages for RHEL 10
  • Add cookie_timeout to UI configuration
  • Drop PyPI availability. Use APT/YUM repositories or GitHub releases
  • Deprecated: agent plugin administration is ignored
  • Add Databases list in CSV Export
  • Allow password reset in login page
  • Add pagination in the UI home page
  • UI colorblind-friendly improvements

For more information take a look at the following link

https://temboard.readthedocs.io/en/latest/changelog/

You can compare changes between release 9.0.1 and 10.0.0 and see how many changes went into this release

https://github.com/dalibo/temboard/compare/v9.0.1…v10.0.0

However, in this blog post I would like to focus on the upgrade procedure to the version 10.0.0.

Before you start, read the upgrade docs carefully. You can find them here.

https://temboard.readthedocs.io/en/latest/server_upgrade/

From a high level view, the most important steps are:

  • Download the rpm files for your Linux release (RHEL 9.x in my case)
    https://github.com/dalibo/temboard
  • Backup your repository database
  • Backup temboard.conf, temboard-agent.conf and other temboard related files
  • Upgrade first the agents to at least 9.0.1 if not already done
  • Upgrade temboard to 10.0.0
  • Upgrade temboard agents to 10.0.0

In this blog post, I will jump right into the temBoard server and temBoard Agent upgrade process.

Check the installed version.

$ rpm -qa | grep temboard
temboard-9.0.1-1.el9.noarch
temboard-agent-9.0.1-1.el9.noarch

Stop the temBoard server and agent and start with a clean log file.

$ sudo systemctl stop temboard-agent@PGMP01A.service
$ sudo systemctl stop temboard.service
$ sudo systemctl reset-failed
$ sudo systemctl is-system-running
running
$ cd /var/log/temboard/
$ sudo mv temboard.log temboard.log.before_upgrade_to_10.0.0
$ cd /etc/temboard/; cp -p temboard.conf temboard.conf.20251209a

Run the localupdate command with the new rpm.

$ sudo dnf localupdate temboard-10.0.0-1.el9.x86_64.rpm
Updating Subscription Management repositories.

This system has release set to 9 and it receives updates only for this release.

Red Hat Satellite Client 6 for RHEL 9 x86_64 (RPMs) 39 kB/s | 2.3 kB 00:00
Red Hat CodeReady Linux Builder for RHEL 9 x86_64 (RPMs) 72 kB/s | 2.9 kB 00:00
Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs) 57 kB/s | 2.9 kB 00:00
Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs) 63 kB/s | 2.6 kB 00:00
Red Hat Enterprise Linux 9 for x86_64 - Supplementary (RPMs) 41 kB/s | 2.0 kB 00:00
Dependencies resolved.
==========================================================================================================================================================================================
Package Architecture Version Repository Size
==========================================================================================================================================================================================
Upgrading:
temboard x86_64 10.0.0-1.el9 @commandline 4.9 M

Transaction Summary
==========================================================================================================================================================================================
Upgrade 1 Package

Total size: 4.9 M
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Upgrading : temboard-10.0.0-1.el9.x86_64 1/2
Running scriptlet: temboard-10.0.0-1.el9.x86_64 1/2
Running scriptlet: temboard-9.0.1-1.el9.noarch 2/2
Cleanup : temboard-9.0.1-1.el9.noarch 2/2
Running scriptlet: temboard-9.0.1-1.el9.noarch 2/2
Verifying : temboard-10.0.0-1.el9.x86_64 1/2
Verifying : temboard-9.0.1-1.el9.noarch 2/2
Installed products updated.

Upgraded:
temboard-10.0.0-1.el9.x86_64

Complete!

Now upgrade the temBoard agent.

$ sudo dnf localupdate temboard-agent-10.0.0-1.el9.noarch.rpm
Updating Subscription Management repositories.

This system has release set to 9 and it receives updates only for this release.

Red Hat Satellite Client 6 for RHEL 9 x86_64 (RPMs) 38 kB/s | 2.3 kB 00:00
Red Hat CodeReady Linux Builder for RHEL 9 x86_64 (RPMs) 55 kB/s | 2.9 kB 00:00
Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs) 54 kB/s | 2.9 kB 00:00
Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs) 54 kB/s | 2.6 kB 00:00
Red Hat Enterprise Linux 9 for x86_64 - Supplementary (RPMs) 35 kB/s | 2.0 kB 00:00
Dependencies resolved.
==========================================================================================================================================================================================
Package Architecture Version Repository Size
==========================================================================================================================================================================================
Upgrading:
temboard-agent noarch 10.0.0-1.el9 @commandline 307 k

Transaction Summary
==========================================================================================================================================================================================
Upgrade 1 Package

Total size: 307 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Upgrading : temboard-agent-10.0.0-1.el9.noarch 1/2
Running scriptlet: temboard-agent-10.0.0-1.el9.noarch 1/2
Running scriptlet: temboard-agent-9.0.1-1.el9.noarch 2/2
Cleanup : temboard-agent-9.0.1-1.el9.noarch 2/2
Running scriptlet: temboard-agent-9.0.1-1.el9.noarch 2/2
Verifying : temboard-agent-10.0.0-1.el9.noarch 1/2
Verifying : temboard-agent-9.0.1-1.el9.noarch 2/2
Installed products updated.

Upgraded:
temboard-agent-10.0.0-1.el9.noarch

Complete!

Run the temBoard migration script. Before doing that, you need to switch to the temboard OS user.

$ su - temboard
Password:
Last login: Mon Dec 8 20:50:42 CET 2025 from 10.86.48.22 on pts/1
temboard@host01:/var/lib/temboard
$

You might also want to check the help page, to see all available commands.

$ /usr/bin/temboard --help
INFO: app: Starting temboard. version=10.0.0
usage: temboard [-h] [-c CONFIGFILE] [--verbose] [-V] COMMAND ...

temBoard UI 10.0.0.

COMMAND is optional. Default command is `serve`, the combined
service. See available commands below.

optional arguments:
-h, --help show this help message and exit
-c CONFIGFILE, --config CONFIGFILE
Configuration file
--verbose, --debug Enable verbose messages for temBoard.
-V, --version show version and exit

Available commands:
COMMAND Name of one sub-command described bellow.
apikey Manage API keys.
generate-key Generate signing key.
migratedb Manage temBoard own database.
query-agent Query a temBoard agent
register-instance Out-of-bound registration of a PostgreSQL instance.
routes List HTTP routes map.
serve Combined web server and background workers.
tasks Manage background tasks.
web Standalone web server.

Now run the migratedb script.


$ temboard migratedb upgrade
INFO: app: Starting temboard. version=10.0.0
INFO: app: Using config file /etc/temboard/temboard.conf.

This time, you will not see any entries in the postgresql database log file, because no SQL is applied this time.

...
...

Adjust the temBoard systemd service.

$ cd /etc/systemd/system/
$ sudo vi temboard.service
$ cat temboard.service
[Unit]
Description=temBoard Server
After=network.target

[Service]
Type=simple
User=temboard
Group=temboard
Environment="SYSTEMD=1"
Environment="LD_LIBRARY_PATH=/app/lib/postgres/pgproduct/pg-18.1/lib"
ExecStart=/usr/bin/temboard -c /etc/temboard/temboard.conf serve
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

Adjust the temBoard agent systemd service.

$ cd /etc/systemd/system/multi-user.target.wants/
$ sudo vi temboard-agent@PGMP01A.service
postgres@host01:/etc/systemd/system/multi-user.target.wants/ [PGMP01A] cat temboard-agent@PGMP01A.service
[Unit]
Description=PostgreSQL Remote Control Agent %I
After=network.target postgresql@%i.service
AssertPathExists=/etc/temboard-agent/%I/temboard-agent.conf

[Service]
Type=simple
User=postgres
Group=postgres
Environment="SYSTEMD=1"
Environment="LD_LIBRARY_PATH=/app/lib/postgres/pgproduct/pg-18.1/lib"
ExecStart=/usr/bin/temboard-agent -c /etc/temboard-agent/%I/temboard-agent.conf serve
# Increase OOM Score to ensure agent is killed before Postgres.
OOMScoreAdjust=15

[Install]
WantedBy=multi-user.target

Remove the deprecated agent administration plugin.

$ cd /etc/temboard-agent/PGMP01A/
$ cp -p temboard-agent.conf temboard-agent.conf.20251209a

Remove the following block.

[administration]
# Path to pg_ctl. %s is either start, restart or reload.
pg_ctl = /app/lib/postgres/pgproduct/pg-18.1/bin/pg_ctl %s -D /app/lib/postgres/pgdata/18/PGMP01A

To activate the new systemd files, you got to reload the systemd daemon.

$ sudo systemctl reset-failed
$ sudo systemctl daemon-reload
$

Check the rpm packages.

$ rpm -qa | grep temboard
temboard-10.0.0-1.el9.x86_64
temboard-agent-10.0.0-1.el9.noarch

Now we can start the services.

$ sudo systemctl start temboard.service
$ sudo systemctl start temboard-agent@PGMP01A.service

Check if everything is running as expected.

$ sudo systemctl status temboard.service
● temboard.service - temBoard Server
Loaded: loaded (/etc/systemd/system/temboard.service; disabled; preset: disabled)
Drop-In: /etc/systemd/system/temboard.service.d
└─override.conf
Active: active (running) since Tue 2025-12-09 08:53:30 CET; 15s ago
Main PID: 181243 (temboard)
Tasks: 30 (limit: 306180)
Memory: 651.1M
CPU: 6.465s
CGroup: /system.slice/temboard.service
├─181243 "temboard: web"
├─181262 "temboard: scheduler"
├─181263 "temboard: worker pool"
├─181278 "temboard: task temboardui.plugins.monitoring.aggregate_data_worker"
├─181279 "temboard: task temboardui.plugins.monitoring.history_tables_worker"
├─181281 "temboard: task temboardui.plugins.monitoring.purge_data_worker"
├─181285 "temboard: task temboardui.plugins.statements.pull_data_worker"
├─181287 "temboard: task temboardui.plugins.statements.statements_purge_worker"
├─181308 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181309 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181312 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181314 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181316 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181318 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181319 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181323 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181324 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181325 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181327 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181329 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181331 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181332 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181333 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181334 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181336 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181340 "temboard: task temboardui.plugins.monitoring.collector_batch"
├─181342 "temboard: task temboardui.plugins.monitoring.collector_batch"
└─181345 "temboard: task temboardui.plugins.monitoring.collector_batch"

Dec 09 08:53:30 host01 systemd[1]: Started temBoard Server.
Dec 09 08:53:31 host01 temboard[181243]: INFO: app: Starting temboard. version=10.0.0
Dec 09 08:53:31 host01 temboard[181243]: INFO: app: Using config file /etc/temboard/temboard.conf.

Check the agent as well.

$ sudo systemctl status temboard-agent@PGMP01A.service
● temboard-agent@PGMP01A.service - PostgreSQL Remote Control Agent PGMP01A
Loaded: loaded (/usr/lib/systemd/system/temboard-agent@.service; enabled; preset: disabled)
Active: active (running) since Tue 2025-12-09 08:53:37 CET; 41s ago
Main PID: 181451 (temboard-agent)
Tasks: 6 (limit: 306180)
Memory: 33.4M
CPU: 548ms
CGroup: /system.slice/system-temboard\x2dagent.slice/temboard-agent@PGMP01A.service
├─181451 "temboard-agent: PGMP01A: web"
├─181453 "temboard-agent: PGMP01A: scheduler"
├─181454 "temboard-agent: PGMP01A: worker pool"
└─181467 "temboard-agent: PGMP01A: task temboardagent.plugins.dashboard.dashboard_collector_batch_worker"

Dec 09 08:53:37 host01 systemd[1]: Started PostgreSQL Remote Control Agent PGMP01A.
Dec 09 08:53:37 host01 temboard-agent[181451]: INFO: app: Starting temboard-agent. version=10.0.0
Dec 09 08:53:37 host01 temboard-agent[181451]: INFO: app: Using config file /etc/temboard-agent/PGMP01A/temboard-agent.conf.
Dec 09 08:53:37 host01 temboard-agent[181451]: WARNING: agent: Deprecated: agent plugin administration is ignored

Check if the new temboard ui and temboard agent version is correct.

$ temboard --version
INFO: app: Starting temboard. version=10.0.0
temBoard 10.0.0 (/usr/bin/temboard)
System Red Hat Enterprise Linux 9.6 (Plow)
Python 3.9.21 (/usr/bin/python3.9)
cryptography 36.0.1
Tornado 6.4.2
Flask 3.1.2
libpq 17.5
psycopg2 2.8.6 (dt dec pq3 ext lo64)
SQLAlchemy 1.4.54
$ temboard-agent --version
INFO: app: Starting temboard-agent. version=10.0.0
temBoard agent 10.0.0 (/usr/bin/temboard-agent)
System Red Hat Enterprise Linux 9.6 (Plow)
Python 3.9.21 (/usr/bin/python3.9)
bottle 0.13.4
cryptography 36.0.1
libpq 17.5
psycopg2 2.8.6 (dt dec pq3 ext lo64)

Now, everything is fine and we are ready to go.

Conclusion

That new release from Dalibo included mainly PostgreSQL 18 and Red Hat 10 compatibility and a few bug fixes. However, this is still an important release for all people that are running PostgreSQL 18. I will write a few blog posts about the cool stuff in temBoard version 10.0.0 very soon. Have fun with the new version.