Instalación Zabbix 4.4 + PostgreSQL + TimescaleDB en CentOS 8

From Zabbix-ES
Jump to navigation Jump to search

Update systemc after install

$ dnf check-update
$ dnf -y update

Stop and disable FirewallD

$ systemctl stop firewalld
$ systemctl disable firewalld

Configure SELinux

Nota: SELINUX=disabled in the /etc/selinux/config file
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted
                       
Nota: Reboot your system. After reboot, confirm that the getenforce command returns Disabled
$getenforce
Disabled

Install and update Webmin via RPM

Nota: Create the /etc/yum.repos.d/webmin.repo file containing:	(Optional)
[Webmin]
name=Webmin Distribution Neutral
#baseurl=https://download.webmin.com/download/yum
mirrorlist=https://download.webmin.com/download/yum/mirrorlist
enabled=1

You should also fetch and install my GPG key with which the packages are signed, with the commands

$ dnf -y install wget
$ cd /tmp
$ wget http://www.webmin.com/jcameron-key.asc
$ rpm --import jcameron-key.asc

You will now be able to install with the command

$ dnf -y install webmin

All dependencies should be resolved automatically

# To modify my listen port:
$ dnf -y install perl-Socket6

To use the PostgreSQL Yum Repository, follow these steps

Nota: Disable the AppStream modules You will probably never want to use if You use pgdg build (dnf -y module disable postgresql).
$ dnf -y module disable postgresql

Instalacion de PostgreSQL

Install the repository RPM

$ dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Install the client packages

$ dnf install postgresql11

Optionally install the server packages

$ dnf install postgresql11-server

Optionally initialize the database and enable automatic start

 $ /usr/pgsql-11/bin/postgresql-11-setup initdb
 $ systemctl enable postgresql-11
 $ systemctl start postgresql-11

Modify pg_hba.conf in /var/lib/pgsql/11/data/, ident by md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer

# IPv4 local connections:
host    all             all             127.0.0.1/32            ident --> md5

# IPv6 local connections:
host    all             all             ::1/128                 ident --> md5

# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident --> md5
host    replication     all             ::1/128                 ident --> md5

Install Zabbix repository

$ rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
$ dnf clean all

Install Zabbix server, frontend, agent

$ dnf -y install zabbix-server-pgsql zabbix-web-pgsql zabbix-apache-conf zabbix-agent

Create initial database

$ sudo -u postgres createuser --pwprompt zabbix
$ sudo -u postgres createdb -O zabbix zabbix

Import initial schema and data. You will be prompted to enter your newly created password

$ zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix

Configure the database for Zabbix server

# Edit file /etc/zabbix/zabbix_server.conf
DBPassword=password

Configure PHP for Zabbix frontend

#	Edit file /etc/php-fpm.d/zabbix.conf, uncomment and set the right timezone for you.
php_value[date.timezone] = America/Argentina/Buenos_Aires

Start Zabbix server and agent processes and make it start at system boot

$ systemctl restart zabbix-server zabbix-agent httpd php-fpm
$ systemctl enable zabbix-server zabbix-agent httpd php-fpm

Connect to your newly installed Zabbix frontend

Nota: http://server_ip_or_name/zabbix

Install TimescaleDB extension and Configure

Nota:  Add TimescaleDB's third party repository and install TimescaleDB, which will download any dependencies it needs from the PostgreSQL repo.
$ tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/8/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL
$ dnf -y update
$ dnf -y install timescaledb-postgresql-11

The easiest way to get started is to run timescaledb-tune

$ timescaledb-tune --pg-config=/usr/pgsql-11/bin/pg_config

These changes are then written to your postgresql.conf and will take effect on the next (re)start

$ systemctl restart postgresql-11

TimescaleDB extension must also be enabled for the specific DB by executing

$ echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
Result:
could not change directory to "/root": Permission denied
WARNING:
WELCOME TO
 _____ _                               _     ____________
|_   _(_)                             | |    |  _  \ ___ \
  | |  _ _ __ ___   ___  ___  ___ __ _| | ___| | | | |_/ /
  | | | |  _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \
  | | | | | | | | |  __/\__ \ (_| (_| | |  __/ |/ /| |_/ /
  |_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/
               Running version 1.4.2
For more information on TimescaleDB, please visit the following links:

 1. Getting started: https://docs.timescale.com/getting-started
 2. API reference documentation: https://docs.timescale.com/api
 3. How TimescaleDB is designed: https://docs.timescale.com/introduction/architecture

Note: TimescaleDB collects anonymous reports to better understand and assist our users.
For more information and how to disable, please see our docs https://docs.timescaledb.com/using-timescaledb/telemetry.
CREATE EXTENSION

Then run the timescaledb.sql script located in database/postgresql

Nota: Si la BD es grande, es recomendable ejecutar el particionado desde una sesion con el comando screen par poder dejarla en BG ya que puede tardar mucho tiempo.
# zcat /usr/share/doc/zabbix-server-pgsql-5.0.0/timescaledb.sql.gz | sudo -u zabbix psql zabbix

timescaledb.sql

# zcat /usr/share/doc/zabbix-server-pgsql-5.0.0/timescaledb.sql.gz

SELECT create_hypertable('history', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('history_uint', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('history_log', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('history_text', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('history_str', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('trends', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('trends_uint', 'clock', chunk_time_interval => 86400, migrate_data => true);
UPDATE config SET db_extension='timescaledb',hk_history_global=1,hk_trends_global=1;
UPDATE config SET compression_status=1,compress_older='7d';