Introduzione

Zabbix è uno degli strumenti software di monitoraggio open source più popolari. Zabbix raccoglie le metriche dai dispositivi, sistemi e applicazioni delle reti e garantisce che siano attive e funzionanti. In caso di problemi, Zabbix invierà avvisi di notifica tramite vari metodi.

Zabbix può essere distribuito per il monitoraggio basato su agent e senza agent. Zabbix Agent ha un ingombro ridotto e può essere eseguito su varie piattaforme, tra cui Linux, UNIX, macOS e Windows.

Questo tutorial descrive come installare e configurare l'ultima versione di Zabbix 4.4 su un server Ubuntu 18.04 usando MySQL come back-end del database. Ti mostreremo anche come installare Zabbix-agent su un host remoto e come aggiungere l'host al server Zabbix.

Prerequisiti

Prima di continuare con questo tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo.

Se desideri installare Zabbix su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Creare il database MySQL

Zabbix supporta sia MySQL/MariaDB che PostgreSQL. In questo tutorial, useremo MySQL come back-end del database.

Se non hai già installato MySQL sul tuo server Ubuntu puoi installarlo seguendo queste istruzioni.

Accedi alla shell MySQL digitando il comando seguente:

sudo mysql

Oppure se hai seguito la nostra guida e hai impostato una password per l'utente root, utilizza il seguente comando:

sudo mysql -u root -p

Dall'interno della shell MySQL, eseguire la seguente istruzione SQL per creare un nuovo database:

CREATE DATABASE zabbix CHARACTER SET utf8 collate utf8_bin;

Successivamente, crea un account utente MySQL e concedi l'accesso al database:

GRANT ALL ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'change-with-strong-password';

Assicurati di cambiare change-with-strong-password con una password complessa.

Una volta terminato, esci dalla console mysql digitando:

EXIT;

Installare Zabbix su Ubuntu

Al momento della stesura di questo articolo, l'ultima versione stabile di Zabbix è la versione 4.4. I pacchetti Zabbix disponibili nei repository Ubuntu sono spesso obsoleti, quindi utilizzeremo il repository Zabbix ufficiale.

Scarica l'ultimo pacchetto .deb di repository Zabbix con il seguente comando wget:

wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+bionic_all.deb

Una volta scaricato il file, aggiungi il repository Zabbix al tuo sistema Ubuntu 18.04 digitando:

sudo apt install ./zabbix-release_4.4-1+bionic_all.deb

Aggiorna l'indice dei pacchetti e installa il server Zabbix, il frontend Web con supporto del database MySQL e Zabbix-agent:

sudo apt update
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent

zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent

Il comando sopra installerà anche Apache, PHP e tutti i moduli PHP richiesti.

Configurare PHP per il frontend Zabbix

Durante l'installazione, viene creato un file di configurazione di Apache che contiene tutte le impostazioni di Apache e PHP richieste. Hai solo bisogno di apportare una piccola modifica e impostare il fuso orario appropriato.

Apri il file di configurazione, decommenta la linea del fuso orario php_value date.timezone ... e cambialo nel tuo fuso orario. Puoi trovare l'elenco completo dei fusi orari supportati da PHP qui.

sudo nano /etc/apache2/conf-enabled/zabbix.conf
...
    <IfModule mod_php7.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value max_input_vars 10000
        php_value always_populate_raw_post_data -1
        php_value date.timezone Europe/Rige
    </IfModule>
...

Una volta fatto, salva il file di configurazione e riavvia il servizio Apache per rendere effettive le modifiche:

sudo systemctl restart apache2

Configurare il database MySQL per Zabbix Server

Il pacchetto di installazione di Zabbix fornisce un file di dump che include uno schema iniziale e dati per il server Zabbix con MySQL.

Importa il file di dump MySQL eseguendo:

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Quando richiesto, immettere la password utente creata in precedenza. In caso di successo, non viene fornito alcun output.

Successivamente, dobbiamo modificare la configurazione di Zabbix e impostare la password del database.

Apri il file di configurazione nel tuo editor:

sudo nano /etc/zabbix/zabbix_server.conf

Cerca la sezione seguente, decommenta la direttiva DBPassword e aggiungi la password del database.

...
### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=change-with-strong-password
...

Salva e chiudi il file.

