Marcio Cunha

Como medir o consumo elétrico de servidores com IPMI

Aprenda a extrair telemetria de energia em tempo real de servidores bare-metal utilizando IPMItool e scripts em Python para automação eficiente.

Marcio Cunha•6 min
Também disponível em:EnglishEspañol
Resumo
  • O protocolo IPMI opera em um chip dedicado na placa-mãe permitindo gerenciar o hardware mesmo com o sistema operacional desligado
  • Ferramentas de linha de comando como o IPMItool facilitam a consulta direta de sensores de tensão, temperatura e consumo em watts
  • Scripts em Python conseguem automatizar a coleta contínua de métricas energéticas para alimentar painéis de monitoramento
  • O mapeamento preciso de watts ajuda a identificar servidores ociosos que desperdiçam recursos e geram custos desnecessários
  • Medições constantes no nível do data center garantem conformidade com tetos de consumo elétrico e previnem sobrecargas

O que é o IPMI e por que ele importa para o consumo de energia

Quando gerenciamos servidores físicos em um data center ou em um laboratório caseiro, o custo da eletricidade é uma das maiores dores de cabeça mensais. Saber exatamente quanto cada máquina consome deixa de ser um luxo e vira uma necessidade operacional. É aqui que entra o IPMI, ou Intelligent Platform Management Interface, que na prática funciona como um computador minúsculo e independente dentro do seu servidor principal. Esse chip separado da placa-mãe conversa diretamente com os sensores elétricos da fonte e da placa, permitindo que você descubra o gasto de energia em tempo real sem precisar instalar nenhum software pesado no sistema operacional.

Para entender o ganho prático disso, pense no IPMI como o painel de instrumentos de um carro elétrico. Mesmo que o motor principal esteja desligado ou travado por uma tela azul, o painel continua mostrando informações vitais, como a temperatura da bateria e o nível de carga. Nos servidores bare-metal, que são máquinas dedicadas exclusivamente a um único cliente ou aplicação sem camadas de virtualização pesadas, essa telemetria de energia abre um leque enorme de possibilidades. Você pode cruzar o uso de processamento com o consumo elétrico real, entendendo se aquela aplicação pesada realmente justifica a fatura de luz que chega no final do mês. Além disso, quando falamos em eficiência energética, este método se conecta diretamente com a nossa análise anterior sobre como medir o consumo real de energia em fontes ATX de servidores, complementando a visão entre o hardware bruto e a tomada.

Preparando o terreno com o IPMItool no Linux

Antes de escrever qualquer linha de código em Python, precisamos garantir que conseguimos conversar com o servidor através da linha de comando. A ferramenta padrão da indústria para essa tarefa se chama IPMItool, um utilitário leve que envia comandos diretos para a controladora de gerenciamento da placa-mãe. Na maioria das distribuições Linux voltadas para servidores, a instalação é rápida e direta utilizando o gerenciador de pacotes padrão do sistema operacional, como o apt ou o yum.

Para verificar se o seu servidor responde aos comandos locais de hardware, você normalmente precisa carregar o módulo do kernel responsável por essa interface e executar uma consulta simples aos sensores. Na prática, isso significa abrir o terminal do servidor e digitar os comandos necessários para listar o status atual da máquina. Se a controladora estiver configurada corretamente na rede, você também poderá interagir com ela remotamente informando o endereço IP, o usuário e a senha administrativa configurados na BIOS do servidor.

  1. Instale o utilitário IPMItool no sistema operacional do servidor utilizando o gerenciador de pacotes nativo com o comando apt install ipmitool.
  2. Carregue o módulo do kernel que permite a comunicação com o hardware executando modprobe ipmi_si e modprobe ipmi_devintf.
  3. Consulte os sensores elétricos e de temperatura em tempo real digitando o comando ipmitool sensor list no terminal.

Extraindo telemetria de energia com comandos de linha

Depois que o IPMItool está instalado e respondendo, o próximo passo é descobrir quais comandos específicos revelam o consumo elétrico atual. Nem todos os fabricantes de servidores seguem exatamente o mesmo padrão de nomenclatura para os sensores, o que significa que o comando exato pode variar ligeiramente entre marcas como Dell, HPE, Supermicro ou Lenovo. No entanto, a maioria das controladoras modernas expõe leituras chamadas de SDR, que significam Sensor Data Records, contendo detalhes vitais sobre watts, rotação de ventoinhas e voltagens.

