SyntaxHighlighter

lunes, 7 de mayo de 2012

Configuración rápida de Zabbix + SNMP + HP Insight en un HP Proliant

En el último post estuve cambiando un disco de un HP Proliant. Tengo que decir que enterarte de que un disco falla gracias al led de estado que hay en su carcasa no es lo más adecuado (mea culpa!!). En los servidores Proliant tenemos varios sistemas que nos mantienen informados de cualquier incidencia hardware, entre otros: Las herramientas de configuración-diagnóstico en línea de órdenes (hpacucli, hpasmcli, etc.), la web de monitorización "HP System Manager Homepage" (si la hemos instalado), o el sistema de notificación vía SNMP.

La interfaz de monitorización normalmente se activa al instalar el HP PSP en el puerto 2831. Nos da acceso a gran cantidad de información de estado del servidor con una interfaz gráfica muy cómoda.


En la figura tenemos información del sistema, de las controladoras de discos, del estado de los adaptadores de red, de la interfaz ILO, etc. Es una herramienta muy potente ya que, además, dispone de un log donde se registran todos los cambios en los parámetros monitorizados. Pero falta algo, que nos avise cuando algo falle.

Como vemos en la parte superior derecha de la ventana, en la sección "Data Source", todo el mecanismo de monitorización se hace a través de SNMP, entonces, ¿por qué no ir al origen y consultar directamente estos sensores?

SNMP

La verdad es que tan sólo he leído un poco sobre SNMP, lo justo para poder consultar algunos valores desde Zabbix (aunque también es posible con NAGIOS).

Debemos tener en cuenta que SNMP es un servicio que viene en cualquier distribución de Linux. Con este servicio estándar podemos consultar una serie de monitores básicos de nuestro servidor definidos en una colección MIB (Management Information Base), que no es más que un conjunto de valores organizados jerárquicamente que describen el estado de muchos parámetros del servidor.
No quiero entrar en el tema mucho porque es bastante complejo y no le he dedicado mucho tiempo, así que vamos al grano.

Lo primero que he hecho ha sido comprobar que el servicio está funcionando con, por ejemplo service snmpd status o chkconfig --list | grep snmp con el que además podemos ver si los agentes snmp de HP están funcionando. Si se ha instalado el servicio SNMP y el Proliant Support Pack todo debería estar funcionando. Comprobamos la salida que nos da snmpwalk, que imprime todos los valores en una rama del árbol de indicadores, en este caso system.

