Se encuentra usted aquí

Monitoreo de arreglos de disco HP Smart Array

En esta nota les mostraré una forma de monitorear vía Nagios + NRPE, arreglos de discos en equipos HP Smart Array con FreeBSD. La técnica debería funcionar también en otros sistemas como GNU/Linux.

Lo primero que necesitaremos es descargar el archivo check_smartarray.sh de la pagina http://soren.klintrup.dk/proliant/ y guardarlo en el equipo que tiene habilitado NRPE, para nuestro ejemplo utilizaremos la ruta /usr/sbin/check_smartarray.sh.
El script es básicamente un wrapper del sistema CAM de FreeBSD, que verifica el estatus del RAID y sigue la convención de reporte de errores de Nagios.

El siguiente paso es instalar y configurar "sudo" para la ejecución del comando como root, esto es necesario ya que todo acceso al sistema CAM requiere privilegios de superadministrador y NRPE por defecto se ejecuta como usuario nagios, con pocos permisos.
Para la instalación solo ejecutamos el siguiente comando:

cd /usr/ports/security/sudo && make install clean

Y para la configuración solo agregamos al archivo /usr/local/etc/sudoers la siguiente linea:

nagios ALL=(ALL) NOPASSWD:/home/admin/bin/check_smartarray.sh

En caso de no existir, lo generamos a partir del archivo /usr/local/etc/sudoers.sample.
Ahora el usuario "nagios", y por lo tanto NRPE, puede ejecutar el comando como root sin necesitar escribir el password. A continuación habilitamos el script en el archivo /usr/local/etc/nrpe.cfg de la siguiente forma:

command[check_smartarray]=/usr/local/bin/sudo /usr/sbin/check_smartarray.sh

Reiniciamos y listo, ya esta configurado NRPE. El último paso es configurar Nagios para conectarse a NRPE y verificar el arreglo.

La configuración de Nagios la haremos agregando las siguientes lineas en uno de los archivos de configuración, por ejemplo, commands.cfg:

# nrpe
define command {
    command_name check_nrpe
    command_line $USER1$/check_nrpe2 -H $HOSTADDRESS$ -p $ARG1$ -c $ARG2$
}

# check_smartarray
define service {
    use remote-service
    host_name host
    service_description smartarray
    check_command check_nrpe!5666!check_smartarray
}

La sección "nrpe" se debe incluir en caso de que no se haya definido previamente. Con respecto a la definición de "check_smartarray" solo mecionara que se define un servicio, que usa la plantilla "remote-service", que aplica para el servidor "host" y que ejecuta el comando "check_smartarray" en el puerto 5666 vía NRPE.
Solo resta reiniciar nagios y eso es todo, ya estamos monitoreando el arreglo de discos de forma automática.

Caso real

Recientemente, un disco duro de uno de los servidores que administro falló, lo cual provoco degradación en el arreglo (raid5) y un impacto considerable en el desempeño de las aplicaciones ahí alojadas.

Puesto que el servidor se encuentra en un centro de datos en el extranjero, si no fuera por dicha técnica de monitoreo, no me habría dado cuenta del problema y el tiempo de respuesta tanto mío como del centro de datos, habría sido mayor, pudiendo llegar incluso a perder un segundo disco, y por consecuencia, toda la información en dicho servidor.

Aunque parezca demasiado trabajo montar la infraestructura para monitorear arreglos de disco, mi recomendación es que lo hagan, la información es muy importante como para perderla por cosas tan simples, además, hay que recordar que Nagios no solo sirve para monitorear arreglos, también sirve para monitorear servicios, procesos, usuarios, particiones y mas.

Autor
Angel Gabriel León Rodríguez