Installare Zabbix

Zabbix e' un potente stumento di monitoraggio dei sistemi Open Source noto per la ricchezza di funzionalita'.
Questo documento descrive, in termini pratici, come installare e configurare Zabbix.
Dopo una breve introduzione sui principali elementi dell'archittettura di Zabbix, vengono descritti i passi per l'installazione del server Zabbix e degli agenti sui sistemi monitorati. Ecco i principali capitoli: Introduzione (da saltare se conoscete gia' Zabbix), Architettura (da saltare se conoscete gia' bene Zabbix), Installazione Zabbix, Installazione Agent, ... Varie ed eventuali.
Il documento fa riferimento alla versione 3.0 LTS di Zabbix su CentOS 7.3 e MySQL 5.7 ma e', mutatis mutandis, valido anche per le altre versioni.

Introduzione

Zabbiz e' uno dei piu' diffusi e completi strumenti di network e system monitoring. Zabbiz ha un'interfaccia completa, ha la possibilita' di personalizzare la console, e mantiene i dati su un DB (tipicamente MySQL). Zabbix puo' essere utilizzato come strumento di monitoraggio aziendale e, grazie alla memorizzazione dei dati e alla loro semplice presentazione, anche come strumento di Performance e Capacity Management.
Zabbix e' un Open Source rilasciato con licenza GNU. Sono disponibili ulteriori plugin (tipicamente anch'essi Open Source) ed eventualmente il supporto.

Zabbix presenta con una serie di mappe e di grafici i dati raccolti dai sistemi controllati rendendo semplice ed efficace il monitoraggio di una realta' aziendale anche molto complessa.

I controlli piu' semplici (ping, SMTP, HTTP) possono essere eseguiti senza installare nulla sui sistemi da controllare. Per disporre delle funzionalita' piu' complete Zabbix richiede l'installazione di agenti e l'apertura di porte specifiche.

Per ogni metrica raccolta e' possibile configurare uno o piu' triggers. Ad ogni trigger e' possibile associare un livello di gravita' (che regola il colore con cui verra' cerchiato l'host sulla mappa) e una soglia in base alla quale si possono definire le azioni (invio mail, invio sms, esecuzione di uno script ecc..). Sia i trigger che le azioni possono essere create in base a condizioni molto sofisticate.

Zabbix Server, di default, fornisce un piccolo insieme di template di controlli per monitorare i servizi/applicazioni/S.O. piu' diffusi (S.O. Linux, Windows, MySQL ecc). Vi sono diversi Template aggiuntivi (per esempio dalla sezione zabbix-community-repos di github) oppure si possono scrivere i propri template personalizzati. Scrivere un Template di controlli Zabbix non e' difficile, occorre naturalmente conoscere bene Zabbix, il sistema remoto da monitorare e avere a disposizione un po' di tempo per testare e far funzionare il tutto.

Architettura

Dal punto di vista architetturale Zabbix e' composto da due componenti: zabbix-server e zabbix-web che costituiscono rispettivamente il backend ed il frontend dell'ambiente. Entrambe le componenti utilizzano una base dati (generalmente MySQL) su cui sono salvate le configurazioni e le statistiche raccolte.
Il backend contiene il motore di schedulazione che si occupa di richiedere le statistiche agli agenti distribuiti sui sistemi da controllare.
Il frontend presenta la GUI su web ed e' implementato in PHP utilizzando una serie di extension (eg. gd bcmath ctype libXML xmlreader xmlwriter session sockets mbstring gettext ldap mysqli ...).

Sui sistemi da monitorare vengono tipicamente installati Agent Zabbix. Nel caso in cui non vengano installati Agent remoti e' possibile utilizzare i controlli di tipo Simple oppure una serie di altri controlli che sfruttano protocolli standard (eg. SNMP, SSH, JDBC, ecc.) oppure script esterni. Con gli Agent si ha la piu' completa ed automatizzata raccolta di informazioni, quindi vengono generalmente installati anche perche' hanno un peso limitato, una configurazione semplicissima e non richiedono manutenzione (funzionano senza problemi anche versioni molto piu' vecchie di Agent rispetto al server Zabbix).
Con l'installazione di un Agent e' possibile utilizzare due tipi di controlli: Active o Passive. I controlli di tipo Passive sono guidati dal server Zabbix. Il traffico dati avviene sulla porta TCP/10050 ed e' zabbix-server ad interrogare gli agent sui sistemi controllati. Il controllo di tipo Active viene utilizzato quando, ad esempio per ragioni di sicurezza, i sistemi da controllare non possono essere raggiunti dall'esterno e sono quindi loro a farsi carico della trasmissione dei dati. Il traffico avviene sulla porta TCP/10051. Altro caso tipico per i controlli Active e' la segnalazione di fault.

I componenti Zabbix Proxy consentono di collezionare le richeste verso i device su un server intermedio per poi inviarle verso lo Zabbix Server. I Proxy vengono utilizzati nelle architetture piu' complesse per ridurre il traffico e semplificare le abilitazioni di rete. Il caso d'esempio piu' comune e' un datacenter remoto.

Installazione di Zabbix

