In questo post ho discusso della configurazione di LVS in modalità Direct Routing. Tale configurazione richiedeva l’installazione e la corretta configurazione di arptables_jf per la gestione delle richieste ARP dirette ai frontend. Adesso vedremo come verificare l’effettivo funzionamento del suddetto applicativo attraverso l’NMS open source per eccellenza, Nagios.
Creazione dell’eseguibile e configurazione dell’NMS
Il codice bash che ho creato per effettuare i controlli sullo status di arptables_jf è il seguente:
#!/bin/bash host=$1 warning=$2 critical=$3 usage="check_arptables <host> <warning> <critical>" if [ -n "$host" ]; then if [ -n "$warning" ];then if [ -n "critical" ];then if [ "$warning" -lt "$critical" ];then echo "UNKNOWN: warning has to be greater than critical" exit 3; else output=`sudo arptables -L | grep -v Chain | grep -v target | wc -l` if [ "$output" -le "$critical" ];then echo "CRITICAL: total number of rules is $output"; exit 2; elif [ "$output" -gt "$critical" -a "$output" -le "$warning" ];then echo "WARNING: total number of rules is $output"; exit 1; else echo "OK: total number of rules is $output"; exit 0; fi fi else echo "$usage" exit 3; fi else echo "$usage" exit 3; fi else echo "$usage" exit 3; fi
Il suddetto codice è abbastanza esplicativo: dopo aver verificato la presenza di tutti i parametri richiesti e la loro consistenza (ovvero la soglia di warning deve essere strettamente maggiore di quella di critical), viene effettuato il conteggio delle regole arptables attive sul frontend monitorato. Il comando principale è il seguente:
sudo arptables -L | grep -v Chain | grep -v target | wc -l
Da notare che è presente la direttiva sudo poichè l’applicativo arptables richiede i privilegi di root per essere eseguito. Rendiamo il suddetto codice eseguibile:
[root@NMS ~]# chmod +x check_arptables
e copiamolo nella directory /usr/lib64/nagios/plugins del frontend:
[root@NMS ~]# scp check_arptables root@frontend.dominio.com:/usr/lib64/nagios/plugins
Ora è possibile, all’interno della configurazione di Nagios, definire il comando da lanciare per monitorare arptables sul frontend (all’interno del file /etc/nagios/commands.cfg):
# 'check_remote_arptables' command definition define command{ command_name check_remote_arptables command_line $USER1$/check_by_ssh -H $HOSTADDRESS$ -C "/usr/lib64/nagios/plugins/check_arptables $ARG1$ $ARG2$ $ARG3$" }
Tale comando non fa altro che connettersi al frontend via SSH (senza password, mediante un semplice scambio di chiavi RSA) e lanciare l’eseguibile precedentemente creato.
Nella configurazione di Nagios relativa allo specifico frontend, invece, occorre creare un servizio simile al seguente:
define service{ use local-service ; Name of service template to use host_name frontend.dominio.com service_description Arptables Rules Status check_command check_remote_arptables!localhost!3!2 notifications_enabled 0 }
Configurazione del frontend
Sul frontend è sufficiente editare il file /etc/sudoers per consentire all’utente nagios di lanciare il comando arptables senza sessione TTY e senza richiesta di inserimento della password. Nella fattispecie, nel primo caso è sufficiente commentare la direttiva:
#Defaults requiretty
mentre nel secondo caso occorre inserire la seguente stringa:
nagios ALL=(root) NOPASSWD: /sbin/arptables
A configurazione del frontend terminata possiamo lanciare sull’NMS il comando:
[root@NMS ~]# service nagios reload
ed abbiamo finito.
Ora arptables è correttamente monitorato.
Alla prossima.