En este artículo les enseñaré cómo supervisar los recursos de CPU y RAM de tu ESX desde Python. Para ello, utilizaremos un script en Python que nos permitirá monitorear los recursos utilizados en nuestro hypervisor ESX.
Antes de comenzar, es importante destacar que el monitoreo de los recursos de tu ESX es crucial para asegurar que tu infraestructura esté funcionando de manera eficiente y evitar problemas de rendimiento y tiempo de inactividad. Además, al automatizar este proceso con un script en Python, podrás ahorrar tiempo y esfuerzo al no tener que hacerlo manualmente.
Ahora bien, para comenzar con el proceso de monitoreo de los recursos de tu ESX desde Python, necesitarás instalar las siguientes librerías:
- pyVmomi: es una librería de Python que proporciona una API para interactuar con vSphere y ESX.
- ssl: es una librería de Python que proporciona funcionalidades de seguridad de capa de sockets.
Una vez que hayas instalado estas librerías, podrás comenzar a escribir tu script para monitorear los recursos de tu ESX. El script que utilizaremos en este artículo se conectará a tu ESX y recuperará la información de hardware del host, así como la información de las máquinas virtuales en ejecución. Luego, calculará la cantidad total de CPU y RAM asignada a las máquinas virtuales y mostrará los resultados en la salida.
¡Pero no te preocupes si todo esto parece un poco complicado! Te explicaré cómo funciona el script paso a paso.
En primer lugar, importamos las librerías que necesitamos y establecemos las credenciales de inicio de sesión de nuestro hypervisor ESX:
import ssl from pyVim.connect import SmartConnect, Disconnect from pyVmomi import vim # Información de inicio de sesión en el hypervisor ESX hostname = 'esx_hostname_or_ip' username = 'username' password = 'password'
A continuación, creamos un contexto SSL personalizado que nos permitirá conectarnos al hypervisor ESX:
# Crear un contexto SSL personalizado context = ssl.create_default_context() context.check_hostname = False context.verify_mode = ssl.CERT_NONE # Conexión al hypervisor ESX con el contexto SSL personalizado si = SmartConnect(host=hostname, user=username, pwd=password, sslContext=context) content = si.RetrieveContent()
Luego, recuperamos la información de hardware del host utilizando el objeto content que creamos en el paso anterior:
# Obtener la información de hardware del host host_system = content.rootFolder.childEntity[0].hostFolder.childEntity[0].host[0].summary.hardware num_cpu_cores = host_system.numCpuCores num_cpu_threads = host_system.numCpuThreads total_memory = host_system.memorySize / (1024 ** 3) cpu_model = host_system.cpuModel
Después, recuperamos la información de las máquinas virtuales en ejecución utilizando el objeto content nuevamente:
# Obtener la información de las máquinas virtuales en ejecución vm_properties = ['name', 'config.hardware.numCPU', 'config.hardware.memoryMB'] vm_view = content.viewManager.CreateContainerView(content.rootFolder, [vim.VirtualMachine], True) vms = vm_view.view vm_view.Destroy()
A continuación, calculamos la cantidad total de CPU y RAM asignada a las máquinas virtuales en ejecución y la mostramos en la salida:
# Calcular la cantidad total de CPU y RAM asignada a las máquinas virtuales num_vcpu_assigned = sum(vm.config.hardware.numCPU for vm in vms if vm.summary.runtime.powerState == vim.VirtualMachinePowerState.poweredOn) total_memory_assigned = sum(vm.config.hardware.memoryMB for vm in vms if vm.summary.runtime.powerState == vim.VirtualMachinePowerState.poweredOn) / 1024 print(f"Tipo de procesador del host: {cpu_model}") print(f"Número de núcleos con hyperthreading disponibles: {num_cpu_threads}") print(f"Cantidad total de CPU asignada a las máquinas virtuales: {num_vcpu_assigned}") print(f"Cantidad total de memoria asignada a las máquinas virtuales: {total_memory_assigned:.2f} GB") print(f"Memoria total del host: {total_memory:.2f} GB")
Finalmente, cerramos la conexión al hypervisor ESX:
# Desconectar del hypervisor ESX Disconnect(si)
Con este script, podremos obtener información valiosa sobre los recursos de nuestro ESX y asegurarnos de que todo esté funcionando correctamente. Además, al utilizar un script en Python para monitorear los recursos de nuestro ESX, podemos automatizar este proceso y ahorrar tiempo y esfuerzo.
En resumen, la supervisión de los recursos de CPU y RAM de tu ESX es fundamental para asegurar que tu infraestructura esté funcionando de manera eficiente y evitar problemas de rendimiento y tiempo de inactividad. Al automatizar este proceso con un script en Python, podrás ahorrar tiempo y esfuerzo al no tener que hacerlo manualmente. ¡Espero que este artículo te haya sido útil y te animo a probar este script en tu propio entorno!