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.
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.