Installazione dai sorgenti

Puoi ottenere la versione più recente di Zabbix compilandola dai sorgenti. Vedi anche Ottenere il codice sorgente di Zabbix.

Qui è disponibile una guida passo passo per installare Zabbix dai sorgenti.

Installazione dei daemon Zabbix

1 Scaricare l'archivio dei sorgenti

Andare alla pagina di download di Zabbix e scaricare l'archivio dei sorgenti. Una volta scaricato, estrarre i sorgenti eseguendo:

tar -zxvf zabbix-8.0.0.tar.gz

Inserire nel comando la versione corretta di Zabbix. Deve corrispondere al nome dell'archivio scaricato.

2 Creare un account utente

Tutti i processi daemon di Zabbix vengono eseguiti con utenti di sistema senza privilegi.
Se un daemon di Zabbix viene avviato da un account utente senza privilegi, continuerà a essere eseguito come quell'utente.

Nella configurazione predefinita, se un daemon viene avviato come root, passerà all'account utente zabbix, che deve essere presente. Per creare un utente e un gruppo di sistema zabbix, eseguire i comandi elencati di seguito.

Sistema basato su RedHat:

groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

Sistema basato su Debian:

addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix

Non è necessario creare un account utente separato per il frontend di Zabbix.

Raccomandazione di sicurezza

Se lo server e l'agent di Zabbix vengono eseguiti sulla stessa macchina, si consiglia di eseguirli con account utente separati. Eseguire entrambi con lo stesso utente consente all'agent di accedere al file di configurazione del server, il che potrebbe esporre informazioni sensibili, come la password del database, a qualsiasi utente di livello Admin in Zabbix.

Eseguire Zabbix come root, bin o qualsiasi altro account con privilegi speciali rappresenta un rischio per la sicurezza.

Directory home (opzionale)

I processi di Zabbix non richiedono una directory home, quindi in genere non è consigliato crearne una. Tuttavia, se è necessaria una funzionalità che richiede una directory home (ad esempio, per memorizzare le credenziali MySQL in $HOME/.my.cnf), è possibile crearla utilizzando i comandi elencati di seguito.

Sui sistemi basati su RedHat, eseguire:

mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix

Sui sistemi basati su Debian, eseguire:

mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
3 Creare il database Zabbix

Per i demoni Zabbix server e proxy, così come per il frontend Zabbix, è richiesto un database. Non è necessario per eseguire Zabbix agent.

Sono forniti script SQL per creare lo schema del database e inserire il set di dati. Il database di Zabbix proxy richiede solo lo schema, mentre il database di Zabbix server richiede anche il set di dati oltre allo schema.

Dopo aver creato un database Zabbix, procedere con i passaggi successivi della compilazione di Zabbix.

4 Configurare i sorgenti

Per compilare Zabbix server, Zabbix proxy o Zabbix agent è richiesto C99 con estensioni GNU. Questa versione può essere specificata esplicitamente impostando CFLAGS="-std=gnu99":

export CFLAGS="-std=gnu99"

Se si installa da Zabbix Git repository, è necessario eseguire prima:\

./bootstrap.sh

Quando si configurano i sorgenti per un Zabbix server o proxy, è necessario specificare il tipo di database da utilizzare. Solo un tipo di database può essere compilato con un processo server o proxy alla volta.

Per vedere tutte le opzioni di configurazione supportate, all'interno della directory dei sorgenti Zabbix estratti eseguire:

./configure --help

Per configurare i sorgenti per un Zabbix server e agent, è possibile eseguire qualcosa come:

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares

Per configurare i sorgenti per un Zabbix server (con PostgreSQL ecc.), è possibile eseguire:

./configure --enable-server --with-postgresql --with-net-snmp

Per configurare i sorgenti per un Zabbix proxy (con SQLite ecc.), è possibile eseguire:

./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2

Per configurare i sorgenti per un Zabbix agent, è possibile eseguire:

./configure --enable-agent

oppure, per Zabbix agent 2:

./configure --enable-agent2

Per compilare Zabbix agent 2 deve essere installata una versione Go supportata.

