Monitorizar VMware ESXI En Nagios

Para la monitorización de los servidores VMware ESXI vamos a instalar vSphere SDK for Perl 

Puedes ver el manual bajo Debian aquí:

http://red-orbita.com/?p=5476

Una vez instalado vSphere SDK for Perl  descargamos el chequeo que vamos a emplear para la monitorización.

wget http://git.op5.org/git/?p=nagios/op5plugins.git;a=blob_plain;f=check_vmware_api.pl

Definir los comandos: 

para definir tenemos que añadir los siguientes comandos al fichero commands.cfg, este fichero estará… dependiendo de la instalación que habríais realizado:

vi /etc/nagios3/commands.cfg

Y añadimos lo siguiente:

###### CHECK VMWARE ################

#define command{
# command_name check_esx_cpu
# command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l cpu -s usage -w $ARG3$ -c $ARG4$
#}
#

define command{
command_name check_esx_cpu
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l cpu -s usage -w $ARG3$ -c $ARG4$
}

# check memory usage
define command{
command_name check_esx_mem
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l mem -s usage -w $ARG3$ -c $ARG4$
}

# check net usage
define command{
command_name check_esx_net
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l net -s usage -w $ARG3$ -c $ARG4$
}

# check runtime status
define command{
command_name check_esx_runtime
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l runtime -s status
}

# check io read
define command{
command_name check_esx_ioread
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l io -s read -w $ARG3$ -c $ARG4$
}

# check io write
define command{
command_name check_esx_iowrite
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l io -s write -w $ARG3$ -c $ARG4$
}

Creamos las carpetas donde vamos a alojar los archivos de configuración 

mkdir /etc/nagios3/etc/cfg/VMesxi/

Accedemos al direcctorio 

cd /etc/nagios3/etc/cfg/VMesxi/

Creamos el fichero hosts.cfg con el siguiente contenido

define hostgroup {
hostgroup_name grupo-VMesxi
alias VMware Esxi Server
members esxi_192.168.1.111
}

#Ping to hosts

define service {
use VMesxi-srv
hostgroup_name grupo-VMesxi
service_description VMware Esxi Server – ping
check_command check_ping!100.0,10%!500.0,20%
}
#Hosts Definition

 

define host {
use VMesxi-srv

host_name esxi_192.168.1.111
alias VMware Esxi Server
address 192.168.1.111
}

Creamos el fichero templete.cfg en el cual vamos a definir los servicios. 

 

define host {
name VMesxi-srv
flap_detection_enabled 1
notification_period 24×7
notification_options d,u,r
retain_status_information 1
retain_nonstatus_information 1
contact_groups grupo-netapp
# check_command check_command_blank
max_check_attempts 3
register 0

}

 

define service {
name VMesxi-srv
check_period 24×7
flap_detection_enabled 1
notification_period 24×7
notification_options w,u,c,r
parallelize_check 1
retain_status_information 1
retain_nonstatus_information 1
max_check_attempts 3
normal_check_interval 3
retry_check_interval 1
contact_groups grupo-VMesxi
register 0
}

 

Definimos el archivo de contacto contacts.cfg

define contact{
contact_name grupo-VMesxi
alias grupo-VMesxi
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email rokitoh@redorbita.com
}
define contactgroup {
contactgroup_name grupo-VMesxi
alias Grupo de VMware Esxi
members grupo-VMesxi
}

Y por ultimo definimos los chequeos esxi.cfg

define service{
use VMesxi-srv
host_name esxi_192.168.1.111
service_description ESXi CPU Load
check_command check_esx_cpu!root!contraseña01.!80!90
}

# check memory usage
define service{
use VMesxi-srv
host_name esxi_192.168.1.111
service_description ESXi Memory usage
check_command check_esx_mem!root!contraseña01.!80!90
}

# check net
define service{
use VMesxi-srv
host_name esxi_192.168.1.111
service_description ESXi Network usage
check_command check_esx_net!root!contraseña01.!102400!204800
}

