{"id":16868,"date":"2021-11-29T12:56:23","date_gmt":"2021-11-29T11:56:23","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/"},"modified":"2021-11-29T12:56:23","modified_gmt":"2021-11-29T11:56:23","slug":"open-source-monitoring-solutions-1-zabbix-server-setup","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/","title":{"rendered":"Open source monitoring solutions (1) &#8211; Zabbix server setup"},"content":{"rendered":"<p>We are often asked which monitoring solution we recommend for PostgreSQL, by people attending our <a href=\"https:\/\/www.dbi-services.com\/trainings\/type\/open-source-db-en\/\" target=\"_blank\" rel=\"noopener\">PostgreSQL workshops<\/a>. We usually answer: What do you have in place already? If a solution already is in place, the most obvious way is trying to integrate into the existing solution. If nothing is there already, you have plenty of choices. You can find some of them on <a href=\"https:\/\/www.dbi-services.com\/blog\/?s=Monitoring+tools+for+PostgreSQL\" target=\"_blank\" rel=\"noopener\">this blog<\/a>, but the list is quite old. Usually, PostgreSQL is not the only component to monitor, so a proper solution needs to come with agents\/integrations\/extensions, whatever you call it, for all the components which are critical for your environment. This makes the decision quite hard, as you have plenty of requirements and choices. That&#8217;s why I thought, that starting a little blog series about open source monitoring solutions that might give the right hints for choosing a solutions that fits for you, is good idea.<\/p>\n<p><!--more--><\/p>\n<p>One of the well established, more than 20 years old, solution you might want to look at, is <a href=\"https:\/\/www.zabbix.com\/\" target=\"_blank\" rel=\"noopener\">Zabbix<\/a>. Zabbix, like most of the tools, comes with a server part and an agent that will be be deployed on the targets. You can download it pre-packaged for most of the well known Linux distributions from <a href=\"https:\/\/www.zabbix.com\/download\" target=\"_blank\" rel=\"noopener\">here<\/a>. Another option is to install Zabbix from source code, which can be downloaded from <a href=\"https:\/\/www.zabbix.com\/download\" target=\"_blank\" rel=\"noopener\">here<\/a>. Zabbix uses a database to store it&#8217;s data, and of course I&#8217;ll use PostgreSQL for that. Other options are <a href=\"https:\/\/www.zabbix.com\/documentation\/current\/manual\/appendix\/install\/db_scripts\" target=\"_blank\" rel=\"noopener\">MySQL, Oracle and TimescaleDB<\/a>.<\/p>\n<p>For PostgreSQL there is not much to do. Initialize a new cluster:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] mkdir -p \/u02\/pgdata\/14\/zabbix\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] initdb \/u02\/pgdata\/14\/zabbix\/\n<\/pre>\n<p>Create a systemd service definition so the instance will start automatically when the node comes up:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] cat \/etc\/systemd\/system\/postgres-zabbix.service \n[Unit]\nDescription=PostgreSQL for Zabbix\nAfter=tuned.service\n\n[Service]\nUser=postgres\nType=notify\nExecStart=\/u01\/app\/postgres\/product\/14\/db_1\/bin\/postgres -D \/u02\/pgdata\/14\/zabbix\/\nExecReload=\/u01\/app\/postgres\/product\/14\/db_1\/bin\/pg_ctl -D \/u02\/pgdata\/14\/zabbix\/ reload\nKillMode=mixed\nKillSignal=SIGINT\nTimeoutSec=0\n\n[Install]\nWantedBy=multi-user.target\n<\/pre>\n<p>That&#8217;s it, once the service is started this is the status you should see:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/etc\/systemd\/system\/ [pg141] systemctl status postgres-zabbix.service\n\u25cf postgres-zabbix.service - PostgreSQL for Zabbix\n     Loaded: loaded (\/etc\/systemd\/system\/postgres-zabbix.service; enabled; vendor preset: enabled)\n     Active: active (running) since Sun 2021-11-28 14:57:48 CET; 4s ago\n   Main PID: 1311 (postgres)\n      Tasks: 9 (limit: 1133)\n     Memory: 19.0M\n        CPU: 80ms\n     CGroup: \/system.slice\/postgres-zabbix.service\n             \u251c\u25001311 \/u01\/app\/postgres\/product\/14\/db_1\/bin\/postgres -D \/u02\/pgdata\/14\/zabbix\/\n             \u251c\u25001312 postgres: zabbix: logger\n             \u251c\u25001314 postgres: zabbix: checkpointer\n             \u251c\u25001315 postgres: zabbix: background writer\n             \u251c\u25001316 postgres: zabbix: walwriter\n             \u251c\u25001317 postgres: zabbix: autovacuum launcher\n             \u251c\u25001318 postgres: zabbix: archiver\n             \u251c\u25001319 postgres: zabbix: stats collector\n             \u2514\u25001320 postgres: zabbix: logical replication launcher\n<\/pre>\n<p>As Zabbix should use it&#8217;s own database and user, create both:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] psql -c \"create user zabbix with login password 'zabbix'\"\nCREATE ROLE\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] psql -c \"create database zabbix with owner=zabbix\"\nCREATE DATABASE\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] 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 zabbix    | zabbix   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | \n(4 rows)\n<\/pre>\n<p>Nothing more to do for the PostgreSQL, except loading the Zabbix schema later on. <\/p>\n<p>Usually Zabbix gets installed with it&#8217;s one operating system user and group. For simplicity, I&#8217;ll do everything as the &#8220;postgres&#8221; user. Before we can install Zabbix from source code, we need to get it and then prepare the PostgreSQL database:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] wget https:\/\/cdn.zabbix.com\/zabbix\/sources\/stable\/5.4\/zabbix-5.4.7.tar.gz\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] tar axf zabbix-5.4.7.tar.gz \npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] cd zabbix-5.4.7\/\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ [pg141] ls database\/postgresql\/\ndata.sql  double.sql  images.sql  Makefile.am  Makefile.in  schema.sql  timescaledb.sql\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ [pg141] psql -f database\/postgresql\/schema.sql -U zabbix zabbix\nCREATE TABLE\nCREATE INDEX\nCREATE TABLE\n...\nALTER TABLE\nALTER TABLE\nALTER TABLE\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ [pg141] psql -f database\/postgresql\/images.sql -U zabbix zabbix\nINSERT 0 1\nINSERT 0 1\nINSERT 0 1\n...\nINSERT 0 1\nINSERT 0 1\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ [pg141] psql -f database\/postgresql\/data.sql -U zabbix zabbix\nSTART TRANSACTION\nINSERT 0 1\nINSERT 0 1\nINSERT 0 1\n...\nINSERT 0 1\nINSERT 0 1\nINSERT 0 1\nCOMMIT\n<\/pre>\n<p>Next, configure (this is a Debian 11 system, package names might be different in your case):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ [pg141] sudo apt install libsnmp-dev libopenipmi-dev libevent-dev libcurl4-openssl-dev libpcre3-dev\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ [pg141] .\/configure --prefix=\/u01\/app\/postgres\/product\/zabbix_5.4.7 --enable-server --enable-agent --with-postgresql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi\nchecking for a BSD-compatible install... \/usr\/bin\/install -c\nchecking whether build environment is sane... yes\nchecking for a thread-safe mkdir -p... \/usr\/bin\/mkdir -p\nchecking for gawk... gawk\n...\nconfig.status: creating src\/zabbix_java\/Makefile\nconfig.status: creating man\/Makefile\nconfig.status: creating include\/config.h\nconfig.status: include\/config.h is unchanged\nconfig.status: executing depfiles commands\n\n\nConfiguration:\n\n  Detected OS:           linux-gnu\n  Install path:          \/u01\/app\/postgres\/product\/zabbix_5.4.7\n  Compilation arch:      linux\n\n  Compiler:              cc\n  Compiler flags:         -g -O2  \n\n  Library-specific flags:\n    database:                -I\/u01\/app\/postgres\/product\/14\/db_0\/include \n    libXML2:               -I\/usr\/include\/libxml2\n    Net-SNMP:               -I\/usr\/local\/include -I\/usr\/lib\/x86_64-linux-gnu\/perl\/5.32\/CORE -I. -I\/usr\/include\n    OpenIPMI:              -I\/usr\/include\n\n  Enable server:         yes\n  Server details:\n    With database:         PostgreSQL\n    WEB Monitoring:        cURL\n      SSL certificates:      \/u01\/app\/postgres\/product\/zabbix_5.4.7\/share\/zabbix\/ssl\/certs\n      SSL keys:              \/u01\/app\/postgres\/product\/zabbix_5.4.7\/share\/zabbix\/ssl\/keys\n    SNMP:                  yes\n    IPMI:                  yes\n    SSH:                   no\n    TLS:                   no\n    ODBC:                  no\n    Linker flags:           -L\/usr\/lib\/x86_64-linux-gnu    -L\/u01\/app\/postgres\/product\/14\/db_0\/lib     -L\/usr\/lib       -rdynamic     \n    Libraries:                -lpq    -lnetsnmp   -lOpenIPMI -lOpenIPMIposix -lz -lpthread -levent    -lcurl -lm -ldl  -lresolv -lxml2   -lpcre \n    Configuration file:    \/u01\/app\/postgres\/product\/zabbix_5.4.7\/etc\/zabbix_server.conf\n    External scripts:      \/u01\/app\/postgres\/product\/zabbix_5.4.7\/share\/zabbix\/externalscripts\n    Alert scripts:         \/u01\/app\/postgres\/product\/zabbix_5.4.7\/share\/zabbix\/alertscripts\n    Modules:               \/u01\/app\/postgres\/product\/zabbix_5.4.7\/lib\/modules\n\n  Enable proxy:          no\n\n  Enable agent:          yes\n  Agent details:\n    TLS:                   no\n    Modbus:                no\n    Linker flags:                -rdynamic     \n    Libraries:              -lz -lpthread    -lcurl -lm -ldl  -lresolv -lxml2   -lpcre \n    Configuration file:    \/u01\/app\/postgres\/product\/zabbix_5.4.7\/etc\/zabbix_agentd.conf\n    Modules:               \/u01\/app\/postgres\/product\/zabbix_5.4.7\/lib\/modules\n\n  Enable agent 2:        no\n\n  Enable web service:    no\n\n  Enable Java gateway:   no\n\n  LDAP support:          no\n  IPv6 support:          yes\n\n***********************************************************\n*            Now run 'make install'                       *\n*                                                         *\n*            Thank you for using Zabbix!                  *\n*                                  *\n***********************************************************\n<\/pre>\n<p>All fine, compile and install:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ [pg141] make install\nMaking install in src\nmake[1]: Entering directory '\/home\/postgres\/zabbix-5.4.7\/src'\nMaking install in libs\nmake[2]: Entering directory '\/home\/postgres\/zabbix-5.4.7\/src\/libs'\nMaking install in zbxcrypto\nmake[3]: Entering directory '\/home\/postgres\/zabbix-5.4.7\/src\/libs\/zbxcrypto'\n...\nmake[2]: Entering directory '\/home\/postgres\/zabbix-5.4.7'\nmake[2]: Nothing to be done for 'install-exec-am'.\nmake[2]: Nothing to be done for 'install-data-am'.\nmake[2]: Leaving directory '\/home\/postgres\/zabbix-5.4.7'\nmake[1]: Leaving directory '\/home\/postgres\/zabbix-5.4.7'\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ [pg141] \n<\/pre>\n<p>Nothing really complicated and easy to prepare. Before we can startup the Zabbix server there needs to be a minimal configuration for it:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ [pg141] cd\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] vi \/u01\/app\/postgres\/product\/zabbix_5.4.7\/etc\/zabbix_server.conf\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] egrep -v \"^$|^#\"  \/u01\/app\/postgres\/product\/zabbix_5.4.7\/etc\/zabbix_server.conf\nSourceIP=192.168.100.173\nLogFile=\/u01\/app\/postgres\/local\/dmk\/log\/zabbix_server.log\nLogFileSize=10\nPidFile=\/u01\/app\/postgres\/local\/dmk\/tmp\/zabbix_server.pid\nSocketDir=\/u01\/app\/postgres\/local\/dmk\/tmp\/\nDBHost=localhost\nDBName=zabbix\nDBSchema=public\nDBUser=zabbix\nDBPassword=zabbix\nTimeout=4\nLogSlowQueries=3000\nStatsAllowedIP=StatsAllowedIP=192.168.100.0\/24\n<\/pre>\n<p>If the configuration is fine, the Zabbix server should start up without any issues:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] \/u01\/app\/postgres\/product\/zabbix_5.4.7\/sbin\/zabbix_server \npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] ps -ef | grep zabbix\n...\npostgres   41541    1311  0 15:27 ?        00:00:00 postgres: zabbix: zabbix zabbix [local] idle\npostgres   41606       1  0 15:32 ?        00:00:00 \/u01\/app\/postgres\/product\/zabbix_5.4.7\/sbin\/zabbix_server\npostgres   41615   41606  0 15:32 ?        00:00:00 \/u01\/app\/postgres\/product\/zabbix_5.4.7\/sbin\/zabbix_server: configuration syncer [synced configuration in 0.051028 sec, idle 60 sec]\npostgres   41616    1311  0 15:32 ?        00:00:00 postgres: zabbix: zabbix zabbix ::1(36310) idle\npostgres   41618   41606  0 15:32 ?        00:00:00 \/u01\/app\/postgres\/product\/zabbix_5.4.7\/sbin\/zabbix_server: alert manager #1 [sent 0, failed 0 alerts, idle 5.104997 sec during 5.105235 sec]\n...\n<\/pre>\n<p>Starting the Zabbix server after the PostgreSQL instance automatically with systemd is just a matter of this ( we usually do &#8220;current&#8221; links so we can easily switch between versions ):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] ln -s \/u01\/app\/postgres\/product\/zabbix_5.4.7\/ \/u01\/app\/postgres\/product\/zabbix-current\npostgres@patronipgbackrest:\/home\/postgres\/ [zabbix] cat \/etc\/systemd\/system\/zabbix.service\n[Unit]\nDescription=Zabbix server service\nAfter=network.target,postgres-zabbix.service\n\n[Service]\nUser=postgres\nType=notify\nExecStart=\/u01\/app\/postgres\/product\/zabbix-current\/sbin\/zabbix_server -f\nRestart=always\nRestartSec=10s\nLimitNOFILE=40000\n\n[Install]\nWantedBy=multi-user.target\n\npostgres@patronipgbackrest:\/home\/postgres\/ [zabbix] sudo systemctl daemon-reload\npostgres@patronipgbackrest:\/home\/postgres\/ [zabbix] sudo systemctl enable zabbix.service\npostgres@patronipgbackrest:\/home\/postgres\/ [zabbix] sudo reboot\n<\/pre>\n<p>Done, for the Zabbix server. What you usually want to have in addition, is a graphical user interface and Zabbix comes web application written in <a href=\"https:\/\/www.php.net\/\" target=\"_blank\" rel=\"noopener\">PHP<\/a>. The easiest way for me was to install the Apache webserver with PHP support:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] sudo apt install apache libapache2-mod-php\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] systemctl status apache2.service\n\u25cf apache2.service - The Apache HTTP Server\n     Loaded: loaded (\/lib\/systemd\/system\/apache2.service; enabled; vendor preset: enabled)\n     Active: active (running) since Sun 2021-11-28 15:52:54 CET; 34s ago\n       Docs: https:\/\/httpd.apache.org\/docs\/2.4\/\n   Main PID: 8527 (apache2)\n      Tasks: 6 (limit: 1133)\n     Memory: 12.2M\n        CPU: 83ms\n     CGroup: \/system.slice\/apache2.service\n             \u251c\u25008527 \/usr\/sbin\/apache2 -k start\n             \u251c\u25008530 \/usr\/sbin\/apache2 -k start\n             \u251c\u25008531 \/usr\/sbin\/apache2 -k start\n             \u251c\u25008532 \/usr\/sbin\/apache2 -k start\n             \u251c\u25008533 \/usr\/sbin\/apache2 -k start\n             \u2514\u25008534 \/usr\/sbin\/apache2 -k start\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] cd zabbix-5.4.7\/ui\/\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ui\/ [pg141] sudo mkdir \/var\/www\/html\/zabbix\/\npostgres@patronipgbackrest:\/home\/postgres\/zabbix-5.4.7\/ui\/ [pg141] sudo cp -a . \/var\/www\/html\/zabbix\/\n<\/pre>\n<p>From now on you should be able to access the Zabbix console ( http:\/\/192.168.100.173\/zabbix, in my case ):<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix1.jpg\" alt=\"\" width=\"858\" height=\"551\" class=\"aligncenter size-full wp-image-52595\" \/><\/a><\/p>\n<p>Going to the next screen will trigger a prerequisite check and some stuff fails for me:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix2.jpg\" alt=\"\" width=\"852\" height=\"539\" class=\"aligncenter size-full wp-image-52598\" \/><\/a><\/p>\n<p>The whole list of checks in text format is this:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\n                                                Curent value |  Required    Result\n-----------------------------------------------------------------------------------\nPHP version                                     7.4.25          7.2.0       OK\nPHP option              \"memory_limit\"          128M            128M        OK\nPHP option              \"post_max_size\"         8M              16M         Fail\nPHP option              \"upload_max_filesize\"   2M              2M          OK\nPHP option              \"max_execution_time\"    30              300         Fail\nPHP option              \"max_input_time\"        60              300         Fail\nPHP databases support    off                                                Fail\nPHP bcmath               off                                                Fail\nPHP mbstring             off                                                Fail\nPHP sockets\t             on                                                 OK\nPHP gd\t                 unknown                                 2.0        Fail\nPHP gd PNG support       off                                                Fail\nPHP gd JPEG support      off                                                Fail\nPHP gd GIF support       off                                                Warning\nPHP gd FreeType support\t off                                                Fail\nPHP libxml               2.9.10                                 2.6.15      OK\nPHP xmlwriter            off                                                Fail\nPHP xmlreader            off                                                Fail\nPHP LDAP\t             off                                                Warning\nPHP OpenSSL              on                                                 OK\nPHP ctype                on                                                 OK\nPHP session\t             on                                                 OK\nPHP option               \"session.auto_start\" off off\t                    OK\nPHP gettext              on                                                 OK\nPHP option               \"arg_separator.output\"                             OK\n<\/pre>\n<p>To fix the failed checks, I had to tweak the PHP configuration and to install additional packages:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] sudo vi \/etc\/php\/7.4\/apache2\/php.ini\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] egrep \"max_input_time|max_execution_time|post_max_size\" \/etc\/php\/7.4\/apache2\/php.ini\n; max_input_time\nmax_execution_time = 300\nmax_input_time = 300\npost_max_size = 16M\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] sudo apt install php7.4-ldap php7.4-mbstring php7.4-pgsql php7.4-bcmath php7.4-gd php7.4-xml\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] sudo chown -R www-data:www-data \/var\/www\/html\/zabbix\n<\/pre>\n<p>The rest of the configuration is self explaining:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix3.jpg\" alt=\"\" width=\"856\" height=\"544\" class=\"aligncenter size-full wp-image-52601\" \/><br \/>\n<\/a><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix4.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix4.jpg\" alt=\"\" width=\"854\" height=\"549\" class=\"aligncenter size-full wp-image-52602\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix5.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix5.jpg\" alt=\"\" width=\"854\" height=\"560\" class=\"aligncenter size-full wp-image-52603\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix6.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix6.jpg\" alt=\"\" width=\"855\" height=\"533\" class=\"aligncenter size-full wp-image-52604\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix8.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix8.jpg\" alt=\"\" width=\"854\" height=\"545\" class=\"aligncenter size-full wp-image-52606\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix9.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix9.jpg\" alt=\"\" width=\"1901\" height=\"910\" class=\"aligncenter size-full wp-image-52607\" \/><\/a><\/p>\n<p>One last point to fix for the server part: As you can see in the last screenshot, the server node itself is reported as down. This is not a surprise as we did not configure the agent yet, but this is as well very simple:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] egrep -v \"^$|^#\" \/u01\/app\/postgres\/product\/zabbix-current\/etc\/zabbix_agentd.conf\nPidFile=\/u01\/app\/postgres\/local\/dmk\/tmp\/zabbix_agentd.pid\nLogFile=\/u01\/app\/postgres\/local\/dmk\/log\/zabbix_agentd.log\nSourceIP=127.0.0.1\nServer=192.168.100.173\nServerActive=127.0.0.1\nHostname=Zabbix server\npostgres@patronipgbackrest:\/home\/postgres\/ [pg141] cat \/etc\/systemd\/system\/zabbix-agent.service \n[Unit]\nDescription=dbi services Zabbix agent service\nAfter=network.target,postgres-zabbix.service\n\n[Service]\nUser=postgres\nType=notify\nExecStart=\/u01\/app\/postgres\/product\/zabbix-current\/sbin\/zabbix_agentd -f\nRestart=always\nRestartSec=10s\nLimitNOFILE=40000\n\n[Install]\nWantedBy=multi-user.target\n<\/pre>\n<p>After the agent is started up, all is green in the console:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix10.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix10.jpg\" alt=\"\" width=\"1907\" height=\"673\" class=\"aligncenter size-full wp-image-52609\" \/><\/a><\/p>\n<p>In the next we&#8217;ll install and configure the agent on three Patroni nodes and configure Zabbix to monitor that.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are often asked which monitoring solution we recommend for PostgreSQL, by people attending our PostgreSQL workshops. We usually answer: What do you have in place already? If a solution already is in place, the most obvious way is trying to integrate into the existing solution. If nothing is there already, you have plenty of [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":16869,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[143,77,2430],"type_dbi":[],"class_list":["post-16868","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-monitoring","tag-postgresql","tag-zabbix"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Open source monitoring solutions (1) - Zabbix server setup - 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\/open-source-monitoring-solutions-1-zabbix-server-setup\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Open source monitoring solutions (1) - Zabbix server setup\" \/>\n<meta property=\"og:description\" content=\"We are often asked which monitoring solution we recommend for PostgreSQL, by people attending our PostgreSQL workshops. We usually answer: What do you have in place already? If a solution already is in place, the most obvious way is trying to integrate into the existing solution. If nothing is there already, you have plenty of [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-29T11:56:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"858\" \/>\n\t<meta property=\"og:image:height\" content=\"551\" \/>\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\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Open source monitoring solutions (1) &#8211; Zabbix server setup\",\"datePublished\":\"2021-11-29T11:56:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/\"},\"wordCount\":637,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/zabbix1.jpg\",\"keywords\":[\"Monitoring\",\"PostgreSQL\",\"Zabbix\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/\",\"name\":\"Open source monitoring solutions (1) - Zabbix server setup - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/zabbix1.jpg\",\"datePublished\":\"2021-11-29T11:56:23+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/zabbix1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/zabbix1.jpg\",\"width\":858,\"height\":551},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/open-source-monitoring-solutions-1-zabbix-server-setup\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Open source monitoring solutions (1) &#8211; Zabbix server setup\"}]},{\"@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":"Open source monitoring solutions (1) - Zabbix server setup - 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\/open-source-monitoring-solutions-1-zabbix-server-setup\/","og_locale":"en_US","og_type":"article","og_title":"Open source monitoring solutions (1) - Zabbix server setup","og_description":"We are often asked which monitoring solution we recommend for PostgreSQL, by people attending our PostgreSQL workshops. We usually answer: What do you have in place already? If a solution already is in place, the most obvious way is trying to integrate into the existing solution. If nothing is there already, you have plenty of [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/","og_site_name":"dbi Blog","article_published_time":"2021-11-29T11:56:23+00:00","og_image":[{"width":858,"height":551,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix1.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\/open-source-monitoring-solutions-1-zabbix-server-setup\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Open source monitoring solutions (1) &#8211; Zabbix server setup","datePublished":"2021-11-29T11:56:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/"},"wordCount":637,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix1.jpg","keywords":["Monitoring","PostgreSQL","Zabbix"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/","url":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/","name":"Open source monitoring solutions (1) - Zabbix server setup - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix1.jpg","datePublished":"2021-11-29T11:56:23+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix1.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/zabbix1.jpg","width":858,"height":551},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/open-source-monitoring-solutions-1-zabbix-server-setup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Open source monitoring solutions (1) &#8211; Zabbix server setup"}]},{"@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\/16868","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=16868"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16868\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/16869"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=16868"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=16868"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=16868"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=16868"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}