{"id":353,"date":"2022-11-15T14:23:16","date_gmt":"2022-11-15T13:23:16","guid":{"rendered":"https:\/\/ptdb.ch\/?p=353"},"modified":"2022-11-15T14:23:16","modified_gmt":"2022-11-15T13:23:16","slug":"postgresql-how-to-upgrade-temboard-7-11-to-8-0","status":"publish","type":"post","link":"https:\/\/ptdb.ch\/?p=353","title":{"rendered":"PostgreSQL: How To Upgrade temBoard 7.11 to 8.0"},"content":{"rendered":"<p>Dalibo released yesterday (14.11.2022) temBoard version 8.0, which is quite a big one. Even the documentation page has changed. \ud83d\ude42 Here are the most important changes in this new release compared to version 7.11.<\/p>\n<h3>Breaking changes<\/h3>\n<ul>\n<li>temBoard UI dropped support for Internet Explorer 8. You may have issues with browsers older than 5 years.<\/li>\n<li>Dropped support for PostgreSQL 9.5 and 9.4. For both UI and agent.<\/li>\n<li>Dropped key-only authentication on agent. Access to UI grants full access on managed agent.<\/li>\n<li>New CLI for both UI and agent. temboard and temboard-agent are the single CLI entrypoints.<\/li>\n<li>Removed temboard &#8211;debug CLI option.<\/li>\n<li>Dropped commands temboard-agent-adduser and temboard-agent-password.<\/li>\n<li>Commands temboard-migratedb, temboard-agent-register are moved as subcommands of temboard and temboard-agent.<\/li>\n<li>temBoard UI dropped push-metrics handler from pre-6.0 push metric collect.<\/li>\n<li>temBoard UI RPM does not execute auto_configure.sh upon installation.<\/li>\n<li>temBoard UI RPM does not create temboard UNIX user. Use auto_configure.sh instead.<\/li>\n<li>temBoard Agent RPM does not create postgres UNIX user. Use PostgreSQL packages instead.<\/li>\n<li>Packages does not provide logrotate configuration anymore. temBoard can still log to file.<\/li>\n<li>pg_ctl agent parameter must not be quoted now, in temboard-agent.conf.<\/li>\n<li>Agent auto_configure.sh now requires a parameter: the UI url.<\/li>\n<li>temBoard agent does not provide legacy single-installation systemd unit file temboard-agent.service in favor of temboard-agent@.service.<\/li>\n<li>temBoard agent debian package does not provide legacy temboard-agent.init SysV script. Use sytemd instead.<\/li>\n<li>temBoard agent auto_configure.sh now generates a single configuration file instead of temboard-agent.conf.d\/auto.conf.<\/li>\n<li>temBoard agent auto_configure.sh does not configure file logging anymore.<\/li>\n<li>Dropped temBoard agent HTTP endpoint \/monitoring\/probe\/*, some \/dashboard\/ probes and more. Use temboard routes and temboard-agent routes to inspect availables HTTP URLs.<\/li>\n<li>Docker image for agent now configures agent with auto_configure.sh. temBoard agent configuration moved from \/etc\/temboard-agent to \/etc\/temboard-agent\/.<\/li>\n<\/ul>\n<h3>Deprecation<\/h3>\n<ul>\n<li>Running temBoard UI with Python 2.7 and Python 3.5 is deprecated. All RPM and deb packages ships with Python 3.<br \/>\nDebian stretch support is deprecated (EOL June 2022).<\/li>\n<\/ul>\n<h3>New Features<\/h3>\n<ul>\n<li>PostgreSQL 15 support.<\/li>\n<li>Unified authentication. Signing in UI open full DBA access to agents, without double login.<\/li>\n<li>Register instance without querying UI API using temboard register-instance.<\/li>\n<li>Download instance inventory as CSV.<\/li>\n<li>Automatically refresh introspection data from agent.<\/li>\n<li>New About temBoard page with detailed installation\u2019s informations.<\/li>\n<li>New About instance page with PostgreSQL, system and agent informations.<\/li>\n<li>OpenMetrics endpoint. Accessible using temBoard UI as authenticating proxy to agent.<\/li>\n<li>RHEL9, Debian Bookworm (testing) packages. Increase agent OOM score with systemd.<\/li>\n<li>Restyled documentation with improved search and navigation.<\/li>\n<li><\/li>\n<\/ul>\n<h3>Changes<\/h3>\n<ul>\n<li>Each temBoard release has it\u2019s own docker tag. e.g. dalibo\/temboard:8.0, dalibo\/temboard:8.0rc1, etc. See Docker Hub repositories dalibo\/temboard and dalibo\/temboard-agent.<\/li>\n<li>Streamlined docker images, basing on Debian Bullseye, with temBoard installed with APT instead of pip.<\/li>\n<li>Restart scheduler and worker pool background processes on crash.<\/li>\n<li>Improved error logging. Log format is now Postgres-like.<\/li>\n<\/ul>\n<h3>UI changes<\/h3>\n<ul>\n<li>Sign agent requests with an asymetric cryptographic key. New agent does not require double authentification anymore.<\/li>\n<li>New command temboard generate-key for generating signing key.<\/li>\n<li>New database migration engine. Dropped dependency on Alembic, Mako, etc.<\/li>\n<li>Move temboard-migratedb as temboard migratedb subcommand.<\/li>\n<li>New command temboard tasks flush to flush old tasks when upgrading.<\/li>\n<li>Fast collect of monitoring and statements metrics upon agent registration.<\/li>\n<li>Format PostgreSQL start time in dashboard as relative date.<\/li>\n<li>temBoard UI waits for locks in monitoring collect. Abort long collect task. New parameter [monitoring] collect_max_duration.<\/li>\n<li>temBoard UI now has API key authorization, use for \/metrics proxy to agent.<\/li>\n<li>New temBoard UI parameter [auth] allowed_ip to restrict API Key authorization. By default, only 127\/8 is allowed.<\/li>\n<li>Improved refresh error handling in dashboard, activity and home page. Error are now inlined instead of modal.<\/li>\n<li>temBoard UI now accept to serve plain HTTP. For development purpose.<\/li>\n<li>New commands temboard query-agent, temboard routes, temboard tasks run, temboard tasks schedule and temboard web for debugging.<\/li>\n<li>Handle SIGCHLD in temboard UI too. No more zombies.<\/li>\n<li>Limit activity view to 300 longest queries.<\/li>\n<\/ul>\n<h3>Agent changes<\/h3>\n<ul>\n<li>Unified authentification: agent now uses UI as source of identity.<\/li>\n<li>Dropped users file and related configuration.<\/li>\n<li>New command temboard-agent fetch-key to accept UI signing key.<\/li>\n<li>New option: [temboard] ui_url, pointing to UI URL.<\/li>\n<li>auto_configure.sh conditionnaly enable statements plugins.<\/li>\n<li>Move temboard-agent-register as temboard-agent register subcommand.<\/li>\n<li>New command temboard-agent discover to introspect temBoard agent, system and PostgreSQL.<\/li>\n<li>Refresh discover data on startup and Postgres connection recovery.<\/li>\n<li>temBoard agent pools connections to PostgreSQL used by web API, reducing connections stress on PostgreSQL.<\/li>\n<li>Heavily reduction of connection opened by dashboard.<\/li>\n<li>Drop agent configuration postgresql:instance in favor of Postgres setting cluster_name.<\/li>\n<li>Add new unified sessions and detailed locks endpoint.<\/li>\n<li>temBoard agent now depends on cryptography and bottle.<\/li>\n<li>New subcommands temboard-agent routes, temboard-agent tasks run and temboard-agent web for debugging.<\/li>\n<li>Monitoring purge_after default value is now set to 730 (2 years), it was empty before (no limit).<\/li>\n<\/ul>\n<p>In case you want to take a closer look at the change log, click on the following link.<\/p>\n<p><a href=\"https:\/\/temboard.readthedocs.io\/en\/latest\/changelog\/\">https:\/\/temboard.readthedocs.io\/en\/latest\/changelog\/<\/a><\/p>\n<p>You can compare changes between release 7.11 and 8.0 and see how many changes went into this release<\/p>\n<p><a href=\"https:\/\/github.com\/dalibo\/temboard\/compare\/7.11...v8.0\">https:\/\/github.com\/dalibo\/temboard\/compare\/7.11&#8230;v8.0<\/a><\/p>\n<p>However, in this blog post I would like to concentrate on the upgrade procedure to the version 8.0.<\/p>\n<p>Before you start, read the upgrade docs carefully. You can find them here.<\/p>\n<p><a href=\"https:\/\/temboard.readthedocs.io\/en\/latest\/server_upgrade\/\">https:\/\/temboard.readthedocs.io\/en\/latest\/server_upgrade\/<\/a><\/p>\n<p>From a high level view, the most important steps are:<\/p>\n<ul>\n<li>Backup your repository database<\/li>\n<li>Backup temboard.conf, temboard-agent.conf and other temboard related files<\/li>\n<li>Upgrade first the agents to 7.11 if not already done<\/li>\n<li>Upgrade temboard and the agent to 8.0<\/li>\n<\/ul>\n<p>In this blog post, I will jump right into the temboard upgrade process.<\/p>\n<p>Stop the temBoard server and agent and start with a clean log file.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ sudo systemctl stop temboard.service\n$ sudo systemctl stop temboard-agent@12-pg58888.service\n$ sudo systemctl reset-failed\n$ sudo systemctl is-system-running\nrunning\n \n$ cd \/var\/log\/temboard\/\n$ sudo mv temboard.log temboard.log.before_upgrade_to_8.0\n$\n<\/pre>\n<p>Upgrade the temBoard (UI) to 8.0<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ sudo yum localupdate temboard-8.0-1.el7.noarch.rpm\nLoaded plugins: enabled_repos_upload, langpacks, package_upload, product-id, search-disabled-repos, subscription-manager\nExamining temboard-8.0-1.el7.noarch.rpm: temboard-8.0-1.el7.noarch\nMarking temboard-8.0-1.el7.noarch.rpm as an update to temboard-7.11-1.el7.noarch\nResolving Dependencies\n--&gt; Running transaction check\n---&gt; Package temboard.noarch 0:7.11-1.el7 will be updated\n---&gt; Package temboard.noarch 0:8.0-1.el7 will be an update\n--&gt; Processing Dependency: python3-flask for package: temboard-8.0-1.el7.noarch\nepel\/x86_64\/metalink                                                                                                             |  18 kB  00:00:00\nepel                                                                                                                             | 4.7 kB  00:00:00\nrhel-7-server-extras-rpms                                                                                                        | 1.9 kB  00:00:00\nrhel-7-server-optional-rpms                                                                                                      | 2.2 kB  00:00:00\nrhel-7-server-rh-common-rpms                                                                                                     | 2.0 kB  00:00:00\nrhel-7-server-rpms                                                                                                               | 2.2 kB  00:00:00\nrhel-7-server-supplementary-rpms                                                                                                 | 2.6 kB  00:00:00\nrhel-server-rhscl-7-rpms                                                                                                         | 2.3 kB  00:00:00\n(1\/2): epel\/x86_64\/updateinfo                                                                                                    | 1.0 MB  00:00:02\n(2\/2): epel\/x86_64\/primary_db                                                                                                    | 7.0 MB  00:00:01\n--&gt; Processing Dependency: python3-future for package: temboard-8.0-1.el7.noarch\n--&gt; Processing Dependency: python3-tornado for package: temboard-8.0-1.el7.noarch\n--&gt; Processing Dependency: python36-cryptography for package: temboard-8.0-1.el7.noarch\n--&gt; Processing Dependency: python36-dateutil for package: temboard-8.0-1.el7.noarch\n--&gt; Processing Dependency: python36-sqlalchemy for package: temboard-8.0-1.el7.noarch\n--&gt; Running transaction check\n---&gt; Package python36-cryptography.x86_64 0:2.3-2.el7 will be installed\n--&gt; Processing Dependency: python36-asn1crypto &gt;= 0.21 for package: python36-cryptography-2.3-2.el7.x86_64\n--&gt; Processing Dependency: python36-cffi &gt;= 1.7 for package: python36-cryptography-2.3-2.el7.x86_64\n--&gt; Processing Dependency: python36-idna &gt;= 2.1 for package: python36-cryptography-2.3-2.el7.x86_64\n--&gt; Processing Dependency: python36-six &gt;= 1.4.1 for package: python36-cryptography-2.3-2.el7.x86_64\n---&gt; Package python36-dateutil.noarch 1:2.4.2-5.el7 will be installed\n---&gt; Package python36-flask.noarch 0:1.1.2-4.el7 will be installed\n--&gt; Processing Dependency: python36-click &gt;= 5.1 for package: python36-flask-1.1.2-4.el7.noarch\n--&gt; Processing Dependency: python36-itsdangerous &gt;= 0.24 for package: python36-flask-1.1.2-4.el7.noarch\n--&gt; Processing Dependency: python36-jinja2 &gt;= 2.10.1 for package: python36-flask-1.1.2-4.el7.noarch\n--&gt; Processing Dependency: python36-werkzeug &gt;= 0.15 for package: python36-flask-1.1.2-4.el7.noarch\n---&gt; Package python36-future.noarch 0:0.18.2-2.el7 will be installed\n---&gt; Package python36-sqlalchemy.x86_64 0:1.1.3-3.el7 will be installed\n---&gt; Package python36-tornado.x86_64 0:4.5.3-1.el7 will be installed\n--&gt; Processing Dependency: python36-pycurl for package: python36-tornado-4.5.3-1.el7.x86_64\n--&gt; Running transaction check\n---&gt; Package python36-asn1crypto.noarch 0:0.24.0-7.el7 will be installed\n---&gt; Package python36-cffi.x86_64 0:1.9.1-3.el7 will be installed\n--&gt; Processing Dependency: python36-pycparser for package: python36-cffi-1.9.1-3.el7.x86_64\n---&gt; Package python36-click.noarch 0:6.7-8.el7 will be installed\n---&gt; Package python36-idna.noarch 0:2.10-1.el7 will be installed\n---&gt; Package python36-itsdangerous.noarch 0:1.1.0-1.el7 will be installed\n---&gt; Package python36-jinja2.noarch 0:2.11.1-1.el7 will be installed\n--&gt; Processing Dependency: python36-markupsafe &gt;= 0.23 for package: python36-jinja2-2.11.1-1.el7.noarch\n---&gt; Package python36-pycurl.x86_64 0:7.43.0-7.el7 will be installed\n---&gt; Package python36-six.noarch 0:1.14.0-3.el7 will be installed\n---&gt; Package python36-werkzeug.noarch 0:1.0.1-1.el7 will be installed\n--&gt; Running transaction check\n---&gt; Package python36-markupsafe.x86_64 0:0.23-3.el7 will be installed\n---&gt; Package python36-pycparser.noarch 0:2.14-2.el7 will be installed\n--&gt; Processing Dependency: python36-ply for package: python36-pycparser-2.14-2.el7.noarch\n--&gt; Running transaction check\n---&gt; Package python36-ply.noarch 0:3.9-2.el7 will be installed\n--&gt; Finished Dependency Resolution\n\nDependencies Resolved\n\n========================================================================================================================================================\n Package                                 Arch                     Version                            Repository                                    Size\n========================================================================================================================================================\nUpdating:\n temboard                                noarch                   8.0-1.el7                          \/temboard-8.0-1.el7.noarch                   6.7 M\nInstalling for dependencies:\n python36-asn1crypto                     noarch                   0.24.0-7.el7                       epel                                         180 k\n python36-cffi                           x86_64                   1.9.1-3.el7                        epel                                         219 k\n python36-click                          noarch                   6.7-8.el7                          epel                                         127 k\n python36-cryptography                   x86_64                   2.3-2.el7                          epel                                         509 k\n python36-dateutil                       noarch                   1:2.4.2-5.el7                      epel                                          81 k\n python36-flask                          noarch                   1.1.2-4.el7                        epel                                         158 k\n python36-future                         noarch                   0.18.2-2.el7                       epel                                         775 k\n python36-idna                           noarch                   2.10-1.el7                         epel                                          99 k\n python36-itsdangerous                   noarch                   1.1.0-1.el7                        epel                                          33 k\n python36-jinja2                         noarch                   2.11.1-1.el7                       epel                                         238 k\n python36-markupsafe                     x86_64                   0.23-3.el7                         epel                                          32 k\n python36-ply                            noarch                   3.9-2.el7                          epel                                         103 k\n python36-pycparser                      noarch                   2.14-2.el7                         epel                                          95 k\n python36-pycurl                         x86_64                   7.43.0-7.el7                       epel                                         223 k\n python36-six                            noarch                   1.14.0-3.el7                       epel                                          34 k\n python36-sqlalchemy                     x86_64                   1.1.3-3.el7                        epel                                         1.6 M\n python36-tornado                        x86_64                   4.5.3-1.el7                        epel                                         718 k\n python36-werkzeug                       noarch                   1.0.1-1.el7                        epel                                         443 k\n\nTransaction Summary\n========================================================================================================================================================\nInstall             ( 18 Dependent packages)\nUpgrade  1 Package\n\nTotal size: 12 M\nTotal download size: 5.6 M\nIs this ok &#x5B;y\/d\/N]: y\nDownloading packages:\n(1\/17): python36-asn1crypto-0.24.0-7.el7.noarch.rpm                                                                                                 | 180 kB  00:00:03\n(2\/17): python36-cffi-1.9.1-3.el7.x86_64.rpm                                                                                                        | 219 kB  00:00:01\n(3\/17): python36-click-6.7-8.el7.noarch.rpm                                                                                                         | 127 kB  00:00:01\n(4\/17): python36-cryptography-2.3-2.el7.x86_64.rpm                                                                                                  | 509 kB  00:00:05\n(5\/17): python36-dateutil-2.4.2-5.el7.noarch.rpm                                                                                                    |  81 kB  00:00:00\n(6\/17): python36-flask-1.1.2-4.el7.noarch.rpm                                                                                                       | 158 kB  00:00:01\n(7\/17): python36-future-0.18.2-2.el7.noarch.rpm                                                                                                     | 775 kB  00:00:13\n(8\/17): python36-idna-2.10-1.el7.noarch.rpm                                                                                                         |  99 kB  00:00:00\n(9\/17): python36-itsdangerous-1.1.0-1.el7.noarch.rpm                                                                                                |  33 kB  00:00:00\n(10\/17): python36-jinja2-2.11.1-1.el7.noarch.rpm                                                                                                    | 238 kB  00:00:01\n(11\/17): python36-markupsafe-0.23-3.el7.x86_64.rpm                                                                                                  |  32 kB  00:00:00\n(12\/17): python36-ply-3.9-2.el7.noarch.rpm                                                                                                          | 103 kB  00:00:00\n(13\/17): python36-pycparser-2.14-2.el7.noarch.rpm                                                                                                   |  95 kB  00:00:00\n(14\/17): python36-pycurl-7.43.0-7.el7.x86_64.rpm                                                                                                    | 223 kB  00:00:04\n(15\/17): python36-sqlalchemy-1.1.3-3.el7.x86_64.rpm                                                                                                 | 1.6 MB  00:00:10\n(16\/17): python36-tornado-4.5.3-1.el7.x86_64.rpm                                                                                                    | 718 kB  00:00:07\n(17\/17): python36-werkzeug-1.0.1-1.el7.noarch.rpm                                                                                                   | 443 kB  00:00:02\n---------------------------------------------------------------------------------------------------------------------------------------------------------------------------\nTotal                                                                                                                                       95 kB\/s | 5.6 MB  00:00:59\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : python36-pycurl-7.43.0-7.el7.x86_64                                                                                                                    1\/19\n  Installing : python36-tornado-4.5.3-1.el7.x86_64                                                                                                                    2\/19\n  Installing : python36-itsdangerous-1.1.0-1.el7.noarch                                                                                                               3\/19\n  Installing : python36-markupsafe-0.23-3.el7.x86_64                                                                                                                  4\/19\n  Installing : python36-jinja2-2.11.1-1.el7.noarch                                                                                                                    5\/19\n  Installing : python36-future-0.18.2-2.el7.noarch                                                                                                                    6\/19\n  Installing : python36-asn1crypto-0.24.0-7.el7.noarch                                                                                                                7\/19\n  Installing : python36-idna-2.10-1.el7.noarch                                                                                                                        8\/19\n  Installing : python36-click-6.7-8.el7.noarch                                                                                                                        9\/19\n  Installing : 1:python36-dateutil-2.4.2-5.el7.noarch                                                                                                                10\/19\n  Installing : python36-ply-3.9-2.el7.noarch                                                                                                                         11\/19\n  Installing : python36-pycparser-2.14-2.el7.noarch                                                                                                                  12\/19\n  Installing : python36-cffi-1.9.1-3.el7.x86_64                                                                                                                      13\/19\n  Installing : python36-cryptography-2.3-2.el7.x86_64                                                                                                                14\/19\n  Installing : python36-sqlalchemy-1.1.3-3.el7.x86_64                                                                                                                15\/19\n  Installing : python36-werkzeug-1.0.1-1.el7.noarch                                                                                                                  16\/19\n  Installing : python36-flask-1.1.2-4.el7.noarch                                                                                                                     17\/19\n  Updating   : temboard-8.0-1.el7.noarch                                                                                                                             18\/19\n  Cleanup    : temboard-7.11-1.el7.noarch                                                                                                                            19\/19\nUploading Package Profile\nLoaded plugins: langpacks, product-id, subscription-manager\n  Verifying  : python36-flask-1.1.2-4.el7.noarch                                                                                                                      1\/19\n  Verifying  : python36-werkzeug-1.0.1-1.el7.noarch                                                                                                                   2\/19\n  Verifying  : python36-sqlalchemy-1.1.3-3.el7.x86_64                                                                                                                 3\/19\n  Verifying  : python36-pycparser-2.14-2.el7.noarch                                                                                                                   4\/19\n  Verifying  : python36-tornado-4.5.3-1.el7.x86_64                                                                                                                    5\/19\n  Verifying  : python36-ply-3.9-2.el7.noarch                                                                                                                          6\/19\n  Verifying  : 1:python36-dateutil-2.4.2-5.el7.noarch                                                                                                                 7\/19\n  Verifying  : python36-click-6.7-8.el7.noarch                                                                                                                        8\/19\n  Verifying  : python36-idna-2.10-1.el7.noarch                                                                                                                        9\/19\n  Verifying  : temboard-8.0-1.el7.noarch                                                                                                                             10\/19\n  Verifying  : python36-cryptography-2.3-2.el7.x86_64                                                                                                                11\/19\n  Verifying  : python36-asn1crypto-0.24.0-7.el7.noarch                                                                                                               12\/19\n  Verifying  : python36-cffi-1.9.1-3.el7.x86_64                                                                                                                      13\/19\n  Verifying  : python36-future-0.18.2-2.el7.noarch                                                                                                                   14\/19\n  Verifying  : python36-markupsafe-0.23-3.el7.x86_64                                                                                                                 15\/19\n  Verifying  : python36-itsdangerous-1.1.0-1.el7.noarch                                                                                                              16\/19\n  Verifying  : python36-jinja2-2.11.1-1.el7.noarch                                                                                                                   17\/19\n  Verifying  : python36-pycurl-7.43.0-7.el7.x86_64                                                                                                                   18\/19\n  Verifying  : temboard-7.11-1.el7.noarch                                                                                                                            19\/19\n\nDependency Installed:\n  python36-asn1crypto.noarch 0:0.24.0-7.el7   python36-cffi.x86_64 0:1.9.1-3.el7     python36-click.noarch 0:6.7-8.el7         python36-cryptography.x86_64 0:2.3-2.el7\n  python36-dateutil.noarch 1:2.4.2-5.el7      python36-flask.noarch 0:1.1.2-4.el7    python36-future.noarch 0:0.18.2-2.el7     python36-idna.noarch 0:2.10-1.el7\n  python36-itsdangerous.noarch 0:1.1.0-1.el7  python36-jinja2.noarch 0:2.11.1-1.el7  python36-markupsafe.x86_64 0:0.23-3.el7   python36-ply.noarch 0:3.9-2.el7\n  python36-pycparser.noarch 0:2.14-2.el7      python36-pycurl.x86_64 0:7.43.0-7.el7  python36-sqlalchemy.x86_64 0:1.1.3-3.el7  python36-tornado.x86_64 0:4.5.3-1.el7\n  python36-werkzeug.noarch 0:1.0.1-1.el7\n\nUpdated:\n  temboard.noarch 0:8.0-1.el7\n\nComplete!\nUploading Enabled Repositories Report\nLoaded plugins: langpacks, product-id, subscription-manager\n<\/pre>\n<p>Upgrade the temBoard agent to 8.0<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ sudo yum localupdate temboard-agent-8.0-1.el7.noarch.rpm\nLoaded plugins: enabled_repos_upload, langpacks, package_upload, product-id, search-disabled-repos, subscription-manager\nExamining temboard-agent-8.0-1.el7.noarch.rpm: temboard-agent-8.0-1.el7.noarch\nMarking temboard-agent-8.0-1.el7.noarch.rpm as an update to temboard-agent-7.11-1.el7.noarch\nResolving Dependencies\n--&gt; Running transaction check\n---&gt; Package temboard-agent.noarch 0:7.11-1.el7 will be updated\n---&gt; Package temboard-agent.noarch 0:8.0-1.el7 will be an update\n--&gt; Processing Dependency: python3-bottle for package: temboard-agent-8.0-1.el7.noarch\nrhel-7-server-extras-rpms                                                                                                                           | 1.9 kB  00:00:00\nrhel-7-server-optional-rpms                                                                                                                         | 2.2 kB  00:00:00\nrhel-7-server-rh-common-rpms                                                                                                                        | 2.0 kB  00:00:00\nrhel-7-server-rpms                                                                                                                                  | 2.2 kB  00:00:00\nrhel-7-server-supplementary-rpms                                                                                                                    | 2.6 kB  00:00:00\n--&gt; Running transaction check\n---&gt; Package python36-bottle.noarch 0:0.12.21-1.el7 will be installed\n--&gt; Finished Dependency Resolution\n\nDependencies Resolved\n\n===========================================================================================================================================================================\n Package                                Arch                          Version                                Repository                                               Size\n===========================================================================================================================================================================\nUpdating:\n temboard-agent                         noarch                        8.0-1.el7                              \/temboard-agent-8.0-1.el7.noarch                        944 k\nInstalling for dependencies:\n python36-bottle                        noarch                        0.12.21-1.el7                          epel                                                     93 k\n\nTransaction Summary\n===========================================================================================================================================================================\nInstall             ( 1 Dependent package)\nUpgrade  1 Package\n\nTotal size: 1.0 M\nTotal download size: 93 k\nIs this ok &#x5B;y\/d\/N]: y\nDownloading packages:\npython36-bottle-0.12.21-1.el7.noarch.rpm                                                                                                            |  93 kB  00:00:00\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : python36-bottle-0.12.21-1.el7.noarch                                                                                                                    1\/3\n  Updating   : temboard-agent-8.0-1.el7.noarch                                                                                                                         2\/3\nYou must restart manually temboard-agent services.\n  Cleanup    : temboard-agent-7.11-1.el7.noarch                                                                                                                        3\/3\nUploading Package Profile\nLoaded plugins: langpacks, product-id, subscription-manager\n  Verifying  : temboard-agent-8.0-1.el7.noarch                                                                                                                         1\/3\n  Verifying  : python36-bottle-0.12.21-1.el7.noarch                                                                                                                    2\/3\n  Verifying  : temboard-agent-7.11-1.el7.noarch                                                                                                                        3\/3\n\nDependency Installed:\n  python36-bottle.noarch 0:0.12.21-1.el7\n\nUpdated:\n  temboard-agent.noarch 0:8.0-1.el7\n\nComplete!\nUploading Enabled Repositories Report\nLoaded plugins: langpacks, product-id, subscription-manager\n<\/pre>\n<p>Check if the new temboard ui and temboard agent version is correct.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ temboard --version\ntemBoard 8.0 (\/usr\/bin\/temboard)\nSystem Red Hat Enterprise Linux Server 7.9 (Maipo)\nPython 3.6.8 (\/usr\/bin\/python3)\ncryptography 2.3\nTornado 4.5.3\nlibpq 9.2.24\npsycopg2 2.7.7 (dt dec pq3 ext)\nSQLAlchemy 1.1.3\n\n\n$ temboard-agent --version\ntemBoard agent 8.0 (\/usr\/bin\/temboard-agent)\nSystem Red Hat Enterprise Linux Server 7.9 (Maipo)\nPython 3.6.8 (\/usr\/bin\/python3)\nbottle 0.12.21\ncryptography 2.3\nlibpq 9.2.24\npsycopg2 2.7.7 (dt dec pq3 ext)\n<\/pre>\n<p>Upgrade Database Schema<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ su - temboard\nPassword:\nLast login: Thu May 19 10:34:56 CEST 2022 on pts\/0\n\n\n$ temboard migratedb upgrade\nINFO:  app: Using config file \/etc\/temboard\/temboard.conf.\nINFO:  migratedb: Upgrading database to version 007_drop-alembic.sql.\nINFO:  migratedb: Upgrading database to version 008_monitoring-archive-wait-lock.sql.\nINFO:  migratedb: Upgrading database to version 009_apikey.sql.\nINFO:  migratedb: Upgrading database to version 010_discover.sql.\nINFO:  migratedb: Database up to date.\n<\/pre>\n<p>&#8230; entries from the postgresql log<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n2022-11-15 13:09:27.287 CET &#x5B;22178] LOG:  statement: DROP TABLE IF EXISTS &quot;application&quot;.&quot;alembic_version&quot;;\n        CREATE TABLE IF NOT EXISTS &quot;application&quot;.&quot;schema_migration_log&quot; (\n                version TEXT UNIQUE NOT NULL PRIMARY KEY,\n                comment TEXT,\n                cdate TIMESTAMP DEFAULT NOW()\n        );\n\n2022-11-15 13:09:27.418 CET &#x5B;22178] LOG:  statement: CREATE OR REPLACE FUNCTION archive_current_metrics(table_name TEXT, record_type TEXT, query TEXT) RETURNS TABLE(tblname TEXT, nb_rows INTEGER)\n        LANGUAGE plpgsql\n        AS $$\n        DECLARE\n          v_table_current TEXT;\n          v_table_history TEXT;\n          v_query TEXT;\n          i INTEGER;\n        BEGIN\n          v_table_current := table_name || '_current';\n          v_table_history := table_name || '_history';\n          -- Lock _current table to prevent concurrent updates\n          EXECUTE 'LOCK TABLE ' || v_table_current || ' IN SHARE MODE';\n          v_query := replace(query, '#history_table#', v_table_history);\n          v_query := replace(v_query, '#current_table#', v_table_current);\n          v_query := replace(v_query, '#record_type#', record_type);\n          -- Move data into _history table\n          EXECUTE v_query;\n          GET DIAGNOSTICS i = ROW_COUNT;\n          -- Truncate _current table\n          EXECUTE 'TRUNCATE '||v_table_current;\n          -- Return each history table name and the number of rows inserted\n          RETURN QUERY SELECT v_table_history, i;\n        END;\n        $$;\n\n2022-11-15 13:09:27.430 CET &#x5B;22178] LOG:  statement: CREATE TABLE &quot;application&quot;.&quot;apikeys&quot; (\n                id SERIAL PRIMARY KEY,\n                secret TEXT NOT NULL UNIQUE,\n                comment TEXT,\n                cdate TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),\n                edate TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() + '6 months'::interval\n        );\n\n2022-11-15 13:09:27.443 CET &#x5B;22178] LOG:  statement: ALTER TABLE &quot;application&quot;.&quot;instances&quot;\n        ADD COLUMN &quot;cdate&quot; TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),\n        ADD COLUMN &quot;discover&quot; JSONB,\n        ADD COLUMN &quot;discover_date&quot; TIMESTAMP WITH TIME ZONE,\n        ADD COLUMN &quot;discover_etag&quot; TEXT;\n\n        UPDATE &quot;application&quot;.&quot;instances&quot;\n        SET &quot;discover&quot; = json_build_object(\n          'system', json_build_object(\n                  'cpu_count', &quot;cpu&quot;,\n                        'memory', &quot;memory_size&quot;,\n                        'fqdn', &quot;hostname&quot;\n          ),\n                'postgres', json_build_object(\n                  'version', &quot;pg_version&quot;,\n                  'version_summary', &quot;pg_version_summary&quot;,\n                        'port', &quot;pg_port&quot;,\n                        'data_directory', &quot;pg_data&quot;\n                ),\n                'temboard', json_build_object()\n        );\n\n        ALTER TABLE &quot;application&quot;.&quot;instances&quot;\n        DROP COLUMN &quot;cpu&quot;,\n        DROP COLUMN &quot;memory_size&quot;,\n        DROP COLUMN &quot;pg_data&quot;,\n        DROP COLUMN &quot;pg_version&quot;,\n        DROP COLUMN &quot;pg_version_summary&quot;;\n<\/pre>\n<p>Flush background tasks with the following command:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ temboard tasks flush\nINFO:  app: Using config file \/etc\/temboard\/temboard.conf.\nINFO:  taskmanager: Flushed 8 tasks.\n<\/pre>\n<p>Generate Signing Key<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ temboard generate-key\nINFO:  app: Using config file \/etc\/temboard\/temboard.conf.\nINFO:  generate_key: Generating RSA key with openssl at \/etc\/temboard\/signing-private.pem.\nGenerating RSA private key, 4096 bit long modulus\n......................................++\n.++\ne is 65537 (0x10001)\nINFO:  generate_key: Exporting public key at \/etc\/temboard\/signing-public.pem.\n\n<\/pre>\n<p>Add the Environment to the service file of tembaord server and agent.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ cd \/etc\/systemd\/system\/multi-user.target.wants\/\n\n$ sudo vi temboard-agent@12-pg58888.service\n\n&#x5B;Unit]\nDescription=PostgreSQL Remote Control Agent %I\nAfter=network.target postgresql@%i.service\nAssertPathExists=\/etc\/temboard-agent\/%I\/temboard-agent.conf\n\n&#x5B;Service]\nType=simple\nUser=postgres\nGroup=postgres\nEnvironment=&quot;SYSTEMD=1&quot;\nEnvironment=&quot;LD_LIBRARY_PATH=\/app\/lib\/postgres\/pgproduct\/pg-12.12\/lib&quot;\nExecStart=\/usr\/bin\/temboard-agent -c \/etc\/temboard-agent\/%I\/temboard-agent.conf\n# Increase OOM Score to ensure agent is killed before Postgres.\nOOMScoreAdjust=15\n\n&#x5B;Install]\nWantedBy=multi-user.target\n\n$ sudo vi temboard.service\n&#x5B;Unit]\nDescription=temBoard Server\nAfter=network.target\n\n&#x5B;Service]\nType=simple\nUser=temboard\nGroup=temboard\nEnvironment=&quot;SYSTEMD=1&quot;\nEnvironment=&quot;LD_LIBRARY_PATH=\/app\/lib\/postgres\/pgproduct\/pg-12.12\/lib&quot;\nExecStart=\/usr\/bin\/temboard -c \/etc\/temboard\/temboard.conf serve\nExecReload=\/bin\/kill -HUP $MAINPID\n\n&#x5B;Install]\nWantedBy=multi-user.target\n\n\n$ sudo systemctl daemon-reload\n$ sudo systemctl reset-failed\n$ sudo systemctl is-system-running\nrunning\n<\/pre>\n<p>I usually adjust the temboard service as well with the nice value of -19. (Nice=-19). This is an optional step and not mandatory. I do it only to give the temBoard service the highest CPU priority.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ cd \/etc\/systemd\/system\/temboard.service.d\/\n$ cat override.conf\n&#x5B;Service]\nNice=-19\n#Environment=PERF=y\n<\/pre>\n<p>Startup the temBoard UI and the agent.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ sudo systemctl daemon-reload\n$ sudo systemctl start temboard.service\n$ sudo systemctl start temboard-agent@12-pg58888.service\n<\/pre>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ sudo systemctl status temboard.service\n\u25cf temboard.service - temBoard Server\n   Loaded: loaded (\/usr\/lib\/systemd\/system\/temboard.service; enabled; vendor preset: disabled)\n  Drop-In: \/etc\/systemd\/system\/temboard.service.d\n           \u2514\u2500override.conf\n   Active: active (running) since Tue 2022-11-15 13:17:46 CET; 39s ago\n Main PID: 32439 (temboard)\n   CGroup: \/system.slice\/temboard.service\n           \u251c\u250032439 temboard: web\n           \u251c\u250032454 temboard: worker pool\n           \u251c\u250032456 temboard: scheduler\n           \u251c\u250032466 temboard: task temboardui.plugins.statements.pull_data_worker\n           \u251c\u250032467 temboard: task temboardui.plugins.statements.statements_purge_worker\n           \u251c\u250032468 temboard: task temboardui.plugins.monitoring.aggregate_data_worker\n           \u251c\u250032470 temboard: task temboardui.plugins.monitoring.history_tables_worker\n           \u2514\u250032471 temboard: task temboardui.plugins.monitoring.purge_data_worker\n\nNov 15 13:18:24 host01 temboard&#x5B;32439]: statements: Successfully pulled statements data for h51lya0.suvanet.ch:44077.\nNov 15 13:18:24 host01 temboard&#x5B;32439]: statements: Pulling statements from h50ly30.suvanet.ch:44013.\nNov 15 13:18:24 host01 temboard&#x5B;32439]: statements: Successfully pulled statements data for h50ly30.suvanet.ch:44013.\nNov 15 13:18:24 host01 temboard&#x5B;32439]: statements: Pulling statements from h53ly30.suvanet.ch:44036.\nNov 15 13:18:24 host01 temboard&#x5B;32439]: statements: Successfully pulled statements data for h53ly30.suvanet.ch:44036.\n...\n...\n<\/pre>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ sudo systemctl status temboard-agent@12-pg58888.service\n\u25cf temboard-agent@12-pg58888.service - PostgreSQL Remote Control Agent 12\/pg58888\n   Loaded: loaded (\/usr\/lib\/systemd\/system\/temboard-agent@.service; enabled; vendor preset: disabled)\n   Active: failed (Result: exit-code) since Tue 2022-11-15 13:17:56 CET; 51s ago\n  Process: 32602 ExecStart=\/usr\/bin\/temboard-agent -c \/etc\/temboard-agent\/%I\/temboard-agent.conf (code=exited, status=1\/FAILURE)\n Main PID: 32602 (code=exited, status=1\/FAILURE)\n\nNov 15 13:17:55 host01 systemd&#x5B;1]: Started PostgreSQL Remote Control Agent 12\/pg58888.\nNov 15 13:17:56 host01 temboard-agent&#x5B;32602]: INFO:  app: Using config file \/etc\/temboard-agent\/12\/pg58888\/temboard-agent.conf.\nNov 15 13:17:56 host01 temboard-agent&#x5B;32602]: CRITICAL:  app: You must not quote string in configuration (administration.pg.ctl).\nNov 15 13:17:56 host01 systemd&#x5B;1]: temboard-agent@12-pg58888.service: main process exited, code=exited, status=1\/FAILURE\nNov 15 13:17:56 host01 systemd&#x5B;1]: Unit temboard-agent@12-pg58888.service entered failed state.\nNov 15 13:17:56 host01 systemd&#x5B;1]: temboard-agent@12-pg58888.service failed.\n<\/pre>\n<p>Starting the Agent failed because we do have some quoted strings in our temboard-agent.conf file. To fix that, remove the quotes from the pg_ctl line. This is not a bug. This change was clearly documented in the release note.<\/p>\n<ul>\n<li>pg_ctl agent parameter must not be quoted now, in temboard-agent.conf.<\/li>\n<\/ul>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;administration]\npg_ctl = '\/app\/lib\/postgres\/pgproduct\/pg-12.8\/bin\/pg_ctl %s -D \/app\/lib\/postgres\/pgdata\/12\/PGMP01A'\n\n&#x5B;administration]\npg_ctl = \/app\/lib\/postgres\/pgproduct\/pg-12.12\/bin\/pg_ctl %s -D \/app\/lib\/postgres\/pgdata\/12\/PGMP01A\n<\/pre>\n<p>Now we can try again.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ sudo systemctl start temboard-agent@12-pg58888.service\n$ sudo systemctl status temboard-agent@12-pg58888.service\n\u25cf temboard-agent@12-pg58888.service - PostgreSQL Remote Control Agent 12\/pg58888\n   Loaded: loaded (\/usr\/lib\/systemd\/system\/temboard-agent@.service; enabled; vendor preset: disabled)\n   Active: failed (Result: exit-code) since Tue 2022-11-15 13:21:47 CET; 4s ago\n  Process: 18696 ExecStart=\/usr\/bin\/temboard-agent -c \/etc\/temboard-agent\/%I\/temboard-agent.conf (code=exited, status=1\/FAILURE)\n Main PID: 18696 (code=exited, status=1\/FAILURE)\n\nNov 15 13:21:43 host01 systemd&#x5B;1]: Started PostgreSQL Remote Control Agent 12\/pg58888.\nNov 15 13:21:46 host01 temboard-agent&#x5B;18696]: INFO:  app: Using config file \/etc\/temboard-agent\/12\/pg58888\/temboard-agent.conf.\nNov 15 13:21:47 host01 temboard-agent&#x5B;18696]: app: Failed to load signing key: &#x5B;Errno 2] No such file or directory: '\/etc\/temboard-agent\/12\/pg58888\/sig...blic.pem'\nNov 15 13:21:47 host01 systemd&#x5B;1]: temboard-agent@12-pg58888.service: main process exited, code=exited, status=1\/FAILURE\nNov 15 13:21:47 host01 systemd&#x5B;1]: Unit temboard-agent@12-pg58888.service entered failed state.\nNov 15 13:21:47 host01 systemd&#x5B;1]: temboard-agent@12-pg58888.service failed.\nHint: Some lines were ellipsized, use -l to show in full.\n\n$ cat \/var\/log\/temboard-agent\/12-pg58888.log\n...\n...\n2022-11-15 13:21:47 CET temboardagent&#x5B;18696] CRITICAL:  app: Failed to load signing key: &#x5B;Errno 2] No such file or directory: '\/etc\/temboard-agent\/12\/pg58888\/signing-public.pem'\n<\/pre>\n<p>Opsss &#8230; again an error. This time, the public key is missing.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ cd \/etc\/temboard\/\n$ cp -p signing-public.pem \/etc\/temboard-agent\/12\/pg58888\/\n\n$ cat signing-public.pem\n-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArlYjR\/+Y8I5GH0ZAXafg\nYuyj8kM7RoaPODtKTkOw3s2E99v8BjbO\/NO0ZjUMpjfNHtwKL0Ahkcvs6gB\/f7H2\n...\n...\ne4HucKDQj3ZbYr+CN5ztUXhSvr1OVl4jnTOJVDkJtg6LL6V8\/X7Q2X6K0SDB1oqf\nt1O4jlkbfv1Bn2gV9\/MqztZ++gudq3bEtFkLi0ICh5LKnPsDXWgI1rKc2hGFYAq5\nlk83GCc7fd9LuKmpTgybwAsYnq5i6FG+uGSfQCDObh\/wauqlevSD3EXbKaynk9hM\nH4eWB9JmniAbMUXjPkfeGasCAwEAAQ==\n-----END PUBLIC KEY-----\n<\/pre>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ sudo systemctl start temboard-agent@12-pg58888.service\n$ sudo systemctl status temboard-agent@12-pg58888.service\n\u25cf temboard-agent@12-pg58888.service - PostgreSQL Remote Control Agent 12\/pg58888\n   Loaded: loaded (\/usr\/lib\/systemd\/system\/temboard-agent@.service; enabled; vendor preset: disabled)\n   Active: active (running) since Tue 2022-11-15 13:24:34 CET; 5s ago\n Main PID: 21132 (temboard-agent)\n   CGroup: \/system.slice\/system-temboard\\x2dagent.slice\/temboard-agent@12-pg58888.service\n           \u251c\u250021132 temboard-agent: web\n           \u251c\u250021138 temboard-agent: worker pool\n           \u251c\u250021139 temboard-agent: scheduler\n           \u2514\u250021153 temboard-agent: task temboardagent.plugins.dashboard.dashboard_collector_batch_worker\n\nNov 15 13:24:34 h50ly20 systemd&#x5B;1]: Started PostgreSQL Remote Control Agent 12\/pg58888.\nNov 15 13:24:34 h50ly20 temboard-agent&#x5B;21132]: INFO:  app: Using config file \/etc\/temboard-agent\/12\/pg58888\/temboard-agent.conf.\n<\/pre>\n<p>Now, everything is fine and we are ready to go. \ud83d\ude42<\/p>\n<h3>Conclusion<\/h3>\n<p>That was quite a huge new release from Dalibo with quite a lot cool new stuff. I will write a few blog posts about the new features in temBoard version 8.0 very soon. Have fun with the new version.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dalibo released yesterday (14.11.2022) temBoard version 8.0, which is quite a big one. Even the documentation page has changed. \ud83d\ude42 Here are the most important changes in this new release compared to version 7.11. Breaking changes temBoard UI dropped support for Internet Explorer 8. You may have issues with browsers older than 5 years. Dropped [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[10,6],"tags":[17,21,24],"class_list":["post-353","post","type-post","status-publish","format-standard","hentry","category-centos-os","category-postgresql","tag-monitoring","tag-postgresql","tag-temboard","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PostgreSQL: How To Upgrade temBoard 7.11 to 8.0 - ptdb - Platinum DB<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ptdb.ch\/?p=353\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL: How To Upgrade temBoard 7.11 to 8.0 - ptdb - Platinum DB\" \/>\n<meta property=\"og:description\" content=\"Dalibo released yesterday (14.11.2022) temBoard version 8.0, which is quite a big one. Even the documentation page has changed. \ud83d\ude42 Here are the most important changes in this new release compared to version 7.11. Breaking changes temBoard UI dropped support for Internet Explorer 8. You may have issues with browsers older than 5 years. Dropped [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ptdb.ch\/?p=353\" \/>\n<meta property=\"og:site_name\" content=\"ptdb - Platinum DB\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-15T13:23:16+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ptdb.ch\/?p=353\",\"url\":\"https:\/\/ptdb.ch\/?p=353\",\"name\":\"PostgreSQL: How To Upgrade temBoard 7.11 to 8.0 - ptdb - Platinum DB\",\"isPartOf\":{\"@id\":\"https:\/\/ptdb.ch\/#website\"},\"datePublished\":\"2022-11-15T13:23:16+00:00\",\"author\":{\"@id\":\"https:\/\/ptdb.ch\/#\/schema\/person\/0b7baf52d23e71d85e1c95442306090b\"},\"breadcrumb\":{\"@id\":\"https:\/\/ptdb.ch\/?p=353#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ptdb.ch\/?p=353\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ptdb.ch\/?p=353#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ptdb.ch\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL: How To Upgrade temBoard 7.11 to 8.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ptdb.ch\/#website\",\"url\":\"https:\/\/ptdb.ch\/\",\"name\":\"ptdb - Platinum DB\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ptdb.ch\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/ptdb.ch\/#\/schema\/person\/0b7baf52d23e71d85e1c95442306090b\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ptdb.ch\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1a3dffc48c5f6bae0b88a9f0b2a986d48d322673fbc2880c5abbfab96e45da8a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1a3dffc48c5f6bae0b88a9f0b2a986d48d322673fbc2880c5abbfab96e45da8a?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/ptdb.ch\"],\"url\":\"https:\/\/ptdb.ch\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PostgreSQL: How To Upgrade temBoard 7.11 to 8.0 - ptdb - Platinum DB","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ptdb.ch\/?p=353","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL: How To Upgrade temBoard 7.11 to 8.0 - ptdb - Platinum DB","og_description":"Dalibo released yesterday (14.11.2022) temBoard version 8.0, which is quite a big one. Even the documentation page has changed. \ud83d\ude42 Here are the most important changes in this new release compared to version 7.11. Breaking changes temBoard UI dropped support for Internet Explorer 8. You may have issues with browsers older than 5 years. Dropped [&hellip;]","og_url":"https:\/\/ptdb.ch\/?p=353","og_site_name":"ptdb - Platinum DB","article_published_time":"2022-11-15T13:23:16+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"21 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ptdb.ch\/?p=353","url":"https:\/\/ptdb.ch\/?p=353","name":"PostgreSQL: How To Upgrade temBoard 7.11 to 8.0 - ptdb - Platinum DB","isPartOf":{"@id":"https:\/\/ptdb.ch\/#website"},"datePublished":"2022-11-15T13:23:16+00:00","author":{"@id":"https:\/\/ptdb.ch\/#\/schema\/person\/0b7baf52d23e71d85e1c95442306090b"},"breadcrumb":{"@id":"https:\/\/ptdb.ch\/?p=353#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ptdb.ch\/?p=353"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ptdb.ch\/?p=353#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ptdb.ch\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL: How To Upgrade temBoard 7.11 to 8.0"}]},{"@type":"WebSite","@id":"https:\/\/ptdb.ch\/#website","url":"https:\/\/ptdb.ch\/","name":"ptdb - Platinum DB","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ptdb.ch\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/ptdb.ch\/#\/schema\/person\/0b7baf52d23e71d85e1c95442306090b","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ptdb.ch\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1a3dffc48c5f6bae0b88a9f0b2a986d48d322673fbc2880c5abbfab96e45da8a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1a3dffc48c5f6bae0b88a9f0b2a986d48d322673fbc2880c5abbfab96e45da8a?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/ptdb.ch"],"url":"https:\/\/ptdb.ch\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/ptdb.ch\/index.php?rest_route=\/wp\/v2\/posts\/353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ptdb.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ptdb.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ptdb.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ptdb.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=353"}],"version-history":[{"count":0,"href":"https:\/\/ptdb.ch\/index.php?rest_route=\/wp\/v2\/posts\/353\/revisions"}],"wp:attachment":[{"href":"https:\/\/ptdb.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ptdb.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ptdb.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}