ULC Lab · implementação reproduzível
Laboratório: Monitoramento de Consumo de Energia via Modbus, Prometheus e Grafana
Você terá um ambiente funcional que coleta métricas de energia via Modbus TCP, armazena no Prometheus e visualiza no Grafana. Todo o fluxo será realizado em máquinas virtuais Linux, em cerca de 2 horas.

- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 4
- Versões da documentação consultada
- mbserver (simulador Modbus TCP) a versão estável atual · prometheus-modbus-exporter a versão estável atual · Prometheus 2.48.1 · Grafana 10.2.3
Este laboratório ensina como coletar dados de consumo de energia de um simulador de dispositivo Modbus TCP, expor essas métricas com um exporter, armazenar no Prometheus e visualizar no Grafana. Você aprenderá a integrar sensores industriais virtuais ao stack moderno de observabilidade, útil para ambientes de TI que precisam monitorar energia em tempo real.
Topologia
Três VMs em uma rede privada: uma simula um medidor de energia Modbus TCP (192.168.56.10), outra executa o prometheus-modbus-exporter (192.168.56.20), e a terceira roda Prometheus e Grafana (192.168.56.30). O exporter coleta dados do simulador e os expõe para o Prometheus, que armazena e serve para o Grafana.
+---------------------+
| VM1: Modbus Sim |
| 192.168.56.10 |
+---------+----------+
|
|
+---------v----------+
| VM2: Exporter |
| 192.168.56.20 |
+---------+----------+
|
|
+---------v----------+
| VM3: Prometheus |
| & Grafana |
| 192.168.56.30 |
+--------------------+Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM Linux (Modbus Sim) | 1 vCPU, 512MB RAM, porta 502/TCP |
| VM Linux (Exporter) | 1 vCPU, 512MB RAM, porta 9000/TCP |
| VM Linux (Prometheus+Grafana) | 2 vCPU, 2GB RAM, portas 9090/TCP e 3000/TCP |
| mbserver (simulador Modbus TCP) | MIT · a versão estável atual |
| prometheus-modbus-exporter | MIT · a versão estável atual |
| Prometheus | Apache 2.0 · 2.48.1 |
| Grafana | AGPLv3 · 10.2.3 |
Roteiro
- Preparar as VMs e rede privada
Crie três VMs Linux (Ubuntu Server recomendado) na mesma rede privada. Isso isola o laboratório e evita conflitos.
O que você deve ver: VMs acessíveis entre si via ping.
- Instalar e configurar o simulador Modbus TCP
No VM1, instale o mbserver para simular um medidor de energia via Modbus TCP.
sudo apt update && sudo apt install golang-go git -y git clone https://github.com/tbrandon/mbserver.git cd mbserver go build . ./mbserver --host 0.0.0.0 --port 502O que você deve ver: mbserver ouvindo na porta 502.
- Popular registradores Modbus com valores simulados
Insira valores fictícios nos registradores do mbserver para simular consumo de energia.
curl -X PUT 'http://localhost:8080/register/holding/0' -d 'value=1234'O que você deve ver: Registro 0 atualizado com valor 1234.
- Instalar o prometheus-modbus-exporter
No VM2, instale o exporter que coleta dados Modbus e expõe para Prometheus.
sudo apt install python3-pip -y pip3 install prometheus-modbus-exporterO que você deve ver: prometheus-modbus-exporter instalado.
- Configurar o prometheus-modbus-exporter
Crie um arquivo de configuração YAML para o exporter apontando para o mbserver.
cat > modbus.yaml <<EOF modules: energy_meter: host: 192.168.56.10 port: 502 unit_id: 1 registers: - name: power_consumption address: 0 type: holding count: 1 EOFO que você deve ver: Arquivo modbus.yaml criado com parâmetros corretos.
- Executar o prometheus-modbus-exporter
Inicie o exporter para expor métricas em /metrics na porta 9000.
prometheus-modbus-exporter --config modbus.yaml --listen 0.0.0.0:9000 &O que você deve ver: Exporter ouvindo em 0.0.0.0:9000/metrics.
- Instalar o Prometheus
No VM3, instale o Prometheus para coletar as métricas do exporter.
sudo useradd --no-create-home --shell /bin/false prometheus wget https://github.com/prometheus/prometheus/releases/download/v2.48.1/prometheus-2.48.1.linux-amd64.tar.gz tar xvf prometheus-2.48.1.linux-amd64.tar.gz sudo mv prometheus-2.48.1.linux-amd64/prometheus /usr/local/bin/ sudo mv prometheus-2.48.1.linux-amd64/promtool /usr/local/bin/O que você deve ver: Prometheus instalado e binários disponíveis.
- Configurar o Prometheus para coletar do exporter
Edite o prometheus.yml para adicionar o exporter como target.
cat > prometheus.yml <<EOF scrape_configs: - job_name: 'modbus_exporter' static_configs: - targets: ['192.168.56.20:9000'] EOFO que você deve ver: Arquivo prometheus.yml com target do exporter.
- Iniciar o Prometheus
Execute o Prometheus apontando para o novo arquivo de configuração.
prometheus --config.file=prometheus.yml &O que você deve ver: Prometheus ouvindo em 0.0.0.0:9090.
- Instalar o Grafana
No VM3, instale o Grafana para visualização das métricas.
sudo apt install -y software-properties-common sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - sudo apt update sudo apt install grafana -y sudo systemctl start grafana-server sudo systemctl enable grafana-serverO que você deve ver: Grafana rodando na porta 3000.
- Adicionar Prometheus como fonte de dados no Grafana
Acesse o Grafana (http://192.168.56.30:3000), faça login e adicione o Prometheus como fonte de dados.
O que você deve ver: Fonte de dados Prometheus conectada.
- Criar dashboard para consumo de energia
No Grafana, crie um painel visualizando a métrica power_consumption coletada do Modbus.
O que você deve ver: Dashboard exibe gráfico de consumo de energia.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar exporter | curl http://192.168.56.20:9000/metrics | Saída inclui power_consumption. |
| Verificar Prometheus | curl http://192.168.56.30:9090/targets | Target modbus_exporter está UP. |
| Consultar métrica no Prometheus | Busca por power_consumption retorna valor. | |
| Visualizar painel no Grafana | Gráfico mostra valores do registrador Modbus. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Exporter não coleta dados | Configuração de endereço IP ou porta incorreta | Verifique modbus.yaml e conectividade entre VMs |
| Prometheus não encontra exporter | Firewall bloqueando porta 9000 ou erro no prometheus.yml | Ajuste regras de firewall e revise configuração |
| Grafana não conecta ao Prometheus | URL da fonte de dados incorreta | Corrija a URL para http://192.168.56.30:9090 |
| Dashboard não exibe dados | Query incorreta ou ausência de coleta | Revise a query e valide coleta no Prometheus |
Segurança e hardening
- Isolar as VMs em rede privada sem acesso externo
- Utilizar senhas fortes para acesso ao Grafana
- Restringir portas abertas apenas ao necessário
- Não expor o mbserver ou exporter para a internet
Checklist final
Referências
- Documentação do Prometheus · Prometheus (CNCF) (prometheus.io)
- Documentação do Grafana · Grafana Labs (grafana.com)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 2 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
