Category Archives: Monitoraggio

Monitorare un server Linux con Nagios

Il monitoraggio di un server remoto Linux con Nagios si basa sull’utilizzo di NRPE che deve essere installato sul computer da monitorare.
Il server su cui è installato Nagios esegue il comando check_nrpe che contatta NRPE sul computer remoto richiedendo l’esecuzione di un particolare comando.
Il risultato di questo comando viene inviato da NRPE a check_nrpe sul server su cui si trova Nagios.

Per monitorare un computer remoto Linux con Nagios come prima cosa dobbiamo installare i plugin Nagios e NRPE.

-Creazione di un account Nagios

# useradd nagios
# passwd nagios

-Installazione di nagios plugin

# cd /home/downloads
# tar xvfz nagios-plugins-1.4.11.tar.gz
# cd nagios-plugins-1.4.11
# export LDFLAGS=-ldl
# ./configure –with-nagios-user=nagios –with-nagios-group=nagios –enable-redhat-pthread-workaround
# make
# make install
# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec/

-Installazione NRPE

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
tar -xvzf nrpe-2.12.tar.gz

cd nrpe-2.12

./configure

make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd

Per fare funzionare NRPE in modo corretto è necessario modificare il file /etc/xinetd.d/nrpe e inserire l’indirizzo ip del server su cui è in esecuzione il server Nagios nella direttiva only_from

only_from = 127.0.0.1 192.168.1.1

A questo punto è possibile avviare il servizio.

-Modificare il file nrpe.cfg

Il file /usr/local/nagios/etc/nrpe.cfg presente sul computer che si vuole monitorare contiene i comandi necessari per eseguire i controlli.
Di default questo file contiene una serie di controlli standard come il seguente

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10

Nella definizione dei comandi -w indica il limite di avviso e -c indica il limite critico.

Terminata la configurazione del computer remoto è necessario configurare il server Nagios

-Scaricare e installare il componente aggiuntivo NRPE

# tar xvfz nrpe-2.12.tar.gz
# cd nrpe-2.1.2
# ./configure
# make all
# make install-plugin

-Verificare il funzionamento del collegamento tra il server Nagios e il computer remoto con il seguente comando

# /usr/local/nagios/libexec/check_nrpe -H <Indirizzo Ip>

-Definire il computer remoto nei file di configurazione
Creare un file di configurazione /usr/local/nagios/etc/objects/remotehost.cfg o in un’altra directory se i file di configurazione non si trovano dove indicato e definire il computer remoto in modo simile al seguente

define host{
use linux-server
host_name remotehost
alias Remote Host
address 192.168.1.2
contact_groups admins
}

-Nello stesso file è necessario definire i servizi che devono essere controllati in modo simile al seguente

define service{
use generic-service
service_description Root Partition
contact_groups admins
check_command check_nrpe!check_disk
}

-Se check_nrpe non è definito di default è necessario aggiungerlo in commands.cfg

define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$
}

-Riavviare Nagios.

Monitorare un server Windows con Nagios

Nagios può essere utilizzato per monitorare vari aspetti di un server Windows come il processore e la memoria.

Questo viene fatto tramite un agent che deve essere installato sul server Windows.

Vediamo quindi come configurare Nagios per il monitoraggio di un server Windows, il presupposto è un’installazione di Nagios funzionante.

Come prima cosa è necessario modificare il file /etc/nagios.conf presente sul server su cui si è installato Nagios togliendo il commento dalla riga
#cfg_file=/etc/nagios/objects/windows.cfg

che diventa quindi
cfg_file=/etc/nagios/objects/windows.cfg


In questo modo Nagios utilizza il file specificato che contiene la definizione degli host e dei servizi Windows.

A questo punto è possibile installare l’agent sul sistema Windows da monitorare.
L’agent più diffuso è NSClient++ che può essere scaricato dal sito http://sourceforge.net/projects/nscplus.
Durante l’installazione dell’agent viene chiesto di inserire l’indirizzo ip del server che può collegarsi all’agent, bisogna quindi inserire l’indirizzo ip del server su cui si è installato Nagios.
Al termine dell’operazione è possibile modificare il file nsc.ini che si trova nella directory in cui è stato installato l’agent in modo da attivare i moduli.

