Aprenda Python: Monitorando CPU e Memória do Servidor com Psutil
Por que Monitorar o Hardware Programaticamente?
Em ambientes de produção, saber exatamente quanto de recurso sua aplicação está consumindo é vital para evitar quedas e lentidões. Embora existam ferramentas complexas de monitoramento, criar seu próprio script em Python oferece flexibilidade para gerar alertas personalizados, logs específicos ou até mesmo interfaces de controle simplificadas.
Neste tutorial, utilizaremos a biblioteca psutil (process and system utilities), que é o padrão da indústria para recuperar informações sobre processos em execução e utilização do sistema em Python.
Instalação da Biblioteca
Como o psutil acessa informações de baixo nível do sistema operacional, ele precisa ser instalado no seu ambiente virtual:
pip install psutil
🛠️ Criando o Monitor de Recursos Profissional
O script abaixo não apenas exibe os números brutos, mas os formata de maneira legível, mostrando a porcentagem de uso e o espaço disponível no disco.
import psutil
import os
import time
def monitorar_sistema():
# 1. Uso de CPU (calculado em um intervalo de 1 segundo)
uso_cpu = psutil.cpu_percent(interval=1)
# 2. Informações de Memória RAM
memoria = psutil.virtual_memory()
total_gb = memoria.total / (1024**3)
usada_percent = memoria.percent
# 3. Uso de Disco (Partição principal)
disco = psutil.disk_usage('/')
disco_livre_gb = disco.free / (1024**3)
print(f"\\n--- Relatório de Recursos [{time.strftime('%H:%M:%S')}] ---")
print(f"💻 Uso de CPU: {uso_cpu}%")
print(f"🧠 Memória RAM: {usada_percent}% (Total: {total_gb:.2f} GB)")
print(f"💽 Disco Livre: {disco_livre_gb:.2f} GB")
# Alerta visual de sobrecarga
if uso_cpu > 80 or usada_percent > 90:
print("⚠️ ALERTA: Alto consumo de recursos detectado!")
if __name__ == "__main__":
try:
while True:
monitorar_sistema()
time.sleep(5) # Atualiza a cada 5 segundos
except KeyboardInterrupt:
print("\\nMonitoramento encerrado.")
Entendendo as Unidades de Medida
A biblioteca psutil costuma retornar valores em bytes. Para tornar a informação útil para humanos, realizamos a conversão para Gigabytes (GB) dividindo o valor por 1024 ao cubo (1024**3). Dominar essas conversões é essencial para criar relatórios técnicos precisos.
💼 Aplicação no Mercado de TI
Scripts de monitoramento como este são usados para:
- Autoscaling: Decidir quando ligar novos servidores baseando-se na carga de CPU.
- Prevenção de Desastres: Avisar o administrador via Telegram (usando o código do Artigo 11) quando o disco estiver quase cheio.
- Auditoria de Performance: Identificar quais processos estão "sequestrando" a memória do servidor durante a madrugada.
Este conhecimento coloca você um passo à frente na jornada para se tornar um desenvolvedor focado em estabilidade e escalabilidade de sistemas.