Riavviare il server Zabbix e i servizi agent  e farli avviare all'avvio del sistema:

sudo systemctl restart zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache2

Per verificare se il server Zabbix è in esecuzione digitare:

sudo systemctl status zabbix-server
● zabbix-server.service - Zabbix Server
   Loaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-02-13 23:51:02 CET; 13min ago
  Process: 22303 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 22307 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
 Main PID: 22319 (zabbix_server)
    Tasks: 34 (limit: 2298)
   CGroup: /system.slice/zabbix-server.service

Installare e configurare Zabbix Frontend

L'interfaccia web di Zabbix è scritta in PHP e ci consente di configurare il server, visualizzare i dati raccolti e aggiungere host che vogliamo monitorare.

Prima di iniziare a utilizzare l'interfaccia Web, è necessario installarlo.

Apri il tuo browser preferito e digita il nome di dominio o l'indirizzo IP pubblico del tuo server seguito da /zabbix:

http(s)://DOMINIO_O_IP/zabbix

Nella prima schermata, ti verrà presentato un messaggio di benvenuto. Clicca Next step per continuare.

Successivamente, vedrai la pagina di informazioni che elenca tutti i prerequisiti di PHP richiesti per eseguire Zabbix Frontend. Tutti i valori in questa tabella dovrebbero essere OK, scorrere verso il basso per verificare che tutto sia impostato correttamente. Una volta verificato, fai clic su Next step per procedere.

Nella schermata successiva, la procedura guidata di configurazione ti chiederà di inserire i dettagli della connessione al database. Immettere i dettagli dell'utente e del database MySQL precedentemente creati.

L'immissione di un nome per il server è facoltativa. Inseriscilo se hai più di un server di monitoraggio Zabbix. Se fornito, verrà visualizzato nella barra dei menu e nei titoli delle pagine.

Clicca per continuare Next step.

Nella schermata successiva, ti verrà mostrato il riepilogo pre-installazione.

Fare clic Next step e una volta completata l'installazione, si verrà reindirizzati a una pagina che informa che è stata installata l'interfaccia Web di Zabbix. Per accedere alla tua pagina di login di Zabbix fai clic sul pulsante Finish.

L'utente predefinito è "Admin" e la password è "zabbix". Inserisci il nome utente e la password e fai clic sul pulsante Log in.

Una volta effettuato l'accesso, verrai reindirizzato alla dashboard di amministrazione di Zabbix.

Da qui puoi iniziare a personalizzare l'installazione di Zabbix e aggiungere nuovi host. Il primo passo dovrebbe essere quello di cambiare la password corrente. Per farlo, vai alla pagina del profilo utente facendo clic sull'icona del profilo nella barra di navigazione in alto.

Aggiungere un nuovo host al server Zabbix

La procedura per aggiungere un nuovo host per il monitoraggio al server Zabbix comprende due passaggi.

Innanzitutto, è necessario installare Zabbix-Agent sull'host remoto e quindi aggiungere l'host al server Zabbix tramite l'interfaccia Web.

Installare Zabbix-Agent

In questa esercitazione si presuppone che la macchina host utilizzi anche Ubuntu 18.04.

Come durante l'installazione del server Zabbix, eseguire i comandi seguenti per abilitare il repository Zabbix:

wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+bionic_all.deb
sudo apt install ./zabbix-release_4.4-1+bionic_all.deb

Aggiorna l'indice del pacchetto e installa il pacchetto Zabbix Agent:

sudo apt update
sudo apt install zabbix-agent

Zabbix supporta due metodi per la crittografia delle comunicazioni server-client, la chiave precondivisa (PSK) e la crittografia basata su certificati. In questo tutorial, utilizzeremo il metodo delle chiavi pre-condivise (PSK) per proteggere la connessione tra il server e l'agent.

Utilizzare il comando seguente per generare una chiave precondivisa e salvarla in un file:

openssl rand -hex 32 | sudo tee /etc/zabbix/zabbix_agentd.psk

La chiave PSK sarà simile a questa:

a6372653a13156a055fe5e5fee6de79f92949190a5fd2c37f5e9988bbce40eee

Apri il file di configurazione di Zabbix Agent:

sudo nano /etc/zabbix/zabbix_agentd.conf

Cerca il parametro Server=127.0.0.1 e modificalo inserendo l'indirizzo IP del server Zabbix:

