Como Monitorizar os Recursos de CPU e RAM do teu ESX a partir do Python

Neste artigo, vou mostrar-vos como monitorizar os recursos de CPU e RAM do teu ESX a partir do Python. Para o fazer, vamos usar um script em Python que nos permitirá monitorizar os recursos utilizados no nosso hypervisor ESX.

Antes de começarmos, é importante salientar que a monitorização dos recursos do teu ESX é crucial para garantir que a tua infraestrutura está a funcionar de forma eficiente e evitar problemas de desempenho e tempo de inatividade. Além disso, ao automatizar este processo com um script em Python, podes poupar tempo e esforço ao não teres de o fazer manualmente.

Para começar o processo de monitorização dos recursos do teu ESX a partir do Python, precisarás de instalar as seguintes bibliotecas:

  • pyVmomi: é uma biblioteca em Python que fornece uma API para interagir com vSphere e ESX.
  • ssl: é uma biblioteca em Python que fornece funcionalidades de segurança de camada de sockets.

Assim que tiveres instalado estas bibliotecas, podes começar a escrever o teu script para monitorizar os recursos do teu ESX. O script que vamos utilizar neste artigo vai ligar-se ao teu ESX e recuperar a informação do hardware do host, bem como a informação das máquinas virtuais em execução. Depois, calculará a quantidade total de CPU e RAM atribuída às máquinas virtuais e mostrará os resultados na saída.

Mas não te preocupes se tudo isto parece um pouco complicado! Vou explicar como é que o script funciona passo a passo.

Primeiro, importamos as bibliotecas necessárias e definimos as credenciais de login para o nosso hypervisor ESX:

import ssl
from pyVim.connect import SmartConnect, Disconnect
from pyVmomi import vim

# Informações de login para o hypervisor ESX
hostname = 'esx_hostname_or_ip'
username = 'username'
password = 'password'

Em seguida, criamos um contexto SSL personalizado que nos permitirá ligar-nos ao hypervisor ESX:

# Criar um contexto SSL personalizado
context = ssl.create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE

# Ligação ao hypervisor ESX com o contexto SSL personalizado
si = SmartConnect(host=hostname, user=username, pwd=password, sslContext=context)
content = si.RetrieveContent()

Depois, recuperamos a informação do hardware do host utilizando o objeto content que criámos no passo anterior:

# Obter a informação do hardware do 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

A seguir, recuperamos a informação das máquinas virtuais em execução utilizando novamente o objeto content:

# Obter a informação das máquinas virtuais em execução
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()

Depois, calculamos a quantidade total de CPU e RAM atribuída às máquinas virtuais em execução e mostramo-la na saída:

# Calcular a quantidade total de CPU e RAM atribuída às máquinas virtuais
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 processador do host: {cpu_model}")
print(f"Número de núcleos com hyperthreading disponíveis: {num_cpu_threads}")
print(f"Quantidade total de CPU atribuída às máquinas virtuais: {num_vcpu_assigned}")
print(f"Quantidade total de memória atribuída às máquinas virtuais: {total_memory_assigned:.2f} GB")
print(f"Memória total do host: {total_memory:.2f} GB")

Por fim, fechamos a ligação ao hypervisor ESX:

# Desligar do hypervisor ESX
Disconnect(si)

Com este script, podemos obter informações valiosas sobre os nossos recursos ESX e garantir que tudo está a funcionar corretamente. Além disso, ao usar um script em Python para monitorizar os recursos do nosso ESX, podemos automatizar este processo e poupar tempo e esforço.

Em resumo, a monitorização dos recursos de CPU e RAM do teu ESX é fundamental para garantir que a tua infraestrutura está a funcionar de forma eficiente e evitar problemas de desempenho e tempo de inatividade. Ao automatizar este processo com um script em Python, podes poupar tempo e esforço ao não teres de o fazer manualmente. Espero que este artigo te tenha sido útil e incentivo-te a experimentar este script no teu próprio ambiente!

Deixe um comentário