Sono possibili diverse modalita' di installazione descritte compiutamente nella documentazione ufficiale. Utilizzando la tecnica dei pacchetti precompilati l'installazione e' semplice e, sopratutto, facilmente aggiornabile:

rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm yum install zabbix-server-mysql zabbix-web-mysql # Non e' strettamente necessario... ma perche' non monitorare con Zabbix anche l'host? yum install zabbix-agent

Zabbix funziona senza differenze con tutti i fork di MySQL che e' il tipo di database piu' utilizzato e consigliato per Zabbix (per usare un altro tipo di DB bisogna scegliere un altro binario o ricompilare). Se si vuole utilizzare il MySQL ufficiale di Oracle (su CentOS e' preinstallato MariaDB) eseguire i comandi:

rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm yum install mysql-community-client mysql-community-server mysql-community-libs-compat

Ora e' necessario configurare ed caricare il DB locale (per le installazioni piu' significative e' opportuno utilizzare un DB server dedicato):

systemctl start mysqld grep 'temporary password' /var/log/mysqld.log mysql -p ### Utilizzare la password ricavata con il comando precedente! alter user 'root'@'localhost' identified by 'Pas4Zab!'; create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@localhost identified by 'Z4bPass!'; quit; zcat /usr/share/doc/zabbix-server-mysql-3.0.8/create.sql.gz | mysql -uzabbix -p zabbix

E' ora possibile configurare l'accesso al DB da zabbix configurando nel file /etc/zabbix/zabbix_server.conf:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Z4bPass!

La componente di frontend utilizza Apache, va configurato il file /etc/httpd/conf.d/zabbix.conf con (dovrebbe mancare solo il parametro in neretto):

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 always_populate_raw_post_data -1
php_value date.timezone Europe/Rome

Se e' attivo SELinux va disabilitato ponendo SELINUX=disabled in /etc/selinux/config e riavviando il server.
Ora vanno attivati e configurati al boot i servizi:

systemctl start zabbix-server systemctl start httpd

Eventuali errori si controllano sul file /var/log/messages...

Infine vanno configurati al boot i servizi:

systemctl enable mysqld systemctl enable zabbix-server systemctl enable httpd

Tutto fatto!

Si puo' ora accedere ad http://server/zabbix e proseguire con gli ultimi, importanti passi di configurazione...

Problemi? Parliamone!

Su CentOS 7 i demoni httpd hanno la fantasia di parlare ipv6... e' una cosa bellissima ma se si vuole una normale connessione bisogna cambiare il file /etc/httpd/conf/httpd.conf impostando:

Listen 0.0.0.0:80

C'e' il firewalld (nuovo nome per le iptables)? Oltre a disabilitarlo... e' possibile configurarlo:

firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=10050/tcp firewall-cmd --permanent --add-port=10051/tcp systemctl restart firewalld

C'e' SELinux? Qui la tentazione di disabiltarlo e' ancora piu' forte! Basta impostare in /etc/sysconfig/selinux:

SELINUX=disabled

Ed effettuare il reboot.

Altrimenti la configurazione richiesta per Zabbix e':

setsebool -P httpd_can_connect_zabbix=1

Configurazione di Zabbix

Risolto tutto si puo' effettuare la configurazione grafica.

Accedendo a http://nome_server/zabbix si viene indirizzati su /zabbix/setup.php:

Al termine ricordare che:
"The default user name is Admin, password zabbix" ed ovviamente e' opportuna cambiarla!

Installazione Zabbix Agent

Gli Agent di Zabbix vanno installati su tutti i server che si vogliono monitorare (i controlli effettuabili da Zabbix senza un Agent installato sono molto limitati).

Gli Agent Zabbix sono disponibili per un'ampia serie di versioni di differenti sistemi operativi ed ambienti. Utilizzando la tecnica dei pacchetti precompilati l'installazione e' banale:

rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm yum install zabbix-agent
La configurazione degli agenti zabbix su Unix/Linux si esegue agendo sul file di configurazione del demone zabbix_agentd.conf (di default disponibile in /etc/zabbix). L'unico parametro da configurare e' Server ovvero la lista degli IP dei server Zabbix (e' possibile indicarne piu' di uno usando la virgola come separatore). Nel caso si utilizzino i controlli attivi vanno configurati anche i parametri ServerActive ed Hostname.

Se si deve controllare un Server Windows: il download si effettua dal sito ufficiale, la configurazione si effettua nel file C:\zabbix_agentd.conf l'agente viene eseguito come servizio, se si vogliono utilizzare i check attivi va impostato l'hostname.

Anche se e' consigliabile utilizzare una versione di Agent recente in realta' un Server Zabbix e' in grado di connettersi a tutte le versioni di Agent che hanno poche differenze tra loro.

Varie ed Eventuali

Le versioni di Zabbix sono mantenute su questa pagina.

Un documento utile per il monitoraggio dei Database con Zabbix e' questo.


Titolo: Installare Zabbix
Livello: Avanzato (3/5)
Data: 14 Febbraio 2017
Versione: 1.0.1 - 8 Marzo 2017
Autore: mail [AT] meo.bogliolo.name