Per attivare i moduli è necessare togliere il commento dalle relative righe.

Inoltre è necessario togliere il commento nel punto in cui viene indicata la porta nella sezione [NSClient]

Dopo che l’agent è stato installato, è possibile configurare il monitoraggio su Nagios modificando il file /etc/nagios/objects/windows.cfg

Se stiamo configurando il primo sistema Windows da monitorare possiamo semplicemente modificare l’host di esempio che si trova nel file cambiando i parametri host_name e address.

define host{
use windows-server ; Inherit default values from a Windows server template (make sure you keep this line!)
host_name winserver
alias My Windows Server
address 192.168.1.2
}

Una volta effettuata la modifica è necessario specificare gli elementi che devono essere monitorati.
Se stiamo configurando il monitoraggio del primo sistema windows, è possibile modificare i dati di esempio presenti nel file inserendo il nome specificato in precedenza come host_name.
Di default troviamo già esempi di monitoraggio per diversi elementi come l’utilizzo del processore e della memoria.

define service{
use generic-service
host_name winserver
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90
}

define service{
use generic-service
host_name winserver
service_description Memory Usage
check_command check_nt!MEMUSE!-w 80 -c 90
}

Una volta configurati gli elementi che si vuole monitorare è necessario salvare il file e riavviare nagios.

Come sempre, Nagios permette di creare configurazioni molto dettagliate, è necessario quindi pianificare bene cosa si vuole controllare e i limiti oltre i quali è necessario che siano effettuate le notifiche.

Escludere un servizio da logwatch

In passato abbiamo parlato di logwatch, uno strumento che si occupa di analizzare i log e inviare una mail riassuntiva ogni giorno.

In alcuni casi, è possibile che si voglia escludere un servizio da quelli per cui logwatch analizza i file di log.

Per escludere un servizio è necessario aprire il file di configurazione /etc/logwatch/conf/logwatch.conf e inserire una riga simile alla seguente.
Service = “-<nomeservizio>”

Per escludere sendmail bisogna quindi inserire la riga
Service = “-sendmail”

Durante la prossima esecuzione, logwatch non invierà più informazioni relative ai servizi specificati.

Struttura delle directory di Logwatch

La directory principale di logwatch è /usr/share/logwatch, in questa directory si trovano i file di configurazione e gli script perl su cui si basa lo strumento.

All’interno troviamo le seguenti cartelle
default.conf – Contiene i file di configurazione predefiniti.
dist.conf – Contiene file di configurazioni specifici per la distribuzione che si sta utilizzando.
lib – Contiene le librerie utilizzate dagli script.
scripts – Contiene gli script in perl.

Durante l’installazione viene creata anche la cartella /etc/logwatch in cui sono presenti le seguenti directory
conf – Contiene file di configurazione specifici per il server su cui si è fatta l’installazione.
scripts – Contiene script specifici per il server.

le directory
/usr/share/logwatch/default.conf
/usr/share/logwatch/dist.conf
/etc/logwatch/conf
hanno la stessa struttura
services – Contiene i file di configurazione relativi a ogni servizio. Logwatch utilizza questa cartella per determinare i servizi disponibili.
logfiles – Contiene i file di configurazione relativi ai gruppi logfile. Ogni gruppo logfile contiene informazioni relative a uno o più file di log che hanno la stessa struttura.
logwatch.conf – Contiene la configurazione di Logwatch.
ignore.conf – Contiene delle espressioni regolari. Quando l’output di logwatch corrisponde a una delle espressioni regolari, la riga che corrisponde viene eliminata.

le directory
/usr/share/logwatch/scripts
/etc/logwatch/scripts
hanno la stessa struttura
services – Contiene gli script relativi a ogni servizio.
shared – Contiene script che possono essere utilizzati per più servizi.
logfiles – Può contenere cartelle chiamate come i gruppi logfile. Gli script presenti nelle directory sono eseguiti per i servizi associati al gruppo logfile corrispondente.

