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



3 comentarios:

Yibam desde MAdrid dijo...

Hola Buenas,

Interesantisimo Post.

Una consulta, tengo un Proliant y un equipo linux con las net-snmp.

Necesitaría bajarme el mib de HP, pero desconozco cual es.

Me podrías indicar cual es o pasármelo, para poder instalarlo en mi maquina linux.

Muchisimas gracias de antemano

Yibam desde MAdrid dijo...

Hola Buenas,

Interesantisimo Post.

Una consulta, tengo un Proliant y un equipo linux con las net-snmp.

Necesitaría bajarme el mib de HP, pero desconozco cual es.

Me podrías indicar cual es o pasármelo, para poder instalarlo en mi maquina linux.

Muchisimas gracias de antemano

Emilio Arjona dijo...

Hola Yibam,

creo recordar que era en el fichero "/opt/hp/hp-snmp-agents/mibs/cmaobjects.mibdef". Supongo que has instalado el Proliant Support Pack.

Un saludo!