Note sulle opzioni di compilazione:

  • --enable-agent - compila Zabbix agent, così come le utility da riga di comando Zabbix get e Zabbix sender.
  • --with-libcurl - richiesto per il monitoraggio delle macchine virtuali, l'autenticazione SMTP e gli item di Zabbix agent web.page.*. Vedere anche: Requisiti (libcurl).
  • --with-libxml2 - richiesto per il monitoraggio delle macchine virtuali.
  • --with-libpcre2[=DIR] - Zabbix viene sempre compilato con la libreria PCRE2; questa opzione consente solo di specificare un percorso di installazione personalizzato di PCRE2.
  • --with-mysql=/path/to/mysql_config - specifica il percorso di una particolare configurazione della libreria client MySQL. Utile quando sono installate più versioni di MySQL o MariaDB.
  • --enable-static - collega staticamente le librerie (non supportato su Solaris). Usare questa opzione se si prevede di distribuire binari compilati a sistemi senza le librerie richieste. Non consigliato durante la compilazione di Zabbix server. Per compilare il server staticamente, è richiesta una versione statica di ogni libreria esterna. Lo script configure non verifica automaticamente questo requisito.
  • --with-stacksize=<value> - imposta la dimensione dello stack per thread in kilobyte (ad esempio, --with-stacksize=512). È possibile aumentare questo valore se Zabbix si arresta in modo anomalo o si blocca a causa di overflow dello stack (ad esempio, durante il preprocessing su sistemi con limiti predefiniti bassi per lo stack dei thread).

Se ./configure non riesce a completarsi a causa di librerie mancanti o di altri problemi, controllare il file config.log per informazioni dettagliate sull'errore.

Ad esempio, se manca libssl, il messaggio di errore immediato potrebbe essere fuorviante:

checking for main in -lmysqlclient... no
configure: error: Not found mysqlclient library

In questo caso, config.log rivela la causa effettiva:

/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto

Vedere anche:

5 Compilare e installare tutto

Se si installa da repository Git di Zabbix, è necessario eseguire prima:\

$ make dbschema

make install

Questo passaggio deve essere eseguito da un utente con permessi sufficienti (comunemente 'root' oppure utilizzando sudo).

L'esecuzione di make install installerà per impostazione predefinita i binari dei daemon (zabbix_server, zabbix_agentd, zabbix_proxy) in /usr/local/sbin e i binari client (zabbix_get, zabbix_sender) in /usr/local/bin.

Per specificare una posizione diversa da /usr/local, utilizzare una chiave --prefix nel passaggio precedente di configurazione dei sorgenti, ad esempio --prefix=/home/zabbix. In questo caso i binari dei daemon verranno installati in <prefix>/sbin, mentre le utility in <prefix>/bin. Le pagine man verranno installate in <prefix>/share.

6 Rivedere e modificare i file di configurazione
  • modificare il file di configurazione dell'agent Zabbix /usr/local/etc/zabbix_agentd.conf

È necessario configurare questo file per ogni host con zabbix_agentd installato.

Nel file è necessario specificare l'indirizzo IP del server Zabbix. Le connessioni da altri host saranno rifiutate.

  • modificare il file di configurazione del server Zabbix /usr/local/etc/zabbix_server.conf

È necessario specificare il nome del database, l'utente e la password (se utilizzata).

Per il resto, i parametri predefiniti saranno adeguati se si dispone di una piccola installazione (fino a dieci host monitorati). Tuttavia, è consigliabile modificare i parametri predefiniti se si desidera massimizzare le prestazioni del server Zabbix (o del proxy).

  • se è stato installato un proxy Zabbix, modificare il file di configurazione del proxy /usr/local/etc/zabbix_proxy.conf

È necessario specificare l'indirizzo IP del server e il nome host del proxy (che deve essere noto al server), nonché il nome del database, l'utente e la password (se utilizzata).

Con SQLite deve essere specificato il percorso completo del file del database; utente DB e password non sono richiesti.

7 Avviare i demoni

Eseguire zabbix_server sul lato server.

zabbix_server

Assicurarsi che il sistema consenta l'allocazione di 36 MB (o qualcosa in più) di memoria condivisa, altrimenti il server potrebbe non avviarsi e nel file di log del server verrà visualizzato "Cannot allocate shared memory for <type of cache>.". Questo può accadere su FreeBSD, Solaris 8.\

Eseguire zabbix_agentd su tutte le macchine monitorate.

zabbix_agentd