Personalizzare la configurazione di logwatch

Logwatch è incluso in diverse distribuzioni Linux, generalmente ogni distribuzione fornisce una configurazione di logwatch adatta alla propria struttura dei log.

In alcuni casi risulta però necessario personalizzare la configurazione, questo può essere fatto modificando i file presenti nella cartella /etc/logwatch/conf, i valori assegnati alle variabili in questi file sovrascrivono infatti quelli delle variabili specificate dai file presenti nella directory /usr/share/logwatch/deault.conf.

I file di configurazione di logwatch contengono quattro diversi tipi di direttive
-Impostazioni del valore di variabili riservate come LogFile e Archive.
-Impostazioni di variabili. Queste righe iniziano con il carattere $ seguito dal nome della variabile
-Riferimenti a script. Queste righe iniziano con il carattere *.
-Commenti. Queste righe iniziano con il carattere #.

Un altro modo per personalizzare la configurazione di logwatch consiste nell’utilizzare il file /etc/logwatch/conf/override.conf.
Le righe presenti in questo file possono iniziare in uno dei seguenti modi.
# – La riga è un commento.
logwatch: – Indica che il resto della riga è un’opzione di configurazione globale e usa la stessa sintassi del file /usr/share/logwatch/default.conf/logwatch.conf.
services/service_name: – Service_name è il nome di un servizio e viene indicato che il resto della riga è un’opzione di configurazione relativa a un determinato servizio e viene usata la sintassi dei file presenti nella cartella /usr/share/logwatch/default.conf/services.
logfiles/service_name: – Service_name è il nome di un servizio e viene indicato che il resto della riga è un’opzione di configurazione relativa a un determinato servizio e viene usata la sintassi dei file presenti nella cartella /usr/share/logwatch/default.conf/logfiles.

Quindi inserendo la riga
logfiles/http: LogFile = /usr/local/apache/*access_log
nel file override.conf possiamo indicare una cartella diversa da quella predefinita in cui trovare i file di apache da analizzare.

Oltre che personalizzare la configurazione di Logwatch, risulta possibile anche personalizzare gli script.

Per fare questo basta inserire uno script con lo stesso nome nella cartella /etc/logwatch/scripts.

Installazione di logwatch in Linux

In questo articolo esaminiamo l’installazione e la configurazione di un altro strumento per l’analisi dei log, Logwatch, tramite il quale è possibile ricevere report relativi al contenuto dei file di log.

Installazione
Nel nostro esempio si utilizza CentOs, l’installazione viene quindi fatta attraverso yum in modo molto semplice.
yum install logwatch

Configurazione
Il file di configurazione principale di Logwatch è /etc/logwatch/conf/logwatch.conf.
Le opzioni più interessanti che è possibile utilizzare in questo file per sovrascrivere quelle di default presenti in /usr/share/logwatch/default.conf/logwatch.conf sono le seguenti
LogDir = /var/log
Specifica la directory in cui si trovano i log.

MailTo = root
Indica l’indirizzo a cui devono essere inviati i report.

Print = No
Impostando Yes come valore di questa opzione, il report viene visualizzato sul terminale invece che essere inviato tramite mail.

Range = yesterday
Specifica il periodo su cui deve essere effettuata l’analisi dei log e possono essere utilizzati i seguenti valori
All – Tutti i log.
Yesterday – Log del giorno prima.
Today – Log di oggi.

Detail = Med
Il livello di dettaglio dei report.
Il valore può essere Low, Med o High.

Service = All
Indica i servizi per i quali devono essere analizzati i log.
Il valore può essere ALL o una lista di servizi.

Utilizzo

In fase di installazione viene anche creato il file /etc/cron.daily/0logwatch attraverso il quale avviene la schedulazione dell’esecuzione del programma ogni giorno.

Per testare logwatch è possibile eseguirlo con il seguente comando
/usr/sbin/logwatch –mailto prova@prova.it

Logwatch è uno strumento utile ma non può sostituire l’analisi completa dei file di log.