{"id":16076,"date":"2021-04-07T13:16:53","date_gmt":"2021-04-07T11:16:53","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/"},"modified":"2021-04-07T13:16:53","modified_gmt":"2021-04-07T11:16:53","slug":"temboard-on-sles15-2-the-agent","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/","title":{"rendered":"temBoard on SLES15 &#8211; 2 &#8211; The agent"},"content":{"rendered":"<p>In the <a href=\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-1-the-webui\/\" target=\"_blank\" rel=\"noopener\">last post<\/a> we&#8217;ve installed the temBoard repository and the UI. As this alone is not so much fun, we&#8217;ll be installing the temBoard agent on another SLES 15 machine in this post. We&#8217;ll end up with one PostgreSQL instance registered in the temBoard repository and this instance is constantly monitored. With the repository and the UI we had the requirement to use Python 2.7, but this is not anymore required for the temBoard agent. Lets go.<\/p>\n<p><!--more--><\/p>\n<p>What I&#8217;ve already prepared, is the PostgreSQL instance we want the agent to monitor:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] psql -l\n                                  List of databases\n   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   \n-----------+----------+----------+-------------+-------------+-----------------------\n postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | \n template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c\/postgres          +\n           |          |          |             |             | postgres=CTc\/postgres\n template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c\/postgres          +\n           |          |          |             |             | postgres=CTc\/postgres\n(3 rows)\n<\/pre>\n<p>As pip3 is already available we can go straight ahead and install the temBoard agent:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] sudo sudo pip3 install temboard-agent\nCollecting temboard-agent\n  Downloading https:\/\/files.pythonhosted.org\/packages\/58\/6e\/3d5c772587e48b17cc6fa5a1569daab0d879845828c792f16ecec49564ae\/temboard_agent-7.6-py2.py3-none-any.whl (115kB)\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 122kB 1.5MB\/s \npygobject 3.34.0 requires pycairo&gt;=1.11.1, which is not installed.\nInstalling collected packages: temboard-agent\nSuccessfully installed temboard-agent-7.6\nYou are using pip version 10.0.1, however version 21.0.1 is available.\nYou should consider upgrading via the 'pip install --upgrade pip' command.\n<\/pre>\n<p>First issue, but easy to fix:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] sudo zypper in cairo-devel\npostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] sudo pip3 install pycairo\nCollecting pycairo\n  Using cached pycairo-1.20.0.tar.gz (344 kB)\n  Installing build dependencies ... done\n  Getting requirements to build wheel ... done\n    Preparing wheel metadata ... done\nBuilding wheels for collected packages: pycairo\n  Building wheel for pycairo (PEP 517) ... done\n  Created wheel for pycairo: filename=pycairo-1.20.0-cp36-cp36m-linux_x86_64.whl size=246164 sha256=e25a94a3a0801e25db8eee9b1080d793b7a6dd313b12b011e56888509e411362\n  Stored in directory: \/root\/.cache\/pip\/wheels\/09\/91\/ec\/f970f7c0cd3fba778c7150409181074fdfc2af42148486561d\nSuccessfully built pycairo\nInstalling collected packages: pycairo\nSuccessfully installed pycairo-1.20.0\n<\/pre>\n<p>Once again:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3,5]\">\npostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] sudo sudo pip3 install temboard-agent\nRequirement already satisfied: temboard-agent in \/usr\/lib\/python3.6\/site-packages (7.6)\npostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] which temboard-agent\n\/usr\/bin\/temboard-agent\npostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] temboard-agent --version\nTraceback (most recent call last):\n  File \"\/usr\/bin\/temboard-agent\", line 7, in \n    from temboardagent.scripts.agent import main\n  File \"\/usr\/lib\/python3.6\/site-packages\/temboardagent\/scripts\/agent.py\", line 12, in \n    from ..cli import Application\n  File \"\/usr\/lib\/python3.6\/site-packages\/temboardagent\/cli.py\", line 5, in \n    from .postgres import Postgres\n  File \"\/usr\/lib\/python3.6\/site-packages\/temboardagent\/postgres.py\", line 8, in \n    import psycopg2.extensions\nModuleNotFoundError: No module named 'psycopg2'\n<\/pre>\n<p>For connecting to PostgreSQL psycopg2 must be there as well:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,7]\">\npostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] sudo pip3 install psycopg2-binary\nCollecting psycopg2-binary\n  Downloading psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_x86_64.whl (3.0 MB)\n     |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 3.0 MB 1.3 MB\/s \nInstalling collected packages: psycopg2-binary\nSuccessfully installed psycopg2-binary-2.8.6\npostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] temboard-agent --version\n INFO: Starting temboard-agent 7.6.\n7.6\n<\/pre>\n<p>The agent is ready, lets proceed with the configuration. As with the UI in the last post, there is a configuration script:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] ls -l \/usr\/share\/temboard-agent\/\ntotal 24\n-rwxr-xr-x 1 root root 7318 Apr  1 11:32 auto_configure.sh\n-rwxr-xr-x 1 root root  682 Apr  1 11:32 purge.sh\ndrwxr-xr-x 1 root root  276 Apr  1 11:32 quickstart\n-rwxr-xr-x 1 root root  674 Apr  1 11:32 restart-all.sh\n-rw-r--r-- 1 root root 2843 Apr  1 11:32 temboard-agent.conf\n-rw-r--r-- 1 root root  176 Apr  1 11:32 temboard-agent.logrotate\n<\/pre>\n<p>Again, make sure that psql can be executed and all the environment variable match your environment:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@localhost:\/u02\/pgdata\/13\/PG1\/ [PG1] sudo su -\nlocalhost:~ $ export ETCDIR=\/u01\/app\/postgres\/local\/dmk\/etc\/\nlocalhost:~ $ export VARDIR=\/u01\/app\/postgres\/local\/dmk\/bin\nlocalhost:~ $ export LOGDIR=\/u01\/app\/postgres\/local\/dmk\/log\nlocalhost:~ $ export SYSUSER=postgres\nlocalhost:~ $ export PGHOST=\/tmp\nlocalhost:~ $ export PATH=\/u01\/app\/postgres\/product\/13\/db_2\/bin:$PATH\nlocalhost:~ $ sudo -Eu postgres psql \ncould not change directory to \"\/root\": Permission denied\npsql (13.2)\nType \"help\" for help.\n\npostgres=# \n<\/pre>\n<p>Once you&#8217;ve that ready run the configuration:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nlocalhost:~ $ \/usr\/share\/temboard-agent\/auto_configure.sh\nFQDN is not properly configured. Set agent hostname with TEMBOARD_HOSTNAME env var..\nFailure. See \/var\/log\/temboard-agent-auto-configure.log for details.\n<\/pre>\n<p>Ok, this error message is clear:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nlocalhost:~ $ export TEMBOARD_HOSTNAME=sles15tbagent.it.dbi-services.com\nlocalhost:~ $ \/usr\/share\/temboard-agent\/auto_configure.sh\nUsing hostname sles15tbagent.it.dbi-services.com.\nConfiguring for PostgreSQL user postgres.\nConfiguring for cluster on port 5432.\nConfiguring for cluster at \/u02\/pgdata\/13\/PG1.\nConfiguring temboard-agent in \/u01\/app\/postgres\/local\/dmk\/etc\/\/13\/pg5432\/temboard-agent.conf .\nSaving auto-configuration in \/u01\/app\/postgres\/local\/dmk\/etc\/\/13\/pg5432\/temboard-agent.conf.d\/auto.conf\nConfiguring temboard-agent to run on port 2345.\nEnabling systemd unit temboard-agent@13-pg5432.service.\n\nSuccess. You can now start temboard-agent using:\n\n    systemctl start temboard-agent@13-pg5432.service\n\nFor registration, use secret key deb91ab1322007536e2e8284b26bdb5c .\nSee documentation for detailed instructions.\n<\/pre>\n<p>As we had troubles with the systemd unit file in the last post, lets have a look at it:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nlocalhost:~ $ systemctl status temboard-agent@13-pg5432.service\n\u25cf temboard-agent@13-pg5432.service - PostgreSQL Remote Control Agent 13\/pg5432\n   Loaded: loaded (\/usr\/lib\/systemd\/system\/temboard-agent@.service; enabled; vendor preset: disabled)\n   Active: inactive (dead)\nlocalhost:~ $ cat \/usr\/lib\/systemd\/system\/temboard-agent@.service\n[Unit]\nDescription=PostgreSQL Remote Control Agent %I\nAfter=network.target postgresql@%i.service\nAssertPathExists=\/etc\/temboard-agent\/%I\/temboard-agent.conf\n\n[Service]\nType=simple\nUser=postgres\nGroup=postgres\nExecStart=\/usr\/bin\/env SYSTEMD=1 temboard-agent -c \/etc\/temboard-agent\/%I\/temboard-agent.conf\n\n[Install]\nWantedBy=multi-user.target\n<\/pre>\n<p>This again points to the wrong configuration file, ours is here:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nlocalhost:~ $ cat \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/temboard-agent.conf\n#\n#   T E M B O A R D   A G E N T   C O N F I G U R A T I O N\n#\n# This file contains all possible settings of temBoard agent, with defaults for\n# quickstart. temBoard agent overrides values of this file with .conf files\n# found in directory named after this filename, with .d suffix. e.g.\n# temboard-agent.conf.d\/auto.conf is likely to override some values of this\n# file.\n#\n\n[temboard]\n# Bind port.\nport = 2345\n# Bind address.\naddress = 192.168.22.211\n# User &amp; password file.\nusers = users\n# Plugins in use.\nplugins = [\"monitoring\", \"dashboard\", \"pgconf\", \"administration\", \"activity\", \"maintenance\", \"statements\"]\n# SSL: certificat file path (.pem)\nssl_cert_file = \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/server.pem\n# SSL: private key file path (.key)\nssl_key_file = \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/server.key\n# Hostname must be an unique and valid FQDN : e.g. db1.mydomain.foo\n# If you leave this empty, then the system wide hostname will be used\n# Note : `localhost` is not a correct value\nhostname = sles15tbagent\n# Key\nkey = SECRETKEYTOBECHANGED\n\n[postgresql]\n# Unix socket path.\nhost = \/tmp\n# PG port number.\nport = 5432\n# Super-user name.\nuser = postgres\n# Super-user password.\n# password =\n# Default database.\ndbname = postgres\n# Instance name.\ninstance = main\n\n[logging]\n# Available methods for logging: stderr, syslog or file\nmethod = stderr\n# Syslog facility.\n# facility = local0\n# Log destination, should be \/dev\/log for syslog on Linux system.\n# When using file logging method, this is referencing the log file path.\n# destination = \/var\/log\/temboard-agent\/temboard-agent.log\n# Log level, can be: DEBUG, INFO, WARNING, ERROR or CRITICAL.\nlevel = INFO\n\n### PLUGINS ###\n[dashboard]\n# Dashboard plugin part\n# Interval, in second, between each run of the process collecting\n# data used to render the dashboard. Default: 2\n# scheduler_interval = 2\n# Number of record to keep. Default: 150\n# history_length = 150\n\n[monitoring]\n# Monitoring plugin part.\n# DB name list (comma separator) to supervise. * for all.\ndbnames = *\n# List of probes to run, comma separator, * for all.\n# Available probes: bgwriter,blocks,btree_bloat,cpu,db_size,filesystems_size,heap_bloat,loadavg,locks,memory,process,replication_connection,replication_lag,sessions,tblspc_size,temp_files_size_delta,wal_files,xacts\n# when monitoring a standby server, 'wal_file' probe shouldn't be loaded.\nprobes = *\n# Interval, in second, between each run of the process executing\n# the probes. Default: 60\n# scheduler_interval = 60\n\n[administration]\n# External command used for start\/stop PostgreSQL.\n# This commands actually works on Debian jessie.\npg_ctl = '\/usr\/lib\/postgresql\/9.4\/bin\/pg_ctl %s -D \/var\/lib\/postgresql\/9.4'\n\n[statements]\n# Statements plugin part.\n# DB name hosting pg_stat_statements view (the one where the extension has\n# been created with \"CREATE EXTENSION\")\ndbname = postgres\n<\/pre>\n<p>Once more, adjust the the systemd service file (I am creating a static one here):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nlocalhost:~ $ cat \/usr\/lib\/systemd\/system\/temboard-agent@.service\n[Unit]\nDescription=PostgreSQL Remote Control Agent %I\nAfter=network.target postgresql@%i.service\nAssertPathExists=\/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/temboard-agent.conf\n\n[Service]\nType=simple\nUser=postgres\nGroup=postgres\nExecStart=\/usr\/bin\/env SYSTEMD=1 temboard-agent -c \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/temboard-agent.conf\n\n[Install]\nWantedBy=multi-user.target\nlocalhost:~ $ mv \/usr\/lib\/systemd\/system\/temboard-agent@.service \/usr\/lib\/systemd\/system\/temboard-agent.service\nlocalhost:~ $ systemctl daemon-reload\nlocalhost:~ $ systemctl status temboard-agent.service\n\u25cf temboard-agent.service - PostgreSQL Remote Control Agent \n   Loaded: loaded (\/usr\/lib\/systemd\/system\/temboard-agent.service; disabled; vendor preset: disabled)\n   Active: inactive (dead)\n<\/pre>\n<p>Before starting with systemd, lets try to start with the postgres user. Before we do that we need to create a user which will be used for authentication later on:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nlocalhost:~ $ su - postgres\npostgres@localhost:\/home\/postgres\/ [pg132] temboard-agent-adduser -c \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/temboard-agent.conf\n INFO: Starting temboard-agent-adduser 7.6.\nERROR: Invalid temboard_ssl_key_file from config: \/etc\/ssl\/private\/temboard-agent-13-pg5432.key: File not found...\nCRITI: Failed to load configuration.\npostgres@localhost:\/home\/postgres\/ [pg132] sudo ls -l \/etc\/ssl\/private\/temboard-agent-13-pg5432.key\n-rw------- 1 root root 1704 Apr  1 11:46 \/etc\/ssl\/private\/temboard-agent-13-pg5432.key\n<\/pre>\n<p>Again the issue with the key file, so:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@localhost:\/home\/postgres\/ [pg132] sudo mv \/etc\/ssl\/private\/temboard-agent-13-pg5432.key \/u01\/app\/postgres\/local\/dmk\/etc\/\npostgres@localhost:\/home\/postgres\/ [pg132] sudo chown postgres:postgres \/u01\/app\/postgres\/local\/dmk\/etc\/temboard-agent-13-pg5432.key\npostgres@localhost:\/home\/postgres\/ [pg132] cat \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/temboard-agent.conf | grep key\n# SSL: private key file path (.key)\nssl_key_file = \/u01\/app\/postgres\/local\/dmk\/etc\/temboard-agent-13-pg5432.key\nkey = SECRETKEYTOBECHANGED\n<\/pre>\n<p>Once more:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@localhost:\/home\/postgres\/ [pg132] temboard-agent-adduser -c \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/temboard-agent.conf\n INFO: Starting temboard-agent-adduser 7.6.\nERROR: Invalid temboard_ssl_key_file from config: \/etc\/ssl\/private\/temboard-agent-13-pg5432.key: File not found...\nCRITI: Failed to load configuration.\n<\/pre>\n<p>Seems the location of the key file is somehow hard coded, so workaround this like this:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@localhost:\/home\/postgres\/ [pg132] sudo ln -s \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/temboard-agent.key \/etc\/ssl\/private\/temboard-agent-13-pg5432.key\npostgres@localhost:\/home\/postgres\/ [pg132] sudo chmod 755 \/etc\/ssl\/private\npostgres@localhost:\/home\/postgres\/ [pg132] ls \/etc\/ssl\/private\/temboard-agent-13-pg5432.key\n\/etc\/ssl\/private\/temboard-agent-13-pg5432.key\npostgres@localhost:\/home\/postgres\/ [pg132] temboard-agent-adduser -c \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/temboard-agent.conf\n INFO: Starting temboard-agent-adduser 7.6.\nUsername: admin\nPassword: \nRetype password: \nDone.\n<\/pre>\n<p>The user\/password combination will be written to the users file:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@localhost:\/home\/postgres\/ [pg132] cat \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/users \nadmin:xiet7KLumux50Q2dmV\/FBue2zqtexElavkVAKnEYN\/rw2YLIn51TQsXb3u8FPm4wiuHUTtEjjvBIrtBPAgRMsA==\n<\/pre>\n<p>That should be all and we should be able to start the agent:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@localhost:\/home\/postgres\/ [pg132] temboard-agent --config \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/temboard-agent.conf \n INFO: Starting temboard-agent 7.6.\n INFO: Found plugin monitoring = temboardagent.plugins.monitoring:MonitoringPlugin.\n INFO: Found plugin dashboard = temboardagent.plugins.dashboard:DashboardPlugin.\n INFO: Found plugin pgconf = temboardagent.plugins.pgconf:PgConfPlugin.\n...\n INFO: Starting .\n INFO: Starting .\n INFO: Starting .\n<\/pre>\n<p>Looks fine, lets try with systemd:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\nsles15tbagent:\/home\/postgres $ systemctl start temboard-agent.service\nsles15tbagent:\/home\/postgres $ systemctl status temboard-agent.service\n\u25cf temboard-agent.service - PostgreSQL Remote Control Agent \n   Loaded: loaded (\/usr\/lib\/systemd\/system\/temboard-agent.service; disabled; vendor preset: disabled)\n   Active: active (running) since Sat 2021-04-03 14:42:21 CEST; 4s ago\n Main PID: 9299 (temboard-agent)\n    Tasks: 5\n   CGroup: \/system.slice\/temboard-agent.service\n           \u251c\u25009299 temboard-agent: 13\/pg5432: main process\n           \u251c\u25009301 temboard-agent: 13\/pg5432: worker pool\n           \u2514\u25009302 temboard-agent: 13\/pg5432: scheduler\n\nsles15tbagent:\/home\/postgres $ ps -ef | grep temboard\npostgres  9299     1  0 14:42 ?        00:00:00 temboard-agent: 13\/pg5432: main process\npostgres  9301  9299  0 14:42 ?        00:00:00 temboard-agent: 13\/pg5432: worker pool\npostgres  9302  9299  0 14:42 ?        00:00:00 temboard-agent: 13\/pg5432: scheduler\nroot      9804  9249  0 14:44 pts\/1    00:00:00 grep --color=auto temboard\n<\/pre>\n<p>The final step is to register the agent to the WebUI:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@sles15tbagent:\/home\/postgres\/ [PG1] temboard-agent-register -c \/u01\/app\/postgres\/local\/dmk\/etc\/13\/pg5432\/temboard-agent.conf --host $(hostname --fqdn) --port 2345 --groups default https:\/\/192.168.22.210:8888\n INFO: Starting temboard-agent-register 7.6.\n INFO: Getting system &amp; PostgreSQL informations from the agent (https:\/\/sles15tbagent:2345\/discover) ...\nLogin at https:\/\/192.168.22.210:8888 ...\n Username: admin\n Password: \nRegistering instance\/agent to https:\/\/192.168.22.210:8888 ...\nDone.\n<\/pre>\n<p>Heading over to the WebUI confirms, that the agent is registered and the PostgreSQL instance is monitored:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg\" alt=\"\" width=\"542\" height=\"312\" class=\"aligncenter size-full wp-image-49097\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord4.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord4.jpg\" alt=\"\" width=\"1365\" height=\"557\" class=\"aligncenter size-full wp-image-49099\" \/><\/a><\/p>\n<p>So, even if there are no pre-build packages for your distribution, it should be quite easy to get temBoard up and running.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last post we&#8217;ve installed the temBoard repository and the UI. As this alone is not so much fun, we&#8217;ll be installing the temBoard agent on another SLES 15 machine in this post. We&#8217;ll end up with one PostgreSQL instance registered in the temBoard repository and this instance is constantly monitored. With the repository [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":16077,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[143,77,2315],"type_dbi":[],"class_list":["post-16076","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-monitoring","tag-postgresql","tag-temboard"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>temBoard on SLES15 - 2 - The agent - dbi Blog<\/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:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"temBoard on SLES15 - 2 - The agent\" \/>\n<meta property=\"og:description\" content=\"In the last post we&#8217;ve installed the temBoard repository and the UI. As this alone is not so much fun, we&#8217;ll be installing the temBoard agent on another SLES 15 machine in this post. We&#8217;ll end up with one PostgreSQL instance registered in the temBoard repository and this instance is constantly monitored. With the repository [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-07T11:16:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"542\" \/>\n\t<meta property=\"og:image:height\" content=\"312\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"temBoard on SLES15 &#8211; 2 &#8211; The agent\",\"datePublished\":\"2021-04-07T11:16:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/\"},\"wordCount\":367,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg\",\"keywords\":[\"Monitoring\",\"PostgreSQL\",\"temBoard\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/\",\"name\":\"temBoard on SLES15 - 2 - The agent - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg\",\"datePublished\":\"2021-04-07T11:16:53+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg\",\"width\":542,\"height\":312},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"temBoard on SLES15 &#8211; 2 &#8211; The agent\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"temBoard on SLES15 - 2 - The agent - dbi Blog","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:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/","og_locale":"en_US","og_type":"article","og_title":"temBoard on SLES15 - 2 - The agent","og_description":"In the last post we&#8217;ve installed the temBoard repository and the UI. As this alone is not so much fun, we&#8217;ll be installing the temBoard agent on another SLES 15 machine in this post. We&#8217;ll end up with one PostgreSQL instance registered in the temBoard repository and this instance is constantly monitored. With the repository [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/","og_site_name":"dbi Blog","article_published_time":"2021-04-07T11:16:53+00:00","og_image":[{"width":542,"height":312,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg","type":"image\/jpeg"}],"author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"temBoard on SLES15 &#8211; 2 &#8211; The agent","datePublished":"2021-04-07T11:16:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/"},"wordCount":367,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg","keywords":["Monitoring","PostgreSQL","temBoard"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/","url":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/","name":"temBoard on SLES15 - 2 - The agent - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg","datePublished":"2021-04-07T11:16:53+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/tempbaord3.jpg","width":542,"height":312},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/temboard-on-sles15-2-the-agent\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"temBoard on SLES15 &#8211; 2 &#8211; The agent"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=16076"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16076\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/16077"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=16076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=16076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=16076"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=16076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}