Assicurarsi che il sistema consenta l'allocazione di 2 MB di memoria condivisa, altrimenti l'agent potrebbe non avviarsi e nel file di log dell'agent verrà visualizzato "Cannot allocate shared memory for collector.". Questo può accadere su Solaris 8.

Se è stato installato Zabbix proxy, eseguire zabbix_proxy.

zabbix_proxy

Installazione dell'interfaccia web di Zabbix

Copia dei file PHP

Il frontend di Zabbix è scritto in PHP, quindi per eseguirlo è necessario un web server che supporti PHP. L'installazione si effettua semplicemente copiando i file PHP dalla directory ui nella directory dei documenti HTML del web server.

Le posizioni comuni delle directory dei documenti HTML per i web server Apache includono:

  • /usr/local/apache2/htdocs (directory predefinita quando si installa Apache dai sorgenti)
  • /srv/www/htdocs (OpenSUSE, SLES)
  • /var/www/html (Debian, Ubuntu, Fedora, RHEL)

Si consiglia di utilizzare una sottodirectory invece della root HTML. Per creare una sottodirectory e copiarvi i file del frontend di Zabbix, eseguire i seguenti comandi, sostituendo <htdocs> con la directory effettiva:

mkdir <htdocs>/zabbix
cd ui
cp -a . <htdocs>/zabbix

Se si prevede di utilizzare una lingua diversa dall'inglese, consultare Installation of additional frontend languages per le istruzioni.

Installazione del frontend

Per informazioni sulla procedura guidata di installazione del frontend di Zabbix, consultare la pagina Installazione dell'interfaccia web.

Installazione dei plugin caricabili di Zabbix agent 2

L'installazione dei plugin caricabili di Zabbix agent 2 è necessaria solo se si desidera monitorare destinazioni non coperte dai plugin integrati (ad esempio server o cluster MongoDB, PostgreSQL e i suoi fork, ecc.). Consultare l'elenco completo dei plugin caricabili e dei plugin integrati.

Prima di installare un plugin, controllarne il file README. Potrebbe contenere requisiti specifici e istruzioni di installazione.

Per installare dai sorgenti, per prima cosa scaricare ed estrarre l'archivio dei sorgenti del plugin caricabile.

Per compilare il plugin, accedere alla directory del plugin estratto ed eseguire make:

make

Per compilare i plugin caricabili di Zabbix agent 2 deve essere installata una versione di Go supportata.

L'eseguibile del plugin può essere collocato ovunque, purché possa essere caricato da Zabbix agent 2. Specificare il percorso del file binario del plugin nel file di configurazione del plugin, ad esempio in postgresql.conf per il plugin PostgreSQL:

Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql

Il percorso del file di configurazione del plugin deve essere specificato nel parametro Include del file di configurazione di Zabbix agent 2:

Include=/path/to/plugin/configuration/file/postgresql.conf

Per maggiori dettagli sulla configurazione dei plugin, procedere alla configurazione.

I plugin caricabili forniti da Zabbix utilizzano semplici makefile con i seguenti target di build:

  • make - compila il plugin
  • make clean - elimina tutti i file creati durante la compilazione del plugin
  • make check - esegue gli autotest (richiede una destinazione di monitoraggio reale, ad esempio un database PostgreSQL)
  • make style - verifica lo stile del codice Go con golangci-lint
  • make format - formatta il codice Go con go fmt
  • make dist - crea un archivio dei sorgenti che include tutte le dipendenze

Installazione di Java gateway

È necessario installare Java gateway solo se si desidera monitorare applicazioni JMX. Java gateway è leggero e non richiede un database.

Per installare dai sorgenti, per prima cosa scaricare ed estrarre l'archivio dei sorgenti.

Per compilare Java gateway, eseguire lo script ./configure con l'opzione --enable-java. Si consiglia di specificare l'opzione --prefix per richiedere un percorso di installazione diverso da quello predefinito /usr/local, perché l'installazione di Java gateway creerà un intero albero di directory, non solo un singolo eseguibile.

./configure --enable-java --prefix=$PREFIX

Per compilare e impacchettare Java gateway in un file JAR, eseguire make. Si noti che per questo passaggio saranno necessari gli eseguibili javac e jar nel proprio path.

make

