|
Pandora FMS: Monitorizar servidor VMware ESXi mediante Pandora FMS Open Source y PowerCLI
Mostramos en este tutorial cómo monitorizar un servidor de virtualización VMware ESXi usando el software de monitorización Pandora FMS Open Source. Con este método podremos monitorizar casi cualquier parámetro: espacio en datastores, uso de RAM, uso de CPU, número de máquinas virtuales, número de máquinas virtuales con VMware Tools no instaladas, alarmas lanzadas, etc.
Requisitos para monitorizar un servidor de VMware con Pandora FMS Open Source y PowerCLIPara poder monitorizar los parámetros de rendimiento, uso de disco, alarmas y demás en un servidor de virtualización VMware ESXi necesitaremos disponer de los siguientes elementos:
Crear usuario con permisos de lectura en VMware ESXi mediante VMware vSphere ClientAccederemos a la administración del servidor VMware ESXi mediante VMware vSphere Client, pulsaremos en la pestaña "Local Users & Groups", pulsaremos con el botón derecho del ratón en cualquier espacio en blanco de esta pestaña y en el menú emergente seleccionaremos "Add": Introduciremos el nombre del usuario en "Login", por ejemplo "pandora" y la contraseña en "Enter password", por ejemplo "monitorizacion2015", marcaremos "Grant shell access to this user" y pulsaremos "OK" para crearlo: Una vez creado estableceremos los permisos, para ello accederemos a la pestaña "Permissions", pulsaremos con el botón derecho sobre alguna zona en blanco y en el menú emergente seleccionaremos "Add permission": Pulsaremos en "Add": Seleccionaremos el usuario creado "pandora" y pulsaremos "Add": Pulsaremos "OK": Una vez establecido el usuario, seleccionaremos en el desplegable de "Assigned Role" la opción "Read-only" y pulsaremos "OK": De esta forma ya tendremos creado un usuario con permisos de solo lectura para acceso a consulta del VMware ESXi. Lo usaremos más adelante para el acceso a este servidor mediante las VMware PowerCLI.
Crear broker Pandora FMS para monitorizar el servidor VMware ESXi desde otro equipo con PowerCLIPara no tener que instalar plugin ni usar software de terceros en el propio servidor VMware ESXi y para poder monitorizarlo, usaremos un equipo "puente", este equipo, con Windows, las PowerCLI instaladas y el agente de Pandora instalado, será el que conecte con el servidor VMware ESXi y obtenga los datos de monitorización. Por ello, en los requisitos, indicamos que debemos disponer de un equipo con Windows, VMware PowerCLI y Pandora FMS Windows Agent. Cuando dispongamos de este equipo "puente", en Pandora llamado broker, accederemos a él y editaremos el fichero de configuración de Pandora FMS, que normalmente está ubicado en:
Con el nombre pandora_agent.conf, podremos editarlo con cualquier editor de ficheros de texto plano sin formato, por ejemplo Notepad. Abriremos este fichero: Añadiremos el broker para el servidor ESXI, para ello añadiremos la siguiente línea:
Guardaremos los cambios en el fichero pandora_agent.conf: Tras añadir la línea del broker, podremos esperar unos minutos a que se ejecute el agente o bien podremos forzar la ejecución ejecutando el script restart_pandora_agent.bat: Si todo es correcto, el agente de Pandora FMS habrá creado un nuevo fichero de configuración con el nombre del broker, en nuestro caso SERVIDORESX.conf, en este fichero será donde añadamos el código necesario para monitorizar el servidor de virtualización VMware ESXi, como veremos a continuación. Podemos editar este fichero y establecer, por ejemplo, la dirección IP del servidor ESXi: Añadiendo la línea:
Donde cambiaremos "192.168.1.44" por la IP del servidor de virtualización VMware ESXi que queramos monitorizar. Este valor se puede establecer también en la consola web de administración de Pandora FMS. Más adelante volveremos a editar este fichero para establecer el script de monitorización: Si todo es correcto, tras crear el broker en el equipo que hará de "puente", transcurridos unos minutos, podremos acceder a la consola de administración web de Pandora FMS y comprobar que se habrá creado automáticamente un nuevo agente, con el nombre indicado en agent_name del fichero SERVIDORESX.conf (fichero de configuración del broker): A partir de ahora podremos configurar el agente creado como si se tratara de un equipo normal en Pandora FMS, como veremos a continuación.
Configurar agente servidor VMware ESXi en Pandora FMSTras crear el broker, Pandora FMS habrá creado el agente, ahora podremos editarlo para establecer la configuración, desde la consola de administración de Pandora FMS Open Source, accederemos a "Gestionar la monitorización" - "Gestionar agentes", en Buscar introduciremos el nombre del servidor (agent_name), en nuestro caso "SERVIDORESXI", si todo el proceso anterior ha sido correcto nos mostrará el agente, pulsando sobre él podremos editar su configuración: Por ejemplo, podremos especificar el Grupo al que pertenezca, la dirección IP, el Sistema Operativo, una Descripción, etc.: Pulsando en "Módulos" podremos comprobar los módulos (monitores o sondas) que se habrán creado de forma automática: Estos módulos no sirven pues se han generado a partir de la copia del fichero de configuración del agente de Pandora FMS en el equipo "puente" al fichero de configuración del broker, por lo tanto, explicaremos ahora cómo eliminarlos: Para eliminar los módulos anteriores (que no sirven), en primer lugar editaremos el fichero de configuración del broker, en nuestro caso, el fichero SERVIDORESX.conf y eliminaremos todas las líneas a partir de "# Module Definition", más adelante añadiremos aquí lo necesario para monitorizar el servidor VMware ESXi: Una vez eliminadas todas las líneas del fichero anterior ya podremos eliminar los módulos desde la consola de administración web de Pandora FMS. En Módulos, los seleccionaremos todos y pulsaremos en "Borrar": Es necesario realizar el proceso anterior porque, repetimos, los módulos por defecto no son válidos y arrojan valores que no se corresponden con la realidad del servidor VMware ESXi. Y es preciso eliminar primero el código de los módulos en el fichero de configuración del agente broker, de lo contrario volverían a regenerarse aunque los elimináramos en la consola web.
Añadir script PowerCLI para monitorizar servidor VMware ESXi con Pandora FMSPara realizar la conexión con el servidor VMware ESXi y extraer la información que queramos, para la monitorización, crearemos un fichero de script PowerCLI, en la misma carpeta donde tengamos instalado el agente de Pandora FMS, en el equipo "puente", donde hemos creado el broker. En nuestro caso crearemos un fichero con el nombre datos_host.ps1, lo editaremos con cualquier editor de texto plano, como el Notepad: Y añadiremos el siguiente código PowerCLI, explicando un poco lo que hacen las línes de código más importantes:
Así pues, añadiremos este código al fichero y guardaremos los cambios: Por último, para que el agente de Pandora FMS ejecute este script anterior y extraiga los datos necesarios para la monitorización del servidor VMware ESXi, editaremos el fichero de configuración del broker, en nuestro caso el fichero SERVIDORESX.conf: y añadiremos al final de este fichero la siguiente línea:
Guardaremos los cambios en el fichero SERVIDORES.conf (o el nombre que le hayamos dado): Transcurridos unos minutos, si hemos realizado y establecido las configuraciones anteriores correctamente, desde la consola de administración web de Pandora FMS podremos acceder al agente creado y comprobar que, efectivamente, se han añadido los módulos (sondas o monitores) del script PowerCLI (espacio en datastores, RAM, CPU, número de máquinas virtuales, alarmas, etc.): Configurar los módulos del agente del servidor VMware ESXi en Pandora FMS, establecer alertasTras seguir los pasos anteriores, ya tendremos disponibles los módulos (sondas, sensores, monitores) correspondientes para el servidor (agente) de VMware ESXi. Ahora podremos, desde la consola web de Pandora FMS Open Source, establecer los umbrales y configuraciones que deseemos para cada módulo. En la ventana de Módulos, podremos pulsar sobre el que queramos para establecer su configuración. Como ejemplo, estableceremos el umbral crítico en el que queramos que Pandora FMS cambie el estado a crítico para el espacio ocupado de un datastore determinado: Podremos configurar el módulo, por ejemplo, establecer el Umbral crítico, entre 90 y 100, de forma que si llega al 90% de ocupación (de espacio ocupado del datastore), el módulo pasará a estado crítico: También podremos configurar las alertas correspondientes, por ejemplo para que nos envíe un correo electrónico en caso de pasar el módulo a estado crítico. Para ello pulsaremos en "Alertas": Añadiremos las alertas para cada módulo que consideremos importante, previamente hemos de tener dadas de alta las plantillas de las alertas (qué tipo de alerta y a quién se le envía, como indicamos en el siguiente tutorial: Definir acciones para las alertas en Pandora FMS). Para añadir una nueva alarma especificaremos el Módulo (sensor o monitor) y la plantilla (tipo de alarma: envío por SMS, por mail, etc. y a quién se le envía)
Anexo
param([string]$ip, [string]$user, [string]$password) Add-PSSnapin VMware.VimAutomation.Core $certificado = Set-PowerCLIConfiguration -InvalidCertificateAction "Ignore" -Confirm:$false $conexion = Connect-VIServer -server $ip -user $user -password $password $datosHostESX = Get-VMHost $estadisticasCPURAM = "cpu.usage.average","mem.usage.average" $estadisticas = Get-Stat -Entity $datosHostESX -Realtime -Stat $estadisticasCPURAM -MaxSamples 1 $estadisticas | Group-Object -Property Entity | %{ $hostESX = "" | Select HostName, VMName, CPUAvg $hostESX.HostName = $_.name $cpu = $_.Group | where {$_.MetricId -eq "cpu.usage.average"} | Measure-Object -Property value -Average $memoria = $_.Group | where {$_.MetricId -eq "mem.usage.average"} | Select -ExpandProperty Value $hostESX.CPUAvg = [int]$cpu.Average $hostname = $hostESX.HostName } # Memoria RAM ocupada y % carga CPU echo "<module>" echo " <name><![CDATA[Carga_CPU]]></name>" echo " <description><![CDATA[% carga de CPU]]></description>" echo (" <data><![CDATA[" + $cpu.Average + "]]></data>") echo "</module>" echo "<module>" echo " <name><![CDATA[RAM_Ocupada]]></name>" echo " <description><![CDATA[% memoria RAM ocupada]]></description>" echo (" <data><![CDATA[" + $memoria + "]]></data>") echo "</module>" # Calculo porcentaje de espacio ocupado en Datastore function calcularPorcentaje { param([parameter(Mandatory = $true)] [int]$InputNum1, [parameter(Mandatory = $true)] [int]$InputNum2) $ocupado = $InputNum2 - $InputNum1 $ocupado / $InputNum2 * 100 } # Obtener datastores del host ESX y su espacio ocupado $datastores = Get-Datastore -Refresh -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | Sort Name ForEach ($datastore in $datastores) { if (($datastore.Name -match "Shared") -or ($datastore.Name -match "")) { $porcentajeOcupado = calcularPorcentaje $datastore.FreeSpaceMB $datastore.CapacityMB $porcentajeOcupado = "{0:N2}" -f $porcentajeOcupado $datastore | Add-Member -type NoteProperty -name PercentFree -value $porcentajeOcupado } echo "<module>" echo (" <name><![CDATA[DS_" + $datastore + "]]></name>") echo (" <description><![CDATA[% Ocupacion DataStore " + $datastore + "]]></description>") echo (" <data><![CDATA[" + $porcentajeOcupado + "]]></data>") echo "</module>" } # Numero de maquinas virtuales $mv = Get-VM echo "<module>" echo (" <name><![CDATA[Numero_MV]]></name>") echo " <description><![CDATA[Numero MV]]></description>" echo (" <data><![CDATA[" + $mv.Count + "]]></data>") echo "</module>" # Maquinas virtuales con VMware Tools obsoletas $mvToolsObsoletas = Get-VM | where{$_.Guest.ExtensionData.ToolsStatus -eq 'toolsOld'} echo "<module>" echo " <name><![CDATA[Numero_MV_VMwareToolsOLD]]></name>" echo " <description><![CDATA[Numero MV VMwrare Tools obsoletas]]></description>" echo (" <data><![CDATA[" + $mvToolsObsoletas.Count + "]]></data>") echo "</module>" # Maquinas virtuales con VMware Tools no instaladas $mvToolsNoInstaladas = Get-VM | where{$_.Powerstate -eq "PoweredOn" -and $_.Guest.ExtensionData.ToolsStatus -eq 'toolsNotInstalled'} echo "<module>" echo " <name><![CDATA[Numero_MV_VMwareToolsNoInstaladas]]></name>" echo " <description><![CDATA[Numero MV VMwrare Tools no instaladas]]></description>" echo (" <data><![CDATA[" + $mvToolsNoInstaladas.Count + "]]></data>") echo "</module>" # Alarmas en el vCenter $descripcion = "Alarmas lanzadas en vCenter" $numAlarmas = 0 $carpetasVCenter = Get-Folder # Obtenemos los contenedores de objetos del vCenter # Recorremos cada carpeta y cada alarma del vCenter foreach ($alarmaLanzada in $carpetasVCenter.ExtensionData.TriggeredAlarmState) { $definicionAlarma = Get-View -Id $alarmaLanzada.Alarm # Obtenemos información de la alarma $entidadObjeto = Get-View $alarmaLanzada.Entity $entidadObjetoTipo = $entidadObjeto.GetType().Name $descripcionAlarma += " [Alerta][" + $entidadObjetoTipo + "]" + $definicionAlarma.Info.Name $numAlarmas = $numAlarmas + 1 } if ($numAlarmas -gt 0) { $descripcion = $descripcionAlarma } echo "<module>" echo " <name><![CDATA[Numero_Alarmas_vCenter]]></name>" echo (" <description><![CDATA[" + $descripcion + "]]></description>") echo (" <data><![CDATA[" + $numAlarmas + "]]></data>") echo "</module>"
|
|