# check runtime status
define service{
use VMesxi-srv
host_name esxi_192.168.1.111
service_description ESXi Runtime status
check_command check_esx_runtime!root!contraseña01.
}

# check io read
define service{
use VMesxi-srv
host_name esxi_192.168.1.111
service_description ESXi IO read
check_command check_esx_ioread!root!contraseña01.!40!90
}

# check io write
define service{
use VMesxi-srv
host_name esxi_192.168.1.111
service_description ESXi IO write
check_command check_esx_iowrite!root!contraseña01.!40!90
}

Una vez creado el fichero tenemos que añadir la ruta de los mismos en el archivo nagios.cfg

vi /etc/nagios3/nagios.cfg

Al final del archivo añadimos lo siguiente:

############## Monitorización VMware Esxi Server #############

cfg_file=/etc/nagios3/etc/cfg/VMesxi/templete.cfg
cfg_file=/etc/nagios3/etc/cfg/VMesxi/hosts.cfg
cfg_file=/etc/nagios3/etc/cfg/VMesxi/esxi.cfg
cfg_file=/etc/nagios3/etc/cfg/VMesxi/contacts.cfg

Chequeamos para ver si no hay ningún error en los archivos de configuración

rokitoh@nagios:/etc/nagios3/etc/cfg # nagios3 -v /etc/nagios3/nagios.cfg

Nagios Core 3.2.1
Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 03-09-2010
License: GPL

Website: http://www.nagios.org
Reading configuration data…
Read main config file okay…
Processing object config file ‘/etc/nagios3/commands.cfg’…
Processing object config directory ‘/usr/lib/nagios/plugins’…
Processing object config file ‘/usr/lib/nagios/plugins/mailq.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/snmp_storage.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/ifstatus.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/snmp_load.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/breeze.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/ftp.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/apt.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/tcp_udp.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/ntp.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/dummy.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/mrtg.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/rpc-nfs.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/users.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/games.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/real.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/pgsql.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/snmp_vrrp.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/flexlm.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/snmp_win.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/ssh.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/ping.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/news.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/telnet.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/radius.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/fping.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/netware.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/snmp_cpfw.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/snmp.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/snmp_process.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/procs.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/ldap.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/mysql.cfg’…
Processing object config directory ‘/usr/lib/nagios/plugins/doc’…
Processing object config file ‘/usr/lib/nagios/plugins/snmp_int.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/snmp_mem.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/snmp_env.cfg’…
Processing object config file ‘/usr/lib/nagios/plugins/load.cfg’…
Processing object config directory ‘/etc/nagios3/conf.d’…
Processing object config file ‘/etc/nagios3/conf.d/timeperiods_nagios2.cfg’…
Processing object config file ‘/etc/nagios3/conf.d/contacts.cfg’…
Processing object config file ‘/etc/nagios3/conf.d/generic-host_nagios2.cfg’…
Processing object config file ‘/etc/nagios3/conf.d/generic-service_nagios2.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/Windows/templete.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/Windows/hosts.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/Windows/cpd01.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/Windows/contacts.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/Linux/templete.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/Linux/hosts.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/Linux/cacti.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/Linux/contacts.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/VMesxi/templete.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/VMesxi/hosts.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/VMesxi/esxi.cfg’…
Processing object config file ‘/etc/nagios3/etc/cfg/VMesxi/contacts.cfg’…
Read object config files okay…

Running pre-flight check on configuration data…

Checking services…
Checked 9 services.
Checking hosts…
Checked 2 hosts.
Checking host groups…
Checked 2 host groups.
Checking service groups…
Checked 0 service groups.
Checking contacts…
Checked 3 contacts.
Checking contact groups…
Checked 3 contact groups.
Checking service escalations…
Checked 0 service escalations.
Checking service dependencies…
Checked 0 service dependencies.
Checking host escalations…
Checked 0 host escalations.
Checking host dependencies…
Checked 0 host dependencies.
Checking commands…
Checked 193 commands.
Checking time periods…
Checked 4 time periods.
Checking for circular paths between hosts…
Checking for circular host and service dependencies…
Checking global event handlers…
Checking obsessive compulsive processor commands…
Checking misc settings…

