Para la monitorización de los servidores VMware ESXI vamos a instalar vSphere SDK for Perl
Puedes ver el manual bajo Debian aquí:
https://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-srvhost_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: GPLWebsite: 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!
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!
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!
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 ?
Hola, se me olvido comentar, creo que habia un error en los cfg que pusiste, al final ya funciona.
gracias.
Buenas,
Gracias, lo revisare atentamente
Un saludo.
Estimados, podran subir nuevamente el http://git.op5.org/git/?p=nagios/op5plugins.git;a=blob_plain;f=check_vmware_api.pl ya que no me deja, estoy en una plataforma windows es para nagios en server centos7