...
### Option: Server
#       List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies.
#       Incoming connections will be accepted only from the hosts listed here.
#       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally
#       and '::/0' will allow any IPv4 or IPv6 address.
#       '0.0.0.0/0' can be used to allow any IPv4 address.
#       Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
#
# Mandatory: yes, if StartAgents is not explicitly set to 0
# Default:
# Server=

Server=127.0.0.1
...

Quindi, trova l'opzione TSLConnect, decommentala e impostala su psk:

...
### Option: TLSConnect
#       How the agent should connect to server or proxy. Used for active checks.
#       Only one value can be specified:
#               unencrypted - connect without encryption
#               psk         - connect using TLS and a pre-shared key
#               cert        - connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
TLSConnect=psk
...

Individua l'opzione TLSAccept, decommentala e impostala su psk:

...
### Option: TLSAccept
#       What incoming connections to accept.
#       Multiple values can be specified, separated by comma:
#               unencrypted - accept connections without encryption
#               psk         - accept connections secured with TLS and a pre-shared key
#               cert        - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
TLSAccept=psk
...

Quindi, trova l'opzione TLSPSKIdentity, decommentala e impostala su PSK 001. Il valore deve essere una stringa univoca:

...
### Option: TLSPSKIdentity
#       Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
TLSPSKIdentity=PSK 001
...

Infine, individua l'opzione TLSPSKFile, decommentala e impostala in modo che punti alla chiave precondivisa creata in precedenza:

...
### Option: TLSPSKFile
#       Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk 
...

Una volta fatto, salva e chiudi il file.

Avviare il servizio agent Zabbix e impostarlo per l'avvio all'avvio con:

sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent

Successivamente, dovrai aggiungere una regola firewall che abilita il traffico dal tuo server Zabbix sulla porta TCP 10050.

Supponendo che si stia utilizzando UFW per gestire il firewall e si desidera consentire l'accesso dall'indirizzo IP 192.168.222.222 , si eseguirà il comando seguente:

sudo ufw allow proto tcp from 192.168.222.222 to any port 10050

Impostare un nuovo host

Ora che l'agent che si desidera monitorare è installato e configurato sull'host remoto , il passo successivo è registrare l'host sul server Zabbix.

Accedi all'interfaccia Web di Zabbix Server come utente amministratore:

http(s)://DOMINIO_O_IP/zabbix

Una volta dentro, nella barra di navigazione in alto fare clic su Configuration, quindi Hosts

Quindi, fai clic sul pulsante blu Create host nell'angolo in alto a destra dello schermo e si aprirà la pagina di configurazione dell'host.

Immettere il nome host e l'indirizzo IP del computer host remoto che si desidera monitorare. Aggiungi l'host a uno o più gruppi selezionando il gruppo dall'elenco oppure immetti un nome di gruppo inesistente per crearne uno nuovo. Il gruppo Linux Servers è una buona scelta.

Una volta fatto, fai clic sulla scheda Templates. Selezionare ad esempio Template OS Linux by Zabbix agent.

Quindi, fai clic sulla scheda Encryption. Seleziona PSK per entrambi Connections to host e Connections from host.

Impostare il valore PSK identity su PSK 001, il valore dell'opzione TLSPSKIdentity dell'agent Zabbix configurato nel passaggio precedente.

Nel campo  PSK value aggiungi la chiave generata per Zabbix agent, quella memorizzata nel file /etc/zabbix/zabbix_agentd.psk.

Infine, per aggiungere l'host fai clic sul tasto blu Add.

La configurazione è terminata.

Se riscontri errori di connessione tra il server e l'host ricontrollare con attenzione le configurazioni e riavviare i servizi sul server Zabbix e sull'host.

Riavviare i servizi sul server Zabbix:

sudo systemctl restart zabbix-server zabbix-agent apache2

Riavviare il servizio di Zabbix Agent sull'host:

sudo systemctl restart zabbix-agent

Conclusione

Hai installato con successo l'ultimo Zabbix sul tuo sistema Ubuntu e hai imparato come aggiungere nuovi host che desideri monitorare.

Ora dovresti controllare la documentazione di Zabbix e saperne di più su come configurare e utilizzare Zabbix.

Se riscontri un problema o hai un feedback, lascia un commento qui sotto.