Laboratório em bancada
Laboratório: Monitoramento de Serviços Linux com Prometheus e Grafana
Você terá um ambiente funcional de monitoramento, coletando métricas de uma máquina Linux via Prometheus e visualizando em dashboards Grafana. Tempo estimado: 2 a 3 horas.

- Duração estimada
- 120 min
- Passos
- 13
- Validações
- 5
Este laboratório ensina a montar uma solução de observabilidade ponta a ponta usando apenas software livre. Você vai instalar e configurar Prometheus para coletar métricas do Node Exporter em um servidor Linux, e criar dashboards no Grafana para visualizar essas métricas. O laboratório cobre desde a instalação até a visualização dos dados, passando por configuração de scraping, criação de dashboards e primeiros passos em alertas.
Topologia
Uma máquina Prometheus (192.168.56.10) coleta métricas do Node Exporter rodando em um servidor Linux (192.168.56.20). O Grafana (192.168.56.11) se conecta ao Prometheus para exibir dashboards. Todas as máquinas podem ser VMs locais ou instâncias em nuvem privada.
+-------------------+ +-------------------+
| Prometheus |<----------| Node Exporter |
| 192.168.56.10 | | 192.168.56.20 |
+-------------------+ +-------------------+
|
v
+-------------------+
| Grafana |
| 192.168.56.11 |
+-------------------+
Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM ou servidor para Prometheus | 1 vCPU, 1GB RAM, Ubuntu 22.04 ou superior, porta 9090 aberta |
| VM ou servidor para Grafana | 1 vCPU, 1GB RAM, Ubuntu 22.04 ou superior, porta 3000 aberta |
| VM ou servidor para Node Exporter | 1 vCPU, 512MB RAM, Ubuntu 22.04 ou superior, porta 9100 aberta |
| 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 |
Roteiro
- Preparar as VMs ou servidores
Crie três VMs Linux (ou use três servidores) com IPs fixos na mesma sub-rede privada. Isso isola o laboratório e facilita o acesso entre os componentes.
O que você deve ver: As máquinas respondem a ping entre si.
- Instalar o Node Exporter
O Node Exporter coleta métricas do sistema operacional. Instale na máquina 192.168.56.20.
sudo useradd --no-create-home --shell /bin/false node_exporter wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.linux-amd64.tar.gz tar xvfz node_exporter-*.linux-amd64.tar.gz sudo cp node_exporter-*/node_exporter /usr/local/bin/ sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter echo '[Unit] Description=Node Exporter [Service] User=node_exporter ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=default.target' | sudo tee /etc/systemd/system/node_exporter.service sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporterO que você deve ver: Node Exporter ativo na porta 9100.
- Testar o Node Exporter
Verifique se o Node Exporter está coletando métricas.
curl http://localhost:9100/metricsO que você deve ver: Saída com várias métricas em formato texto.
- Instalar o Prometheus
Prometheus fará o scraping das métricas. Instale na máquina 192.168.56.10.
wget https://github.com/prometheus/prometheus/releases/latest/download/prometheus-*.linux-amd64.tar.gz tar xvfz prometheus-*.linux-amd64.tar.gz sudo cp prometheus-*/prometheus /usr/local/bin/ sudo cp prometheus-*/promtool /usr/local/bin/ sudo mkdir /etc/prometheus sudo cp -r prometheus-*/consoles /etc/prometheus/ sudo cp -r prometheus-*/console_libraries /etc/prometheus/ sudo useradd --no-create-home --shell /bin/false prometheus sudo chown -R prometheus:prometheus /etc/prometheus sudo mkdir /var/lib/prometheus sudo chown prometheus:prometheus /var/lib/prometheusO que você deve ver: Prometheus instalado e binários disponíveis.
- Configurar o Prometheus para coletar do Node Exporter
Edite o arquivo de configuração para adicionar o Node Exporter como alvo. Isso define de onde o Prometheus vai coletar métricas.
sudo nano /etc/prometheus/prometheus.ymlO que você deve ver: Arquivo editado. Inclua: scrape_configs: - job_name: 'node' static_configs: - targets: ['192.168.56.20:9100']
- Iniciar o Prometheus
Rode o serviço Prometheus usando systemd.
echo '[Unit] Description=Prometheus [Service] User=prometheus ExecStart=/usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/var/lib/prometheus/ [Install] WantedBy=default.target' | sudo tee /etc/systemd/system/prometheus.service sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheusO que você deve ver: Prometheus ativo na porta 9090.
- Testar o Prometheus
Verifique se o Prometheus está rodando e acessível na interface web.
curl http://localhost:9090O que você deve ver: Página HTML do Prometheus.
- Verificar targets no Prometheus
Confirme se o Node Exporter aparece como alvo ativo.
Acesse http://192.168.56.10:9090/targets no navegadorO que você deve ver: Node Exporter listado como UP.
- Instalar o Grafana
Grafana será usado para criar dashboards. Instale na máquina 192.168.56.11.
sudo apt-get install -y apt-transport-https software-properties-common wget 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-get update sudo apt-get install grafana sudo systemctl start grafana-server sudo systemctl enable grafana-serverO que você deve ver: Grafana ativo na porta 3000.
- Acessar o Grafana
Abra o navegador em http://192.168.56.11:3000. O login padrão é admin/admin.
O que você deve ver: Interface web do Grafana.
- Adicionar Prometheus como fonte de dados no Grafana
No Grafana, adicione o Prometheus como fonte de dados. Isso conecta o Grafana ao Prometheus.
No menu lateral: Configuration > Data Sources > Add data source > Prometheus. URL: http://192.168.56.10:9090O que você deve ver: Fonte de dados Prometheus salva e conectada.
- Criar um dashboard básico no Grafana
Crie um dashboard simples para visualizar métricas do Node Exporter, como uso de CPU e memória.
No Grafana: Dashboards > New > Add Query. Exemplo de métrica: node_cpu_seconds_totalO que você deve ver: Dashboard mostrando gráficos de métricas do Node Exporter.
- Configurar um alerta simples no Grafana
Configure um alerta para uso de CPU acima de 80%. Isso demonstra a integração de alertas.
No painel do gráfico: Alert > Create Alert > Conditions: WHEN avg() OF query(A, 5m, now) IS ABOVE 0.8O que você deve ver: Alerta criado e status visível no painel.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Node Exporter responde na porta 9100 | curl http://192.168.56.20:9100/metrics | Métricas em texto são exibidas. |
| Prometheus coleta métricas do Node Exporter | Acesse http://192.168.56.10:9090/targets | Target 'node' aparece como UP. |
| Grafana acessa o Prometheus | Fonte de dados Prometheus conectada sem erro. | |
| Dashboard mostra métricas | Gráficos exibem dados em tempo real. | |
| Alerta dispara em condição simulada | Status do alerta muda conforme condição definida. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Node Exporter não responde na porta 9100 | Serviço não iniciado ou firewall bloqueando | Verifique status com 'systemctl status node_exporter' e ajuste firewall. |
| Prometheus não coleta métricas | Erro no endereço do target ou sintaxe do YAML | Revise o arquivo prometheus.yml e reinicie o serviço. |
| Grafana não conecta ao Prometheus | URL incorreta ou porta bloqueada | Confirme URL e conectividade de rede entre as VMs. |
| Dashboard não mostra dados | Query mal construída ou fonte de dados errada | Refaça a query e valide a fonte de dados. |
| Alerta não dispara | Condição de alerta mal configurada | Revise as condições e simule a situação de alerta. |
Segurança e hardening
- Utilize usuários dedicados para Prometheus e Node Exporter, sem permissões de root.
- Restrinja o acesso às portas 9090, 9100 e 3000 apenas à rede interna do laboratório.
- Altere as senhas padrão do Grafana após o primeiro acesso.
- Não exponha as interfaces web para a internet sem autenticação e HTTPS.
- Consulte a documentação oficial para hardening adicional.
