Monitorizando una cabina HP MSA
Seguimos con más cosicas que podemos monitorizar con Nagios o Centreon! Si tenemos en nuestra organización una cabina de almacenamiento de HP tipo MSA, sea de fibra o iSCSI, este es vuestro documento! De una manera sencilla podremos absorber mediante SNMP la información que nos interese controlar, sea el estado de los discos duros, las controladoras, volumenes, RAID, temperaturas, estado del chasis, alertas, etc, etc…
Bien, usaremos un par de scripts en este documento, aunque cada uno es libre de usar los que quiera! Empezamos con uno genérico que nos checkeará con un sólo comando toda la salud del hardware, checkea todos los sensores de la cabina. Y luego, usamos otro script que es una maravilla y pasándole distintos parámetros podremos ver los ítems de forma individual.
Check generico – Hardware Status,
Necesitaremos descargarnos este script, check_msa_hardware.pl, de la web magnífica Exchange Nagios (como siempre), desde: https://exchange.nagios.org/directory/Plugins/Hardware/Storage-Systems/SAN-and-NAS/Check-HP-MSA-(Modular-Smart-Array)-sensors/details. Este script nos valdrá para monitorizar cualquier HP MSA2312i o HP MSA2012i o HP MSA2012fc o HP MSA2324i o HP P2000 G3 MSA!!!!
Lo primero de todo, antes de seguir, será entrar en las controladoras de las MSA y habilitar SNMP, indicando una comunidad de confianza. Y luego ya, tras bajar el script y dejarlo en la carpeta de scripts de Centreon ‘/usr/lib/centreon/plugins’, en mi caso los guardo en ‘/usr/lib/nagios/plugins’, lo haremos ejecutable también como es habitual (‘chmod +x check_msa_hardware.pl’)! Y ya podremos probarlo desde shell, mediante el siguiente comando:
[sourcecode]./check_msa_hardware.pl -H DIRECCION_IP_CONTROLADORA -C COMUNIDAD_SNMP -l[/sourcecode]
Con ese comando como veremos listará todas las posibilidades que nos va a dar la MSA en cuestión, todo el control sobre los sensores de temperatura de las CPU, chasis, controladoras, estado de las fuentes de alimentación… Vamos de todo. Este script lo podremos usar para crear un servicio de monitorización desde Centreon que le podremos llamar ‘Hardware Status’ o algo similar, ya que este mismo script como vemos nos checkeará todos los ítems en cada cabina.
Por tanto es lo que haremos a continuación, crearemos el equipo de la cabina en Centreon para poder monitorizarla, para agregarla luego ya los servicios de monitorización que nos interesen. Empezaremos con el script genérico que acabamos de ver y luego vemos otro script que permite granularmente monitorizar cada ítem que nos interesa ver en la monitorización. Así que como siempre, creamos el host a monitorizar, crearemos el comando asociado al script y luego los servicios sobre este comando. Para monitoriza lo que nos interese, paso a paso!
Como es habitual, si no tenemos la cabina definida en nuestro Centreon tendremos que darla de alta como sabemos, “Configuration” > “Hosts” > “Add…” y rellenamos los siguientes datos & pulsamos en ‘Save’:
- Name: Indicaremos el nombre de la cabina y su controladora, si es que tiene más de una como es habitual.
- Alias: Indicamos el alias con el que veremos a este equipo en la monitorización, normalmente igual que el nombre.
- IP Address / DNS: Dirección IP de la controladora a monitorizar. Si tenemos más de una, repetiremos la creación de este host, por tantas controladoras que tengamos, por ejemplo: CABINA_A, CABINA_B… y luego los servicios que crearemos en este documento, los enlazaremos a todas las controladoras que tengamos, o bueno, cada uno que haga como quiera 😉
- SNMP Community / Version: Indicamos la comunidad SNMP que hemos establecido mediante GUI o CLI en nuestra cabina. Normalmente versión 2.
- Monitored from: Como siempre, por ahora si sólo tenemos un appliance central desde donde monitorizar, no nos queda más que seleccionarlo. Como veremos más adelante, en instalaciones grandes donde queramos repartir la carga, podremos seleccionar otro origen para ejecutar estos checks y no siempre la misma máquina de Centron (o Nagios en cada caso). O también por si tenemos una delegación remota y queremos reducir tráficos tontos.
- Templates & Create Services linked to the Template too: Seleccionamos ‘generic-active-host’ que es una plantilla genérica ya precreada, donde heredará las configs de dicha plantilla, al menos el servicio Ping, etc… E indiquemos por tanto que nos cree también los servicios que pueda tener dicha plantilla.
Siguiendo para bingo, una vez creado el host, también necesitamos crear el comando que ejecutará el script que hemos visto antes. Esto es, vamos a “Configuration” > “Services” y clonamos uno existente bueno donde tengamos ya configuradas ‘cosas’ como los tiempos o lo que queramos, creamos uno nuevo, al gusto del consumidor. Indicamos los siguientes datos al menos:
- Command Name: Le indicamos un nombre, normalmente el mismo que el script para recordarlo mejor 😉
- Command Type: Marcamos ‘Check’
- Command Line: Ponemos lo que ejecutará este comando, por tanto nos valdrá para sacar la salud de todos los sensores de la cabina con ‘/usr/lib/nagios/plugins/check_msa_hardware.pl -h $HOSTADDRESS$ -C $_HOSTSNMPCOMMUNITY$’.
Podremos cambiar otras opciones, ya sea el tipo de gráficas que usará, etc… Pulsamos en ‘Save’.
Lo último ya, una vez que tenemos los pasos hechos; podremos crear un servicio que enlazaremos al comando anterior y lo asociamos a las controladoras de la cabina. Desde “Configuration” > “Services” > “Add…” para crearlo, o más cómodo, como siempre, será clonar un servicio existente y modificar al menos lo siguiente:
- Description: Le indicamos el nombre con el que veremos el servicio monitorizado.
- Linked with Hosts: Enlazamos este servicio a los hosts creados que sean las controladoras de la MSA.
- Template: Seleccionamos ‘generic-active-service-custom’.
- Check Command: Seleccionamos el comando recién definido ‘check_msa_hardware.pl’.
Checkeando de forma individual cada elemento de la cabina,
Bueno, lo dicho, si queremos ver el estado de los discos, chasis, puertos, redundancia de las controladoras, FRUs, sensores o los vdisk directamente, usaremos también esto. Gracias al script ‘check_msa2012i_g1’ que podremos bajar de https://exchange.nagios.org/directory/Plugins/Hardware/Storage-Systems/SAN-and-NAS/Check-MSA-2012i-G1/details. Lo diferente de este script es que no usará SNMP, si no consultas de Telnet. Deberemos instalar antes los requisitos necesarios para hacerlo funcionar, desde la shell de nuestro appliance de monitorización, ejecutamos:
[sourcecode]perl -MCPAN -e’shell’
Cpan> install Net::Telnet
Cpan> install XML::Simple[/sourcecode]
Una vez completados los requisitos, como siempre, descargamos el script y lo subimos al appliance de monitorización, lo dejamos en la carpeta de scripts, lo haremos ejecutable y lo probamos. Mediante los siguientes ejemplos, podremos sacar distinta información:
[sourcecode]# Redundancia de las controladoras:
/usr/lib/nagios/plugins/check_msa2012i_g1 -h DIRECCION_IP -t redundancy
# Checkea los discos:
/usr/lib/nagios/plugins/check_msa2012i_g1 -h DIRECCION_IP -t disks
# Estado del chasis:
/usr/lib/nagios/plugins/check_msa2012i_g1 -h DIRECCION_IP -t enclosure
# Redundancia de las controladoras:
/usr/lib/nagios/plugins/check_msa2012i_g1 -h DIRECCION_IP -t frus
# Estado de los sensores:
/usr/lib/nagios/plugins/check_msa2012i_g1 -h DIRECCION_IP -t sensors
# Estado de los vdisk
/usr/lib/nagios/plugins/check_msa2012i_g1 -h DIRECCION_IP -t vdisks[/sourcecode]
Este script, como otros muchos, si os dan problemas, o no dan toda la información que esperáis bien sea por los OIDs obsoletos o que tengamos que añadir manualmente más discos a monitorizar… pues eso, que no va a tocar más remedio que modificarlos, o eso, o buscar otros scripts alternativos. Muchas veces nos tocará hacer los nuestros propios! Este script recuerdo que sólo miraba los 4 primeros discos y un sólo vDisk, es sencillo buscar qué hay que modificar en el script para conseguirlo 😉 Para más ayuda del script le pasáis /h.
Una vez testeado, listo! Nos vamos a Centreon y damos de alta el Comando primeramente, “Configuration” > “Services” y clonamos el comando que creamos antes (por ejemplo). Modificamos los siguientes datos al menos:
- Command Name: Su nombre, lo dicho, pongo el mismo que el script para recordarlo mejor 😉
- Command Type: Marcamos ‘Check’
- Command Line: Lo que ejecutará este comando, usaremos un argumento de variable que le pasaremos desde el Servicio, quedando: ‘/usr/lib/nagios/plugins/check_msa2012i_g1 -h $HOSTADDRESS$ -t $ARG1$’
Grabamos con ‘Save’,
Y nada, vamos creando todos los servicios, crearemos tantos como nos interesen, cambiando el argumento con la opción que nos interese, Desde “Configuration” > “Services” > clonamos el anterior que creamos o uno cualquiera y cambiamos:
- Description: Nombre con el que veremos el servicio monitorizado.
- Linked with Hosts: Enlazamos este servicio a los hosts creados que sean las controladoras de la MSA.
- Template: Seleccionamos ‘generic-active-service-custom’.
- Check Command: Seleccionamos el comando recién definido ‘check_msa2012i_g1’.
- Args: Indicamos el argumento que necesita el script para sacar la información del ítem que nos interese, vimos que serían: channel, redundancy, disks, enclosure, frus, sensors y vdisks.
Grabamos con ‘Save’.
Ahora, como siempre, recordar exportar los datos y recargar la configuración para que Centreon pueda leer los nuevos cambios que acabamos de meter. Os recuerdo, iremos a “Configuration” > “Pollers” > “Export configuration”, seleccionando nuestro poller, marcamos los checks y reiniciamos & “Export”.
Una vez generado todo, ya podremos ir a la parte de monitorización y comprobarlo! Veremos todos los nuevos servicios que hemos creado que monitorizan distintas cosas. Si queremos forzar el checkeo, ya sabemos, seleccionamos los servicios que nos interesen y en el combo seleccionamos ‘Services – Schedule immediate check (Forced)’. Con eso, ya nuestro pequeño y amado appliance de monitorización controlará nuestras delicadas cabinas, qué fácil resulta dormir tranquilo! Venga que seguimos otro día con más!!! Disfrutarlo!
Y por cierto, si necesitamos otros checkeos, es tan fácil como buscar en la página de Exchange Nagios lo que queremos!