Quando executamos a listagem de sensores, procuramos por termos como 'Power', 'Watts' ou 'Consumption'. Em muitos equipamentos corporativos, existe inclusive um comando específico focado em estatísticas de energia administradas pela própria placa-mãe. Conhecer esses comandos manuais é fundamental antes de passarmos para a automação, pois garante que a controladora está devolvendo números coerentes e que não há problemas de autenticação ou falhas na rede de gerenciamento dedicada.

Automatizando a coleta com scripts em Python

Ficar olhando para a tela do terminal esperando o consumo elétrico mudar não é nada prático. É exatamente aqui que entra a automação com Python, permitindo que você colete esses dados a cada poucos segundos, salve em um arquivo de log ou envie para um painel de monitoramento. A ideia básica do script é executar o comando do IPMItool em segundo plano, capturar a saída de texto gerada pelo sistema, filtrar apenas o número que nos interessa em watts e registrar a informação junto com a data e a hora exatas.

Abaixo temos um exemplo funcional de script em Python que realiza essa leitura de forma automatizada, simulando a extração dos dados e tratando possíveis falhas de comunicação com a controladora de hardware:

import subprocess
import re
import time

def obter_consumo_ipmi():
    try:
        # Executa o comando ipmitool para ler os sensores
        resultado = subprocess.run(
            ['ipmitool', 'sensor', 'list'],
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
            text=True,
            check=True
        )
        
        # Varre cada linha da saída em busca de termos relacionados a energia
        for linha in resultado.stdout.splitlines():
            if 'Power' in linha or 'Watts' in linha:
                partes = linha.split('|')
                if len(partes) > 1:
                    valor_bruto = partes[1].strip()
                    # Extrai apenas os números usando expressão regular
                    match = re.search(r'(\d+)', valor_bruto)
                    if match:
                        return int(match.group(1))
        return None
    except subprocess.CalledProcessError as e:
        print(f'Erro ao executar o IPMItool: {e}')
        return None

if __name__ == '__main__':
    print('Iniciando monitoramento de energia via IPMI...')
    for _ in range(3):
        consumo = obter_consumo_ipmi()
        if consumo:
            print(f'Consumo elétrico atual: {consumo} W')
        else:
            print('Não foi possível ler o sensor de energia.')
        time.sleep(5)

Armazenando e visualizando os dados coletados

Capturar o consumo em watts é apenas metade do caminho; a outra metade envolve transformar esses números em inteligência operacional. Com o script em Python rodando em segundo plano como um serviço do sistema, você pode salvar as métricas em um banco de dados leve, como o SQLite, ou exportá-las em formato JSON para alimentar ferramentas de visualização. Para quem gerencia múltiplos nós em um rack, entender o comportamento térmico e energético ao longo do dia ajuda a planejar melhor a infraestrutura e evitar picos que desarmem disjuntores.

Além disso, o cruzamento desses dados com análises de carga de trabalho permite identificar gargalos operacionais antes que eles afetem o desempenho da aplicação. Quando combinamos essa telemetria com estratégias de dimensionamento físico, como as discutidas em como calcular o consumo real de energia de servidores no rack, conseguimos projetar com muito mais segurança a capacidade elétrica e a climatização necessária para o ambiente de TI. Para aprofundar esses conceitos na prática em produção, confira também nossa análise técnica sobre Como testar quedas de energia com no-break e carga de bancada.

Considerações finais

Medir o consumo elétrico de servidores bare-metal utilizando o IPMI e scripts de automação em Python transforma uma despesa invisível em um dado totalmente controlável. Ao longo deste guia, vimos desde os conceitos fundamentais de hardware até a implementação de código prático para extrair telemetria em tempo real, eliminando a adivinhação na gestão de infraestrutura. Adotar essa rotina de monitoramento não apenas reduz custos na conta de luz, mas também eleva o nível de maturidade operacional da sua equipe, preparando o ambiente para crescer com estabilidade e eficiência.

Em última análise, dominar ferramentas de baixo nível como o IPMItool capacita administradores e engenheiros a tomarem decisões embasadas sobre hardware, refrigeração e densidade de servidores. Seja para otimizar um laboratório caseiro ou gerenciar um parque corporativo, a visibilidade energética é um divisor de águas na engenharia moderna. Implemente os scripts, acompanhe as variações de carga e descubra o verdadeiro perfil de consumo do seu ecossistema tecnológico.