Nagios – Checkeando snapshots en máquinas virtuales de VMware

En este post veremos como Nagios nos puede ayudar a monitorizar la existencia de snapshots en nuestra infraestructura virtual, de todos es sabido el peligro que tiene tener snapshots o dejarlos durante largos periodos… backups colgados que dejan snapshots a medias… Para combatir esto, automatizaremos un checkeo periodico con un gran script!

 

Este script necesita que tengamos SSH habilitado en un host ESXi (al menos) para checkear la existencia de snapshots en los datastores de un host, no usará por tanto SNMP. El script, necesitará validarse contra el host ESXi a la hora de ejecutarse, por lo que deberemos configurar ssh fingerprint. Así el host ESXi confiará en el usuario que ejecuta el script desde la máquina de Nagios y no preguntará por los credenciales.

Lo primero, será loguearnos en la shell de nuestro amado Nagios, ahí, nos logueamos con el usuario que ejecuta los scripts, en mi caso el usuario se que es ‘centreon-engine’ (ya que uso CES), por lo que nos logueamos, generamos las claves para nuestro usuario y copiamos la clave pública al host ESXi, al ser la primera vez que nos conectemos además confirmaremos con un ‘yes’ que confiamos en su firma.

su - centreon-engine
ssh-keygen -t rsa
scp /var/lib/centreon-engine/.ssh/id_rsa.pub root@HOST_ESXI:/tmp

 

 

Ahora, nos vamos al host ESXi, nos conectamos con un Putty o similar mediante SSH, y añadimos al fichero de claves de confianza la que acabamos de generar:

cat /tmp/id_rsa.pub >> /etc/ssh/keys-root/authorized_keys

 

 

Bien, lo interesante empieza, ya, nos bajamos este script, lo copiamos al directorio /usr/lib/nagios/plugins/ y lo hacemos ejecutable:

https://exchange.nagios.org/directory/Plugins/Operating-Systems/*-Virtual-Environments/VMWare/Check-snapshots-age-and-number/details

 

Probamos a ejecutarlo, ojo, al ejecutarlo como root nos pedirá validarnos, si queremos, podemos hacer los pasos anteriores y copiar también la clave pública de root para que el host ESXi confíe en lo que vamos a ejecutar. Y si no, metemos la clave manualmente y pista! Deberemos especificar el host ESXi al que haremos la consulta y ademas de indicar primeramente el número de snapshots que permitiremos hasta que nos cante Warning, luego el valor a Critical y si queremos también la antiguedad en días que permitimos:

./check_VM_snapshots HOST_ESXi NUM_SNAP_WARNING NUM_SNAP_CRITICAL DIAS_SNAP

 

 

Recordamos, creamos primero desde Centreon el Comando, desde «Configuration» > «Commands» > «Add…» o duplicamos de uno existente y completamos:

  • Command Name: Indicamos un nombre al comando, en mi caso le pongo el mismo que el script para asociarlo más fácil.
  • Check Type: Lo dejamos en Check.
  • Command Line: /usr/lib/nagios/plugins/check_VM_snapshots $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$

 

Pulsamos en «Describe arguments» y definimos los 3 argumentos del comando, el ARG1 será el Warning como recordaremos, el ARG2 el valor de Crítical y ARG3 los días de antiguedad del snap.

Grabamos con «Save»!

 

Ahora ya podremos definir el Servicio que monitorizará los Snapshots, lo creamos o duplicamos desde «Configuration» > «Services». Deberemos tener en cuenta lo siguiente:

  • Description: Será el nombre con el que veremos el servicio en la monitorización, un nombre como ‘Snapshots en MVs’ lo identifica perfectamente o que? 😉
  • Linked with Hosts: Lo asociaremos al host ESXi con el que hicimos el fingerprint. Será el host encargado en buscar en los datastores y en las MVs la existencia de snapshots.
  • Template: Normalmente ‘generic-active-service-custom’, dependerá de las que usemos o hayamos modificado.
  • Check Command: Seleccionamos el Comando que hemos creado en el paso anterior ‘check_VM_snapshots’
  • Args: Dicho comando nos requiere que cumplimentemos los 3 argumentos, en este ejemplo quiero que cuando exista 1 snapshot en mi organización me avise con un Warning y si hay 2 o más con un Critical, todo ello cuando los snaps tengan más de 2 días.

 

Guardamos con «Save».

 

Exportamos los datos y recargamos la configuración para que Centreon pueda leer los nuevos cambios que acabamos de meter. Como siempre iremos a “Configuration” > “Pollers” > “Export configuration”, seleccionando nuestro poller, marcamos los checks y reiniciamos & “Export”.

Y ahora ya, desde «Monitoring» ya visualizaremos que sale el servicio que checkeará. Para forzar y probarlo, le seleccionamos y en el combo escogemos: ‘Services – Schedule immediate check (Forced)’.

Y listo!!!! Ya tenemos más cositas monitorizadas en nuestro entorno! Cada día descansaremos mejor!!! Como siempre, espero que lo disfrutéis todos!!

 

Héctor Herrero