Ora si dispone di un file zabbix-java-gateway-$VERSION.jar in src/zabbix_java/bin. Se si è a proprio agio nell'eseguire Java gateway da src/zabbix_java nella directory della distribuzione, si può procedere alle istruzioni per configurare ed eseguire Java gateway. In caso contrario, assicurarsi di disporre di privilegi sufficienti ed eseguire make install.

make install

Procedere alla configurazione per maggiori dettagli sulla configurazione e l'esecuzione di Java gateway.

Installazione del servizio web Zabbix

L'installazione del servizio web Zabbix è necessaria solo se si desidera utilizzare i report pianificati.

Per installare dai sorgenti, per prima cosa scaricare ed estrarre l'archivio dei sorgenti.

Per compilare il servizio web Zabbix, eseguire lo script ./configure con l'opzione --enable-webservice.

Per compilare il servizio web Zabbix deve essere installata una versione di Go supportata.

Eseguire zabbix_web_service sulla macchina in cui è installato il servizio web:

zabbix_web_service

Per maggiori dettagli sulla configurazione della generazione dei report pianificati, procedere alla configurazione.

Ottenere il codice sorgente di Zabbix

Esistono diversi modi per ottenere il codice sorgente di Zabbix:

  • È possibile scaricare le versioni stabili rilasciate dal sito web ufficiale di Zabbix
  • È possibile scaricare le build notturne dalla pagina sviluppatori del sito web ufficiale di Zabbix
  • È possibile ottenere l'ultima versione di sviluppo dal sistema di repository del codice sorgente Git:

Per clonare il repository deve essere installato un client Git. Il pacchetto ufficiale del client Git da riga di comando è comunemente chiamato git nelle distribuzioni. Per installarlo, ad esempio, su Debian/Ubuntu, eseguire:

sudo apt-get update
sudo apt-get install git

Per ottenere tutto il codice sorgente di Zabbix, spostarsi nella directory in cui si desidera collocare il codice ed eseguire:

git clone https://git.zabbix.com/scm/zbx/zabbix.git

Problemi di compilazione

Questi sono i problemi noti relativi alla compilazione di Zabbix dai sorgenti. Per tutti gli altri casi, vedere la pagina Problemi noti.

Libreria in una posizione non standard

Zabbix consente di specificare una libreria situata in una posizione non standard. Nell'esempio seguente, Zabbix eseguirà curl-config dalla posizione non standard specificata e utilizzerà il suo output per determinare la libcurl corretta da usare.

$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Questo funzionerà se è l'unica libcurl installata nel sistema, ma potrebbe non funzionare se è presente un'altra libcurl installata in una posizione standard (ad esempio dal gestore pacchetti). Questo è il caso in cui per Zabbix è necessaria una versione più recente della libreria e quella più vecchia serve per altre applicazioni.

Pertanto, specificare un componente in una posizione non standard non funzionerà sempre quando lo stesso componente esiste anche in una posizione standard.

Ad esempio, se si utilizza una libcurl più recente installata in /usr/local mentre il pacchetto libcurl è ancora installato, Zabbix potrebbe selezionare quella sbagliata e la compilazione non riuscirà:

usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
/tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
collect2: error: ld returned 1 exit status

Qui, la funzione curl_easy_header() non è disponibile nella vecchia /usr/lib/x86_64-linux-gnu/libcurl.so, ma è disponibile nella più recente /usr/local/lib/libcurl.so.

Il problema riguarda l'ordine dei flag del linker e una soluzione consiste nello specificare il percorso completo della libreria in una variabile LDFLAGS:

$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Si noti l'opzione -Wl,--no-as-needed, che potrebbe essere necessaria su alcuni sistemi (vedere anche: opzioni di linking predefinite sui sistemi basati su Debian).

Dimensione dello stack troppo piccola su alcuni sistemi

Se Zabbix va in crash o si blocca a causa di overflow dello stack, è possibile aumentare la dimensione dello stack per thread utilizzando l'opzione --with-stacksize durante la configurazione dei sorgenti. Questo problema può verificarsi su sistemi con limiti predefiniti bassi per lo stack dei thread, in particolare durante il preprocessing, dove vengono creati più thread.

L'esempio seguente imposta la dimensione dello stack a 512 KB per thread:

./configure --enable-server --with-mysql --with-stacksize=512

È possibile controllare i limiti dello stack dei thread del sistema in fase di esecuzione utilizzando il comando ulimit -s sui sistemi basati su Linux.