[root@localhost ~]# snmpwalk -v 2c -c public localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost 2.6.18-274.7.1.el5 #1 SMP Thu Oct 20 16:21:01 EDT 2011 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (3655739) 10:09:17.39
SNMPv2-MIB::sysContact.0 = STRING: Root  (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: localhost
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.2 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.3 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.4 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.6 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.7 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.8 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.6 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.8 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (0) 0:00:00.00

Si tenemos respuesta de la orden snmpwalk todo está listo para comenzar con la configuración.

La información que podemos extraer con las consultas a SNMP pueden ser bastante sensible y, por defecto en la configuración de SNMP, se bloquean ciertas ramas. En el fichero /etc/snmp/snmp.conf se pueden definir las ramas que se mostrarán y a qué grupos. Yo lo que he hecho es añadir a la lista systemview la rama MIB correspondiente a los monitores de HP Proliant con la siguiente directiva:


# Make at least  snmpwalk -v 1 localhost -c public system fast again.
#       name           incl/excl     subtree         mask(optional)
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
# Emilio: Linea de abajo añadida para poder consultar monitores de hp insight
view    systemview    included   .1.3.6.1.4.1.232

La rama .1.3.6.1.4.1.232 contiene la información asociada a la rama enterprises. Podéis ver un listado con todos los OIDs en el archivo /opt/hp/hp-snmp-agents/mibs/cmaobjects.mibdef. Reiniciamos snmpd y consultamos la rama enterprises con snmpwalk. La orden debería mostrar un listado bastante largo con todos los valores del árbol MIB.

Con esto ya podríamos consultar los monitores de forma periódica con un script en bash por ejemplo que envíe un correo en caso de encontrar un valor no deseado. Pero podemos ir un paso más allá usando ZABBIX.

SNMP + ZABBIX

Zabbix tiene la capacidad de hacer consultas a SNMP, es más, uno de los usuarios de Zabbix ya se ha molestado en hacer una plantilla que consulta algunos de los monitores más importantes de los servidores Proliant. Tan sólo hay que asociar la plantilla a nuestro servidor dentro de Zabbix, abrir el puerto 161 Udp del servidor a monitorizar y reiniciar zabbix_server.

Sensores Insight Manager
Y aquí tenemos los sensores que añade la plantilla. Algunos aparecerán como "no soportados" según la configuración de nuestro equipo. Por ejemplo, en este equipo sólo tenemos una controladora de discos, por lo que diskController2 aparece como no soportado. Ya disponemos de información tan importante como el estado de las controladoras de disco, de las fuentes de alimentación, de los ventiladores, de la memoria, temperaturas...

La plantilla define estos monitores como críticos, por lo que cualquier cambio en alguno de ellos será considerado como tal en Zabbix y desencadenará la acción que nosotros hemos configurado para eventos críticos: email, sms, etc.

Una buena página para acceder al significado de cada monitor con un enorme listado de MIBs, enlazo directamente los monitores de HP Health:
http://www.mibdepot.com/cgi-bin/getmib3.cgi?win=mib_a&n=CPQHLTH-MIB&r=compaq&f=Compaq-Health.mib&t=tree&v=v1&i=0#compaq



viernes, 4 de mayo de 2012

Cambiando un Disco Duro en un HP Proliant

Shit happens!! Si, solo es cuestión de tiempo. Tarde o temprano todo aparato electrónico acaba fallando, incluso si es de buena calidad. Ayer, cuando me disponía a cambiar la cinta de copia de seguridad de uno de nuestros servidores me di cuenta de que uno de los discos duros tenía iluminado el led de fallo.

Recuerdo la primera vez que nos falló un disco en el trabajo. Fue en un servidor clónico, muy potente, poco después de comprarlo. Entonces todas nuestras aplicaciones estaban alojadas en este servidor. Aprendimos mucho aquella vez: es mejor invertir en un servidor que te dé garantías y en un buen servicio técnico que en uno tipo "hacendado" por muy potente que sea, lo importante que es poder confiar en tu sistema de copias de seguridad, que debes prever situaciones de emergencia, que andar con pies de plomo y tener todo medianamente bien atado es imprescindible si quieres ahorrarte muchos dolores de cabeza porque LA GENTE SOLO SE ACUERDA DE " EL INFORMÁTICO" CUANDO ALGO FALLA. Por eso sustituimos esa máquina por nuestro primer HP Proliant, ahora tenemos 15.

Lavadora o servidor??

No quiero hacer de comercial de HP, seguro que Dell, Sun o cualquier marca de renombre tienen buen hardware, proveen de herramientas software adecuadas y disponen de un servicio técnico de calidad.

Bueno, voy al grano. Se nos ha roto uno de los discos que, junto con otros 3, formaba parte de un conjunto RAID 1+0. Como con esta configuración RAID podemos "perder" un disco, todo el sistema sigue funcionando. Los discos para estos sistemas vienen incrustados en una especie de chasis que facilita su manejo y además da información del estado de los mismos por medio de una serie de leds.

Disco defectuoso
Podemos confirmar esta información usando una de las herramientas del paquete Proliant Support Pack hpacucli. La sintaxis es la siguiente:


[root@localhost hpacucli]# hpacucli ctrl all show config

Smart Array 641 in Slot 3     (sn: XXXXX)

   array A (Parallel SCSI, Unused Space: 0 MB)

      logicaldrive 1 (273.5 GB, RAID 1+0, Interim Recovery Mode)

      physicaldrive 1:2   (port 1:id 2 , Parallel SCSI, 146 GB, Failed)
      physicaldrive 1:3   (port 1:id 3 , Parallel SCSI, 146.8 GB, OK)
      physicaldrive 1:4   (port 1:id 4 , Parallel SCSI, 146.8 GB, OK)
      physicaldrive 1:5   (port 1:id 5 , Parallel SCSI, 146.8 GB, OK)

Como vemos en la salida de hpacucli el disco en el slot 2 está defectuoso.

Si contamos con un contrato de mantenimiento con HP el proceso de pedido se facilita mucho. Solo tienes que dar el número de serie del servidor y el modelo del disco. Podemos verlo usando también las herramientas de HP PSP. En pocas horas recibes el disco e incluso te pueden enviar un técnico para que lo reemplace sin coste adicional. Usando hpasmcli podemos ver toda la información del servidor.

HP management CLI for Linux (v1.0)
Copyright 2004 Hewlett-Packard Development Group, L.P.

--------------------------------------------------------------------------
NOTE: Some hpasmcli commands may not be supported on all Proliant servers.
      Type 'help' to get a list of all top level commands.
--------------------------------------------------------------------------
hpasmcli> show server
System        : ProLiant ML350 G4p
Serial No.    : CZJ6XXXXX      
ROM version   : D19 02/15/2006
iLo present   : Yes
Embedded NICs : 1
 NIC1 MAC: XX:XX:XX:XX:XX:XX

Processor: 0
 Name         : Intel Xeon
 Stepping     : 10
 Speed        : 3000 MHz
 Bus          : 800 MHz
 Socket       : 1
 Level2 Cache : 2048 KBytes
 Status       : Ok

Processor: 1
 Name         : Intel Xeon
 Stepping     : 10
 Speed        : 3000 MHz
 Bus          : 800 MHz
 Socket       : 2
 Level2 Cache : 2048 KBytes
 Status       : Ok

Processor total  : 2

Memory installed : 4096 MBytes
ECC supported    : Yes

Arriba tenemos el número de serie del servidor. Y para ver la información del disco podemos utilizar de nuevo hpacucli:

[root@localhost hpacucli]# hpacucli ctrl slot=3 pd all show detail

Smart Array 641 in Slot 3

   array A (Failed)

      physicaldrive 1:2
         SCSI Bus: 1
         SCSI ID: 2
         Status: Failed
         Drive Type: Data Drive
         Interface Type: Parallel SCSI
         Transfer Mode: Sync Narrow
         Size: 146 GB
         Transfer Speed: 10 MB/Sec
         Rotational Speed: 10000
         Firmware Revision: HPB1
         Serial Number: XXXXXX
         Model: COMPAQ  BD14689BB9      
      physicaldrive 1:3
         SCSI Bus: 1
         SCSI ID: 3
         Status: OK
         Drive Type: Data Drive
         Interface Type: Parallel SCSI
         Transfer Mode: Ultra Narrow
         Size: 146.8 GB
         Transfer Speed: 20 MB/Sec
         Rotational Speed: 10000
         Firmware Revision: HPB1
         Serial Number: XXXXXX
         Model: COMPAQ  BD14689BB9      
      physicaldrive 1:4
         SCSI Bus: 1
         SCSI ID: 4
         Status: OK
         Drive Type: Data Drive
         Interface Type: Parallel SCSI
         Transfer Mode: Ultra Wide
         Size: 146.8 GB
         Transfer Speed: 40 MB/Sec
         Rotational Speed: 10000
         Firmware Revision: HPB4
         Serial Number: XXXXXX
         Model: COMPAQ  BD1468A4C5      
      physicaldrive 1:5
         SCSI Bus: 1
         SCSI ID: 5
         Status: OK
         Drive Type: Data Drive
         Interface Type: Parallel SCSI
         Transfer Mode: Ultra Wide
         Size: 146.8 GB
         Transfer Speed: 40 MB/Sec
         Rotational Speed: 15000
         Firmware Revision: HPB1
         Serial Number: XXXXXX
         Model: COMPAQ  BF1468AFEB

Si alguna vez habéis visto el precio de una buena controladora de discos os habréis dado cuenta que hay un gran salto entre las las controladoras de "andar por casa" y las de gama empresarial. La respuesta es muy sencilla "hacen magia": Hot Swap de discos, reconstrucción de conjuntos RAID de varios tipos de forma rápida y transparente... Tan fácil como extraer el disco defectuoso e introducir el nuevo, la controladora se encarga de todo.

Cambiando el disco

Si consultamos otra vez el estado de la controladora de discos podemos ver que se ha detectado correctamente el cambio y que el proceso de reconstrucción del RAID ha comenzado, cosa que ya notábamos en los indicadores led de los discos duros asociados al conjunto RAID.

[root@localhost hpacucli]# hpacucli ctrl all show config

Smart Array 641 in Slot 3     (sn: XXXX)

   array A (Parallel SCSI, Unused Space: 0 MB)

      logicaldrive 1 (273.5 GB, RAID 1+0, Recovering 1.6% complete)

      physicaldrive 1:2   (port 1:id 2 , Parallel SCSI, 146.8 GB, Rebuilding)
      physicaldrive 1:3   (port 1:id 3 , Parallel SCSI, 146.8 GB, OK)
      physicaldrive 1:4   (port 1:id 4 , Parallel SCSI, 146.8 GB, OK)
      physicaldrive 1:5   (port 1:id 5 , Parallel SCSI, 146.8 GB, OK)

Según la rapidez del disco y la controladora la reconstrucción tardará más o menos. En nuestro servidor con discos de 10K rpm ha tardado alrededor de 40 minutos, en caliente, ejecutándose en segundo plano mientras el servidor seguía funcionando con normalidad.

Resumen de órdenes de hpacucli
Resumen de órdenes de hpasmcli