Total Warnings: 0
Total Errors: 0

Things look okay – No serious problems were detected during the pre-flight check

Y reiniciamos nagios

rokitoh@nagios:/etc/nagios3/etc/cfg # /etc/init.d/nagios3 reload
Reloading nagios3 monitoring daemon configuration files: nagios3.
rokitoh@nagios:/etc/nagios3/etc/cfg #

Abrimos nagios en nuestro navegador favorito y si todo a salido bien lo tendríamos que tener OK!

ATT00011

13 thoughts on “Monitorizar VMware ESXI En Nagios

  1. hola que tal ?
    lo primero dar las gracias por tu dedicación a escribir esta entrada.

    el problema que me surge al comprobar
    root@s-nagios:/etc/nagios3# Error processing object config files!Error: Template ‘VMesxi-srv’ specified in host definition could not be not found (config file ‘/etc/nagios3/etc/cfg/VMesxi/hosts.cfg’, starting on line 18)

    • Buenas! Al parecer al hacer “me comí” en el archivo template.cfg el VM.

      para solucionarlo tendrías que cambiar en el fichero template.cfg en la linea: name esxi-srv por name VMesxi-srv

      Creo que con eso funcionaria perfectamente…si no funciona reportalo y intentare ayudarte.

      Un saludo.!

      • hola de nuevo. Perdona el tiempo de respuesta, creia que recibiria un correo al tener respuesta, pero he visto que no.

        bueno, lo he probado y ahora me da otro error al chequear.

        Error: Template ‘VMesxi-srv’ specified in service definition could not be not found (config file ‘/etc/nagios3/etc/cfg/VMesxi/esxi.cfg’, starting on line 41)
        Error processing object config files!

  2. hola que tal ? perdona el retraso pero creia que al recibir contestación tendira una notificación ene l correo.

    he probado lo que me has comentado, pero tengo este nuevo error. Parece que el error se ha desplazado a otro fichero de configuración.

    Error: Template ‘VMesxi-srv’ specified in service definition could not be not found (config file ‘/etc/nagios3/etc/cfg/VMesxi/esxi.cfg’, starting on line 41)
    Error processing object config files!

    • Buenas, Ummm… me parece… que se me a olvidado poner algunas cosas… jajaja.

      En el fichero de configuración templete.cfg

      Veo que no tengo definido el define service

      define service {
      name VMesxi-srv
      check_period 24×7
      flap_detection_enabled 1
      notification_period 24×7
      notification_options w,u,c,r
      parallelize_check 1
      retain_status_information 1
      retain_nonstatus_information 1
      max_check_attempts 3
      normal_check_interval 3
      retry_check_interval 1
      contact_groups grupo-VMesxi
      register 0
      }

      Si no fuese eso, cópiame la línea que te esta dando error. Que me parece que en este caso es la de: “use VMesxi-srv”, ¿no?

      • Hola, perdona el retraso, pero tuve un problema y he tenido que volver a instalar el nagios de nuevo. Se va puliendo el post, pero tengo otros errores.

        al hacer nagios3 -v /etc/nagios3/nagios.cfg (el host 192.168.200.10 es mi vSphere)

        Checking services…
        Error: Check period ’24×7′ specified for service ‘ESXi CPU Load’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Notification period ’24×7’ specified for service ‘ESXi CPU Load’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Check period ’24×7’ specified for service ‘ESXi IO read’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Notification period ’24×7’ specified for service ‘ESXi IO read’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Check period ’24×7’ specified for service ‘ESXi IO write’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Notification period ’24×7’ specified for service ‘ESXi IO write’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Check period ’24×7’ specified for service ‘ESXi Memory usage’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Notification period ’24×7’ specified for service ‘ESXi Memory usage’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Check period ’24×7’ specified for service ‘ESXi Network usage’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Notification period ’24×7’ specified for service ‘ESXi Network usage’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Check period ’24×7’ specified for service ‘ESXi Runtime status’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Notification period ’24×7’ specified for service ‘ESXi Runtime status’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Check period ’24×7’ specified for service ‘VMware Esxi Server – ping’ on host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Notification period ’24×7’ specified for service ‘VMware Esxi Server – ping’ on host ‘esxi_192.168.200.10’ is not defined anywhere!
        Checked 13 services.
        Checking hosts…
        Error: Contact group ‘grupo-netapp’ specified in host ‘esxi_192.168.200.10′ is not defined anywhere!
        Error: Notification period ’24×7’ specified for host ‘esxi_192.168.200.10′ is not defined anywhere!
        Checked 2 hosts.
        Checking host groups…
        Checked 5 host groups.
        Checking service groups…
        Checked 0 service groups.
        Checking contacts…
        Error: Service notification period ’24×7’ specified for contact ‘grupo-VMesxi’ is not defined anywhere!
        Error: Host notification period ’24×7′ specified for contact ‘grupo-VMesxi’ is not defined anywhere!

  3. bueno, voy avanzando un poco, el error de 24×7, era debido a que al hacer copy & paste, la “x” no era un caracter correcto ASCII.

    ahora ya solo hay 1 error :

    Error: Contact group ‘grupo-netapp’ specified in host ‘esxi_192.168.200.10’ is not defined anywhere!
    Checked 2 hosts.

    lo he cambiado por grupo-VMesxi , y ahora no da ningún error.

    El problema es que en nagios, parece que no se conecta al vSphere. Veo que tienes esxi.cfg el nombre de usuario y contraseña alli metido.
    “check_command check_esx_cpu!root!contraseña01.!80!90”

    que significa esta linea ? he visto en otros tutoriales que se usa dentro de “resource.cfg” variables para establecer usuarios y contraseñas.

    • Hola,

      Ahí pones el usuario y contraseña para acceder al servidor VMware ESXi, se puede poner en resource.cfg, lo que ocurre que yo monitorice varias VMware ESXi con diferente contraseña de acceso… y así era más fácil a la hora de añadirlas.

      Si te fijas en el archivo de configuración: commands.cfg

      define command{
      command_name check_esx_cpu
      command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l cpu -s usage -w $ARG3$ -c $ARG4$
      }

      Ahí se declaran 2 variables para el usuario y contraseña:

      -u $ARG1$ -p $ARG2$

      Lo cual en el comando indicado “root” y contraseña01. Serían el usuario y la contraseña de acceso al servidor VMware.

      check_command check_esx_cpu!root!contraseña01.!80!90

      Un saludo.

      • bueno, ya casi esta solucionado!

        Ahora los servicios me funcionan y veo los valores del vSphere (he cambiado el parametro -H por -D).

        El problema que tengo ahora es que en Nagios ->current Status->hosts me sale el host esxi_192.168.2001.0 (le he cambiado el nombre), en color gris
        esxi_192.168.200.10 y con la etiqueta de PENDING

        View Service Details For This Host
        PENDING N/A 2d 1h 10m 18s Host check scheduled for Fri Jan 11 14:32:22 CET 2013

        parece como si no viese el host, pero como ya he dicho los servicios si. Igual algun parametro mal colocado. alguna idea ?

  4. Hola, se me olvido comentar, creo que habia un error en los cfg que pusiste, al final ya funciona.
    gracias.

  5. Pingback: Monitorizar datastores VMware ESXI en nagios | Red-Orbita

  6. Pingback: Esx Snmp Monitoring |

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*