Entrar ou criar conta

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.

Grafana e Prometheus do zero à monitoração urbana
Ligado ao treinamento Grafana e Prometheus do zero à monitoração urbana
Duração estimada
90 min
Passos
11
Validações
4
Objetivo

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

ItemRequisito, licença ou versão
Máquina virtual ou física1 vCPU, 2 GB RAM, 10 GB disco, Ubuntu 22.04 ou superior
PrometheusApache 2.0 · a versão estável atual
GrafanaAGPLv3 · a versão estável atual
Node ExporterApache 2.0 · a versão estável atual
Python 3PSF License · 3.8 ou superior

Roteiro

  1. 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 -y

    O que você deve ver: Sistema atualizado e Python 3 disponível.

  2. 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=1

    O que você deve ver: Diretório ~/prometheus criado com binários e arquivos de configuração.

  3. Configurar o Prometheus

    Edite o arquivo de configuração para adicionar o Node Exporter e o sensor simulado como targets.

    nano ~/prometheus/prometheus.yml

    O que você deve ver: Arquivo aberto para edição. Insira os jobs conforme a documentação.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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-server

    O que você deve ver: Grafana rodando na porta 3000.

  9. 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:9090

    O que você deve ver: Fonte de dados Prometheus adicionada com sucesso.

  10. 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_percent

    O que você deve ver: Dashboards exibindo gráficos em tempo real das métricas simuladas.

  11. 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

TesteComandoCritério
Verificar Prometheus coletando métricascurl http://localhost:9090/targetsTargets do Node Exporter e do sensor simulado com status UP.
Checar métricas do sensor simuladocurl http://localhost:8000/metricsLinhas com sensor_temperatura_celsius e sensor_umidade_percent exibidas.
Verificar dashboards no GrafanaGráficos exibindo curvas de temperatura e umidade variando ao longo do tempo.
Checar logs do Prometheustail -f ~/prometheus/prometheus.logSem erros de scrape nos logs.

Troubleshooting

SintomaCausa provávelCorreção
Prometheus não coleta métricas do sensor simuladoPorta ou endereço incorreto no prometheus.ymlCorrija o target para o endereço e porta corretos e reinicie o Prometheus.
Dashboards do Grafana não mostram dadosFonte de dados Prometheus não configurada corretamenteVerifique a URL da fonte de dados e teste a conexão no Grafana.
Node Exporter não aparece como UP no PrometheusNode Exporter não está rodando ou firewall bloqueando porta 9100Garanta que o Node Exporter está ativo e a porta 9100 está liberada.
Sensor simulado não responde na porta 8000Script Python não está rodando ou erro de permissãoReinicie 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.

Checklist final

Referências

  1. Documentação oficial do Prometheus
  2. Documentação oficial do Grafana
  3. Repositório Prometheus no GitHub
  4. Repositório Grafana no GitHub