miércoles, 20 de abril de 2011

Monitorizar Hardware de VMWare ESXi con Zabbix

Para monitorizar el hardware de un ESXi de VMWare vamos a utilizar el Appliance de Zabbix el cual podemos encontrar en la zona de descargas http://www.zabbix.com/download.php

Para que nuestro Zabbix se hable con ESXi tendremos que instalar pywbem y openssl.

yast2 --install python-pywbem

yast2 --install python-openssl

Una vez instalado los requisitos en nuestro servidor de Zabbix descargaremos el siguiente script check_esx_wbem.py

Una vez descargado el script lo copiaremos en la siguiente ruta del Servidor Zabbix

/etc/zabbix/externalscripts/

Esta ruta es donde se alojan los "External check" de zabbix.

Ahora vamos a crear un script en esta misma ruta para pasarle el usuario y la contraseña de nuestros ESXi

nano /etc/zabbix/externalscripts/check_esx_wbem.sh

Y escribiremos la siguiente instrucciones, donde cambiaremos el usuario y la contraseña por la de nuestros ESXi

/etc/zabbix/externalscripts/check_esx_wbem.py https://$1:5989 usuario contraseña $2

Guardaremos y cerraremos el archivos con los cambios efectuados

Ahora otorgaremos permisos al usuario zabbix para que pueda ejecutar el script

chmod 0777 /etc/zabbix/externalscripts/check_esx_wbem.py

chmod 0777 /etc/zabbix/externalscripts/check_esx_wbem.sh


Una vez aplicado los permisos vamos a probar que funcione ejecutando la siguiente instrucción desde la consola zabbix cambiando ipadress por la IP de nuestro servidor ESXi

/etc/zabbix/externalscripts/check_esx_wbem.sh ipadress

En el caso de que no diera algún error podemos usar la variable verbose para ejecutar el script en modo detalle

/etc/zabbix/externalscripts/check_esx_wbem.sh ipadress verbose

Ahora es el momento de crear configurar el Host ESXi en nuestro servidor Zabbix desde el Frontend Web.

Crearemos un host indicándole la IP de nuestro servidor ESXi y seguidamente le crearemos nuestro item para chequear el hardware.



Ahora solo faltará crear un trigger que nos avise si cambia de estado.

10 comentarios:

  1. Hola,

    He seguido todos los pasos que arriba se mencionan, pero no consigo que el item siempre esté activo, cada cierto tiempo cambia a no soportado y me aprace el siguiente error: Script /etc/zabbix/externalscripts/check_esx_wbem.sh returned nothing, por más que le doy vueltas al tema no consigo dejarlo bien configurado, por favor puedes decirme por qué no me devuelve ningún valor si he seguido los pasos tal y como están detallados? Muchas gracias!

    :)

    ResponderEliminar
  2. Hola,

    Esto puede pasar cuando el chequeo tarda demasiado en responder y Zabbix hace un timeout de la petición.

    Puedes cambiar el tiempo de espera de la consulta de Zabbix.

    Esto se cambia en el archivo de configuración etc/zabbix/zabbix_server.conf y el parametro es Timeout (por defecto 3).

    Saludos,
    Oriol Serra

    ResponderEliminar
  3. Hola Oriol! que rapidez en contestar! gracias!! he ido al archivo y la opcion timeout está comentada... y efectivamente como me has dicho =3, el tema es que si descomento la línea el item no me dura ni un minuto activo, y me vuelve a salir el error de que no me devuelve nada, qué valor sería recomendable poner..?
    Lo siento, llevo poco tiempo en el mundo zabbix y ando un poco perdida con alguna cosa.

    Gracias nuevamente.

    ResponderEliminar
  4. Hola,

    Yo creo que con un valor 8 seria suficiente.

    Saludos,
    Oriol Serra

    ResponderEliminar
  5. Hola,

    Parece que ha tardado más tiempo en cambiar de estado, pero nuevamente lo ha hecho he puesto el timeout en 15, cuánto más alto mejor?

    por otro lado el Trigger me da error, me dice format error or unsupported operator. Exp:[OK], yo creo que me da error por la function que pongo, al devolverme un OK en vez de un número, pero para cuando devuelve un OK que function es la que hay que poner?

    Gracias por todo.

    ResponderEliminar
  6. Hola,
    Tengo el error siguiente al ejecutar el sh:
    20110531 17:43:43 Connection to https://192.168.10.6:5989
    20110531 17:43:43 Check classe CIM_ComputerSystem
    Traceback (most recent call last):
    File "/etc/zabbix/externalscripts/check_esx_wbem.py", line 75, in
    instance_list = wbemclient.EnumerateInstances(classe)
    File "/usr/lib/pymodules/python2.6/pywbem/cim_operations.py", line 404, in EnumerateInstances
    **params)
    File "/usr/lib/pymodules/python2.6/pywbem/cim_operations.py", line 173, in imethodcall
    raise CIMError(0, str(arg))
    pywbem.cim_operations.CIMError: (0, 'Socket error: [Errno 111] Connection refused')

    ResponderEliminar
  7. Yo el timeout lo tengo puesto en 10, voy a subirlo porque cuando tienes mas de 150 vps veo que puede ser necesario dependiendo del HW que tengas.
    Gran articulo Oriol :)

    ResponderEliminar
  8. Buenisimo, muchas gracias :)

    ResponderEliminar
  9. Hola yo tambien tengo el mismo error en el script que puedo hacer????
    Traceback (most recent call last):
    File "/etc/zabbix/externalscripts/check_esx_wbem.py", line 75, in
    instance_list = wbemclient.EnumerateInstances(classe)
    File "/usr/lib/python2.7/site-packages/pywbem/cim_operations.py", line 404, in EnumerateInstances
    **params)
    File "/usr/lib/python2.7/site-packages/pywbem/cim_operations.py", line 168, in imethodcall
    verify_callback = self.verify_callback)
    File "/usr/lib/python2.7/site-packages/pywbem/cim_http.py", line 184, in wbem_request
    h.putheader('Content-length', len(data))
    File "/usr/lib/python2.7/httplib.py", line 924, in putheader
    str = '%s: %s' % (header, '\r\n\t'.join(values))
    TypeError: sequence item 0: expected string, int found

    ResponderEliminar
  10. A mi ese error me lo devuelve cuando las credenciales son de readonly en el esxi y no puede validar. Proba de cambiar las credenciales por las del root y ejecuta

    ./check_esx_wbem.sh 10.1.71.199 verbose

    Si son las credenciales, te deberia devolver una lista con el estado del esxi, por ejemplo si las fuentes estan enchufadas o si los fans estan okey, entre otras cosas.

    Saludos
    Alejandro

    ResponderEliminar