Nagios, sistema di monitoraggio a livello mega azienda, installato sul Raspberry Pi 3? Perchè no? Ed è davvero così difficile?
Ho deciso di scoprirlo e di scrivere questa guida passo passo per chi avesse le mie stesse necessità!
Nota del 14/06/2021 :
Per chi non vuole sbattersi, esiste il progetto NEMS (Nagios Enterprise Monitoring Server for Raspberry Pi) che consiste nelle stesse cose, ma combinate sotto forma di immagine.
A voi la scelta!
Ci tengo a ringraziare di cuore tutte le persone che hanno postato i loro metodi per installare Nagios e tutto quello che gli serve sul RasperryPi. Ovviamente non ho trovato una guida aggiornata, c'era chi installava Nagios3 , chi usava una versione di PHP non più aggiornata, chi invece inseriva i passaggi fondamentali ma con poche spiegazioni, chi metteva tante spiegazioni ma saltava alcuni passaggi...
Mi sono quindi preso la briga di scrivere una guida passo passo a prova di scemo come me per installare Nagios 4.4.2 , i Nagios Plugin aggiornati alla versione 2.2.1, Apache versione 2 e PHP 7.3 sul Raspberry Pi 3 basandomi sull'ultima release di Raspbian, ovvero Buster.
E via che si parte!
Presupposti :
- Un Raspberry Pi 3
- una installazione funzionante
- un'accesso SSH
- un indirizzo ip statico
Per avere un indirizzo IP statico, invece, ho scritto un testo veloce veloce apposta, si chiama MSP : Assegnare un indirizzo IP statico al Raspberry
Da notare che al momento della stesura dell'articolo ho a bordo Raspian Buster.
Installiamo il certificato per autorizzare il programma APT a scaricare aggiornamenti via https con questo comando :
sudo apt-get -y install apt-transport-https lsb-release ca-certificates
Aggiungiamo ora la chiave di cifratura PGP per la versione di PHP e per quella di Apache
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo wget -O /etc/apt/trusted.gpg.d/apache2.gpg https://packages.sury.org/apache2/apt.gpg
Dopo la risposta "OK" aggiungiamo due nuove fonti di approvvigionamento degli aggiornamenti dei programmi :
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo sh -c 'echo "deb https://packages.sury.org/apache2/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/apache2.list'
Adesso aggiorniamo tutti i software a bordo del nostro Raspberry con questo comando :
sudo apt update && sudo apt upgrade -y
In questo modo si è scaricata la lista del software aggiornato, la si è confrontata con quello presente e vengono fatti tutti gli aggiornamenti del caso.
Installiamo quindi il webserver Apache così :
sudo apt-get install apache2 -y
Ed ora tutta la parte relativa al linguaggio PHP :
sudo apt-get install php7.3 libapache2-mod-php7.3 php7.3-cli php7.3-common php7.3-mbstring php7.3-gd php7.3-intl php7.3-xml php7.3-mysql php7.3-zip php7.3-curl php7.3-ldap php7.3-bz2 php-ssh2 php-apcu php-smbclient php-imagick php-pear -y
Ora che abbiamo quasi tutto, possiamo installare tutto quello che serve per Nagios a livello di software "accessori" con questo comando :
sudo apt-get install libmagickcore-dev libgd-dev libmcrypt-dev gettext bc gawk snmp libnet-snmp-perl -y
Ora facciamo pulizia dei pacchetti non più necessari, in caso ce ne fossero, usando il comando autoremove in questo modo :
sudo apt autoremove
Dopo tutta questa roba installata, non si sa mai che sia uscito qualche update, quindi per scrupolo è buona norma lanciare un comando di aggiornamento massiccio:
sudo apt update && sudo apt upgrade -y
Adesso abbiamo quasi tutto per poter iniziare, ma ci manca una parte fondamentale! La creazione di un gruppo di utenti che abbia accesso alla cartella di Nagios ed a quella di Apache. Quindi iniziamo a mettere l'utente "nagios" :
sudo /usr/sbin/useradd -m -s /bin/bash nagios
Adesso ci serve un gruppo utenti, creiamo quindi il gruppo "nagcmd" :
sudo /usr/sbin/groupadd nagcmd
Ora inseriamo l'utente "nagios" appena creato e gli diciamo che può scrivere nelle cartelle che ci interessano :
sudo /usr/sbin/usermod -a -G nagcmd nagios
Ora dobbiamo diventare utente root :
sudo -i
spostiamoci nella cartella tmp :
cd /tmp
Ed ora scarichiamo Nagios ed i relativi plugin :
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.2.tar.gz
wget http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
Poi estraiamo tutti gli archivi :
tar zxvf nagios-4.4.2.tar.gz
tar zxvf nagios-plugins-2.2.1.tar.gz
Ora spostiamoci nella cartella di Nagios
cd /tmp/nagios-4.4.2
Ed ora, finalmente, compiliamo Nagios con il permesso del gruppo "nagcmd" in questo modo :
./configure --with-nagios-group=nagios --with-command-group=nagcmd --with-httpd-conf=/etc/apache2/sites-available/
Se tutto è stato fatto a dovere, ci verà presentato un breve riassunto tipo questo :
*** Configuration summary for nagios 4.4.2 2018-08-26 ***:
General Options:
-------------------------
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagcmd
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Install ${includedir}: /usr/local/nagios/include/nagios
Lock file: /run/nagios.lock
Check result directory: /usr/local/nagios/var/spool/checkresults
Init directory: /lib/systemd/system
Apache conf.d directory: /etc/apache2/sites-available/
Mail program: /bin/mail
Host OS: linux-gnueabihf
IOBroker Method: epoll
Web Interface Options:
------------------------
HTML URL: http://localhost/nagios/
CGI URL: http://localhost/nagios/cgi-bin/
Traceroute (used by WAP): /usr/sbin/traceroute
Review the options above for accuracy. If they look okay,
type 'make all' to compile the main program and CGIs.
Ok, ora è il momento di installare davvero Nagios con questo elenco di comandi :
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
Tutti i files andranno automaticamente in "/usr/local/nagios/"
Ora cambiamo i permessi per poter far dialogare correttamente Nagios :
cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
Adesso dedichiamoci ai plugin di Nagios, spostiamoci quindi nella cartella che è stata creata prima così :
cd /tmp/nagios-plugins-2.2.1
Come prima, compiliamo i plugin di Nagios con il permesso del gruppo "nagcmd" in questo modo :
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl --with-ping-command=ping
make
make install
Tutti i plugin saranno disponibili nella cartella /usr/local/nagios/libexec/ .
Adesso che abbiamo compilato ed installato tutto, torniamo ad essere un utente "normale" con questo comando :
su pi
Ci siamo quasi, prima riavviamo Nagios per fargli tirare su i plugin così :
sudo service nagios restart
Abilitiamo poi i moduli che servono per la comunicazione tra Nagios ed il webserver Apache e gli diamo anche i permessi:
sudo a2enmod cgid
sudo a2ensite nagios
sudo a2enmod rewrite cgi
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Come ci viene anche suggerito dal prompt, riavviamo Apache per fargli digerire il nuovo modulo appena attivato :
sudo systemctl restart apache2
Poi diamo i permessi al gruppo "nagcmd" per scrivere in una cartella di Apache
sudo /usr/sbin/usermod -a -G nagcmd www-data
Mettiamo quindi un utente (che con grande inventiva ho chiamato "nagiosadmin") per l'interfaccia web :
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Ed ora avviamo il servizio di Nagios così :
sudo service nagios start
Con questo comando, vediamo se tutto va bene :
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Dovrebbe essere presentato un sommario tipo questo :
Nagios Core 4.4.2
Copyright (c) 2009-present Nagios Core Development Team and Community Contributo rs
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2018-08-16
License: GPL
Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...
Running pre-flight check on configuration data...
Checking objects...
Checked 8 services.
Checked 1 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 24 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 1 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
Per un rapido controllo, puntiamo il browser all'indirizzo ip del Raspberry, seguito da /nagios, nel mio caso ho scritto :
http://192.168.3.3/nagios/
Quando viene richiesto, inserire nome utente e password date prima (nagiosadmin e pass scelta)
Dovrebbe apparire la scritta "Nagios Core" e sotto "Demon running with PID XXXXX"
Benissimo, Nagios è in piedi, Apache è in piedi, direi che siamo a buon punto!
Bisogna però ricordarsi di far partire Nagios ad ogni riavvio del sistema, quindi scriviamo questo comando :
sudo systemctl enable nagios
A questo punto Nagios è installato, Apache anche ed i plugin di Nagios pure, ora bisogna dedicarsi al setup delle macchine che si vogliono monitorare, ma è argomento vastissimo e sarà quindi oggetto di un altro post quando ne avrò tempo...
Tutto quanto ho scritto non sarebbe stato in alcun modo possibile senza le persone che hanno lasciato testimonianza di quanto hanno fatto, ovvero :
Raspberrypi Forum - Come avere ultime versioni apache2 e Php su Raspbian Os
It Writ Small - Installing Nagios with Apache on Raspian or Ubuntu
PHP.net - Timezone
XE1E Radio Blog - NAGIOS 4 INSTALL RASPBERRY PI
RaspberryTips - Nagios on RaspberryPi
D3 Noob - Installing Nagios 4 on a Raspberry Pi
Mitesh Shah - How to Setup Nagios Monitoring System
ciao, come posso configurare nagios per verificare se nell’ host un determinato servizio funziona ?
RispondiEliminaCiao, dipende dal servizio. Letteratura in merito ce n'è a pacchi...
RispondiEliminaSi, sono davvero niubbo e ho guardato un po' in giro ma non ci ho capito un gran che, cmq su un host debbo monitorare che sia attivo un servizio, che viene lanciato all'avvio del sistema, usando il comando top, il comando in esecuizione si chiama domoticz
EliminaE tu vorresti usare Nagios solo per vedere se Domoticz è up? Mi pare un pochino come usare una bomba nucleare per ammazzare una zanzara... Potresti magari farti un piccolo scriptino locale che se il servizio si schianta lo ritira in piedi, senza dover mettere in piedi Nagios... (sorry per la risposta tardiva!)
EliminaCiao Mino. Secondo te è possibile fare un upgrade di Nagios alla versione 4.4.6?
RispondiEliminaCiao Roberto, potenzialmente si. Ma siccome non lo ho testato di persona, non posso darti certezze. Parlo solo per mia esperienza, quindi più che un parere non posso dare...
RispondiElimina