Installazione di Zabbix 7 con backend su TimescaleDB

Timescale DB è una variante di PostgreSQL ottimizzata per gestire dati in serie temporali e per applicazioni data intensive.
A partire dalla versione 5 Zabbix supporta l’uso di questo database come backend, che lo rende molto adatto per situazioni in cui si prevede di dover gestire una grande quantità di dati.
Dato che la documentazione ufficiale è un po’ disordinata al riguardo, vediamo come procedere al setup in questa particolare configurazione, con particolare riguardo al caso in cui Zabbix Server e database stiano su due server separati.
Supponiamo che TimescaleDB sia installato e funzionante. Se così non fosse vi invito a seguire la procedura di setup in questa configurazione nell’apposito articolo.
Anche questo articolo è la versione aggiornata e basata su Zabbix 7 e Oracle Linux 9 del precedente su Zabbix 6 e oracle Linux 8. Se invece siete su Debian/Ubuntu l’installazione di PostgreSQL e TimeScaleDB è ampiamente documentata qua.
Andiamo sul server che ospita la nostra istanza TimescaleDB e connettiamoci ad essa:

su postgres -c psql

Riceveremo un messaggio di benvenuto come questo:

psql (16.3)
Type "help" for help.

Creiamo l’utente e il DB per Zabbix:

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

Disabiltiamo i pacchetti Zabbix di EPEL. Editiamo il file /etc/yum.repos.d/epel.repo e aggiungiamo quanto segue:

[epel]
...
excludepkgs=zabbix*

Installiamo il repository di Zabbix:

rpm -Uvh https://repo.zabbix.com/zabbix/7.0/oracle/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm

(questa stringa potrebbe variare a seconda della distro su cui vi trovate. Quella riportata è per Oracle Linux, recuperate quella corretta per la vostra installazione dalla pagina dei download di Zabbix)
Installiamo l’agente e il pacchetto con gli script sql:

dnf install zabbix-sql-scripts zabbix-agent2 zabbix-agent2-*

Tralasciamo la configurazione dell’agente, che faremo in un secondo momento ed esula dall’argomento del presente articolo, e importiamo lo schema e i dati iniziali nel DB che abbiamo creato:

zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Terminata questa operazione dobbiamo fare i setup specifici per TimescaleDB, iniziando dall’abilitazione dell’apposita estensione:

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

Ora eseguiamo lo script per TimescaleDB:

cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix

Per verificare che tutto sia andato bene colleghiamoci al DB:

su postgres -c 'psql -d zabbix'

Dando il comando \dx all’interno del prompt di PostgreSQL possiamo verificare se l’estensione è attiva:

zabbix=# \dx
List of installed extensions
Name | Version | Schema | Description
-------------+---------+------------+-------------------------------------------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
timescaledb | 2.7.0 | public | Enables scalable inserts and complex queries for time-series data
(2 rows)

L’installazione del backend TimescaleDB per Zabbix è terminata.
Se l’architettura di Zabbix prevede Zabbix server e database su host separati occorre abilitare Postgres/TimescaleDB ad accettare connessioni dall’host di Zabbix, perché di default questo è possibile solo da localhost.
Se avete eseguito il setup come indicato nell’articolo su TimescaleDB i due files da editare per questa operazione si trovano qua:

cd /var/lib/pgsql/16/data

Editiamo il primo:

nano pg_hba.conf

inserendo sotto alla riga con le abilitazioni per IPV4 la seguente:

host all all [IP_DEL_SERVER_ZABBIX]/32 trust

Procediamo con il secondo:

nano postgresql.conf

inseriamo la seguente riga:

listen_addresses = '*'

Ristartiamo PostgreSQL e il gioco è fatto:

systemctl restart postgresql-14

Da qua il setup può proseguire come indicato nella documentazione ufficiale, ricordando che, nel caso di database e server su host separati occorre inserire nel file di configurazione del server Zabbix e nel frontend l’IP del server al posto del predefinito localhost.

© 2024 Catfish Blog | Tema: Storto di CrestaProject WordPress Themes.