Laboratório em bancada
Laboratório: Monitoração de Sensores Simulados com Prometheus e Grafana
Você terá um ambiente funcional com Prometheus coletando métricas de sensores simulados e Grafana exibindo dashboards em até 2 horas. Todo o processo usa apenas software livre e máquinas virtuais ou computadores comuns.

- Duração estimada
- 90 min
- Passos
- 11
- Validações
- 4
Demonstrar, na prática, como coletar, armazenar e visualizar métricas de sensores urbanos simulados usando Prometheus e Grafana. O laboratório cobre desde a instalação dos componentes até a criação de dashboards, preparando para desafios reais de monitoração em ambientes de cidades inteligentes.
Topologia
Um servidor Prometheus coleta métricas de um exportador Node Exporter e de um sensor simulado (rodando em Python) na mesma rede. O Grafana se conecta ao Prometheus para visualizar os dados. Todos os serviços podem rodar em uma única máquina ou em VMs separadas, usando endereços privados como 192.168.56.10 (Prometheus/Grafana) e 192.168.56.11 (sensores).
+-------------------+
| Usuário |
+--------+---------+
|
+--------v---------+
| Grafana |
+--------+---------+
|
+--------v---------+
| Prometheus |
+---+---------+----+
| |
+--------v-+ +---v----------+
| Node Exp | | Sensor Simul |
+----------+ +--------------+Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| Máquina virtual ou física | 1 vCPU, 2 GB RAM, 10 GB disco, Ubuntu 22.04 ou superior |
| Prometheus | Apache 2.0 · a versão estável atual |
| Grafana | AGPLv3 · a versão estável atual |
| Node Exporter | Apache 2.0 · a versão estável atual |
| Python 3 | PSF License · 3.8 ou superior |
Roteiro
- Preparar o ambiente
Atualize o sistema e instale dependências básicas. Isso evita falhas por pacotes desatualizados.
sudo apt update && sudo apt upgrade -y sudo apt install wget curl python3 python3-pip -yO que você deve ver: Sistema atualizado e Python 3 disponível.
- Instalar o Prometheus
Prometheus é o coletor central de métricas. Baixe e instale a versão estável.
wget https://github.com/prometheus/prometheus/releases/latest/download/prometheus-*.linux-amd64.tar.gz mkdir -p ~/prometheus && tar -xzf prometheus-*.linux-amd64.tar.gz -C ~/prometheus --strip-components=1O que você deve ver: Diretório ~/prometheus criado com binários e arquivos de configuração.
- Configurar o Prometheus
Edite o arquivo de configuração para adicionar o Node Exporter e o sensor simulado como targets.
nano ~/prometheus/prometheus.ymlO que você deve ver: Arquivo aberto para edição. Insira os jobs conforme a documentação.
- Instalar e iniciar o Node Exporter
Node Exporter expõe métricas do sistema operacional. Instale e inicie em modo background.
wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.linux-amd64.tar.gz tar -xzf node_exporter-*.linux-amd64.tar.gz nohup ./node_exporter-*.linux-amd64/node_exporter &O que você deve ver: Node Exporter rodando na porta 9100.
- Criar sensor simulado em Python
Implemente um exportador HTTP simples que expõe métricas simuladas (temperatura, umidade).
pip3 install prometheus_client cat <<EOF > sensor_simulado.py from prometheus_client import start_http_server, Gauge import random, time temp_gauge = Gauge('sensor_temperatura_celsius', 'Temperatura simulada') hum_gauge = Gauge('sensor_umidade_percent', 'Umidade simulada') def gerar_metricas(): while True: temp_gauge.set(random.uniform(20, 40)) hum_gauge.set(random.uniform(30, 90)) time.sleep(5) if __name__ == '__main__': start_http_server(8000) gerar_metricas() EOF nohup python3 sensor_simulado.py &O que você deve ver: Sensor simulado rodando na porta 8000, expondo métricas Prometheus.
- Ajustar o prometheus.yml
Inclua os targets do Node Exporter e do sensor simulado no arquivo de configuração do Prometheus.
Exemplo de trecho: scrape_configs: - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100'] - job_name: 'sensor_simulado' static_configs: - targets: ['localhost:8000']O que você deve ver: Arquivo salvo com os targets corretos.
- Iniciar o Prometheus
Rode o servidor Prometheus apontando para o arquivo de configuração.
cd ~/prometheus nohup ./prometheus --config.file=prometheus.yml &O que você deve ver: Prometheus rodando na porta 9090.
- Instalar o Grafana
Grafana é a interface de visualização. Instale a versão estável.
sudo apt install -y apt-transport-https software-properties-common wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list 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.
- Configurar o Grafana para usar o Prometheus
Acesse o Grafana em http://localhost:3000, faça login (admin/admin) e adicione o Prometheus como fonte de dados.
Interface web. Fonte de dados: URL http://localhost:9090O que você deve ver: Fonte de dados Prometheus adicionada com sucesso.
- Criar dashboards no Grafana
Crie painéis para visualizar as métricas do Node Exporter e do sensor simulado.
Interface web. Crie gráficos com as queries: sensor_temperatura_celsius e sensor_umidade_percentO que você deve ver: Dashboards exibindo gráficos em tempo real das métricas simuladas.
- Testar coleta contínua
Deixe o ambiente rodando por alguns minutos para observar a atualização dos dados.
O que você deve ver: Gráficos do Grafana atualizando conforme as métricas mudam.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar Prometheus coletando métricas | curl http://localhost:9090/targets | Targets do Node Exporter e do sensor simulado com status UP. |
| Checar métricas do sensor simulado | curl http://localhost:8000/metrics | Linhas com sensor_temperatura_celsius e sensor_umidade_percent exibidas. |
| Verificar dashboards no Grafana | Gráficos exibindo curvas de temperatura e umidade variando ao longo do tempo. | |
| Checar logs do Prometheus | tail -f ~/prometheus/prometheus.log | Sem erros de scrape nos logs. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Prometheus não coleta métricas do sensor simulado | Porta ou endereço incorreto no prometheus.yml | Corrija o target para o endereço e porta corretos e reinicie o Prometheus. |
| Dashboards do Grafana não mostram dados | Fonte de dados Prometheus não configurada corretamente | Verifique a URL da fonte de dados e teste a conexão no Grafana. |
| Node Exporter não aparece como UP no Prometheus | Node Exporter não está rodando ou firewall bloqueando porta 9100 | Garanta que o Node Exporter está ativo e a porta 9100 está liberada. |
| Sensor simulado não responde na porta 8000 | Script Python não está rodando ou erro de permissão | Reinicie o script e verifique permissões de rede. |
Segurança e hardening
- Não exponha as portas 9090, 9100, 8000 e 3000 para a internet sem autenticação.
- Altere a senha padrão do Grafana após o primeiro login.
- Use firewalls para restringir acesso às portas dos serviços.
- Consulte a documentação para hardening adicional de Prometheus e Grafana.
