---
title: "Instalar Grafana e Prometheus na VPS com node_exporter"
description: "Instale Prometheus, node_exporter e Grafana no Ubuntu, importe o dashboard 1860 e publique o Grafana com HTTPS sem expor as portas 9090 e 9100."
url: "https://streethosting.com.br/guias/vps/instalar-grafana-prometheus-vps"
category: "vps"
slug: "instalar-grafana-prometheus-vps"
datePublished: "2026-09-28"
dateModified: "2026-09-28"
author: "Equipe StreetHosting"
difficulty: "intermediario"
language: "pt-BR"
keywords:
  - "instalar grafana prometheus vps"
  - "grafana prometheus ubuntu"
  - "node exporter vps"
  - "dashboard node exporter full 1860"
  - "monitorar vps com grafana"
---

# Painel de CPU, RAM, disco e rede da VPS com Grafana e Prometheus

O node_exporter publica os números da máquina, o Prometheus coleta e guarda o histórico e o Grafana transforma tudo em gráficos. Veja como montar o stack no Ubuntu 24.04 sem deixar portas sensíveis abertas para a internet.

> **Resposta rápida**
>
> Para **instalar Grafana e Prometheus na VPS**, instale o node_exporter (porta 9100) para expor as métricas da máquina, o Prometheus (porta 9090) para coletar e guardar o histórico e o Grafana (porta 3000) para desenhar os gráficos. Deixe 9090 e 9100 ouvindo só em localhost, publique o Grafana atrás do Nginx com HTTPS e importe o dashboard Node Exporter Full, de ID 1860, para ver CPU, RAM, disco e rede em poucos minutos.

## Como as peças se encaixam

O stack tem três peças com papéis bem separados, e entender quem fala com quem evita metade dos erros de configuração. Nenhuma métrica é enviada ativamente: é o Prometheus que vai buscar os números em cada alvo, no intervalo que você definir. Esse modelo se chama pull, e ele muda a forma de pensar o firewall, porque quem precisa alcançar a porta do exporter é só o Prometheus.

| Componente | Porta padrão | Função | Exposição recomendada |
| --- | --- | --- | --- |
| node_exporter | 9100 TCP | Lê CPU, memória, disco, rede e sistemas de arquivos do Linux e publica tudo em /metrics | Só localhost, ou só para o IP do Prometheus |
| Prometheus | 9090 TCP | Coleta as métricas, guarda o histórico em disco e responde consultas em PromQL | Só localhost, com acesso por túnel SSH |
| Grafana | 3000 TCP | Consulta o Prometheus, desenha dashboards e dispara alertas | Atrás do Nginx com HTTPS |
| Alertmanager (opcional) | 9093 TCP | Agrupa e envia alertas gerados por regras do Prometheus | Só localhost |

Em uma VPS que monitora a si mesma, os três serviços juntos costumam ocupar algumas centenas de MB de RAM. O recurso que mais cresce com o tempo é o disco do Prometheus, proporcional ao número de séries, ao intervalo de coleta e à retenção, que por padrão é de 15 dias. Se você só precisa de uma foto do momento ou de um painel pronto sem montar nada, o caminho mais leve está em [monitorar recursos com htop e Netdata](https://streethosting.com.br/guias/vps/monitorar-recursos-vps-htop-netdata). Grafana e Prometheus valem a pena quando você quer histórico longo, consultas próprias e várias máquinas no mesmo painel.

## Prometheus e node_exporter

No Ubuntu 24.04, o caminho mais curto é usar os pacotes do próprio repositório. Eles trazem uma versão da série 2 do Prometheus, mais antiga que a última publicada, mas estável e atualizada pelo apt junto com o resto do sistema. Se você precisa de algum recurso da série 3, baixe os binários oficiais em prometheus.io e crie unidades systemd próprias; o restante deste guia continua valendo.

```
sudo apt update
sudo apt install -y prometheus prometheus-node-exporter
systemctl status prometheus prometheus-node-exporter --no-pager
```

Os dois serviços sobem habilitados para iniciar no boot. Antes de seguir, confirme que o exporter está respondendo na própria máquina:

```
curl -s http://localhost:9100/metrics | grep "^node_load"
```

Se aparecerem as linhas de load average, a coleta tem de onde ler. A configuração do Prometheus fica em `/etc/prometheus/prometheus.yml`. O arquivo do pacote costuma já trazer um job apontando para localhost:9100. Confira e deixe a parte de coleta parecida com esta, incluindo um rótulo que identifique a máquina nos painéis:

```
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node"
    static_configs:
      - targets: ["localhost:9100"]
        labels:
          servidor: "vps-principal"
```

YAML é sensível a indentação, e um espaço fora do lugar derruba o serviço no restart. O `promtool` vem no mesmo pacote e aponta o erro com número de linha antes que ele vire problema:

```
promtool check config /etc/prometheus/prometheus.yml
sudo systemctl restart prometheus
```

## Fechar as portas 9090 e 9100

Por padrão, o node_exporter e o Prometheus escutam em todas as interfaces. Numa VPS com IP público, isso significa que qualquer pessoa consegue ler as métricas da sua máquina (versão do kernel, pontos de montagem, interfaces, processos de sistema) e consultar o Prometheus, que não tem login na interface web. É informação de graça para quem está procurando por onde entrar. A correção é fazer os dois ouvirem só em 127.0.0.1.

No pacote do Ubuntu, os parâmetros de linha de comando de cada serviço ficam em um arquivo dentro de `/etc/default`, na variável ARGS. Edite a linha ARGS de cada um (se ela já tiver opções, acrescente as novas no fim):

```
# /etc/default/prometheus-node-exporter
ARGS="--web.listen-address=127.0.0.1:9100"

# /etc/default/prometheus
ARGS="--web.listen-address=127.0.0.1:9090 --storage.tsdb.retention.time=30d"
```

A segunda opção do Prometheus aumenta a retenção de 15 para 30 dias. Ajuste ao seu disco: depois de alguns dias de coleta, o comando `sudo du -sh /var/lib/prometheus` mostra quanto o histórico está ocupando e dá para projetar o resto. Reinicie e confira em que endereço cada porta ficou:

```
sudo systemctl restart prometheus-node-exporter prometheus
sudo ss -tlnp | grep -E ':9090|:9100'
```

A saída precisa mostrar 127.0.0.1:9090 e 127.0.0.1:9100. Se aparecer 0.0.0.0 ou um asterisco, a mudança não foi aplicada. Como segunda camada, mantenha o firewall negando toda entrada que não foi liberada de propósito. Com o UFW na política padrão, basta não criar regra para essas portas; o passo a passo está em [firewall UFW na VPS Ubuntu](https://streethosting.com.br/guias/vps/firewall-ufw-vps-ubuntu).

> **Atenção**
>
> Se você rodar Prometheus ou exporters em Docker publicando a porta com `-p 9090:9090`, o Docker cria regras próprias de iptables que passam por cima do UFW, e a porta fica pública mesmo com o firewall negando. Publique sempre no formato `127.0.0.1:9090:9090`.

Para abrir a interface do Prometheus sem expor nada, use um túnel SSH a partir do seu computador. Com a sessão aberta, acesse http://localhost:9090 no navegador e, no menu Status, abra Targets: os jobs prometheus e node precisam aparecer como UP.

```
ssh -L 9090:localhost:9090 usuario@IP_DA_VPS
```

## Instalar o Grafana

O Grafana não está no repositório do Ubuntu. Use o repositório APT oficial da Grafana Labs, que entrega atualizações pelo apt como qualquer outro pacote:

```
sudo apt install -y wget gpg
sudo mkdir -p /etc/apt/keyrings
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install -y grafana
```

Antes de iniciar o serviço pela primeira vez, faça o Grafana ouvir só em localhost e informe o endereço público que ele terá. Edite `/etc/grafana/grafana.ini` na seção server:

```
[server]
http_addr = 127.0.0.1
http_port = 3000
domain = grafana.seu-dominio.com.br
root_url = https://grafana.seu-dominio.com.br/
```

No arquivo original essas linhas começam com ponto e vírgula, que é o comentário do formato ini. Tire o ponto e vírgula de cada linha que você alterar, senão o Grafana ignora a mudança e continua ouvindo em todas as interfaces. Depois, habilite e inicie:

```
sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server
sudo ss -tlnp | grep :3000
```

> **Atenção**
>
> O primeiro login do Grafana é admin com senha admin, e ele pede a troca logo em seguida. Faça esse primeiro acesso por túnel SSH, com `ssh -L 3000:localhost:3000 usuario@IP_DA_VPS` e o navegador em http://localhost:3000, antes de publicar o domínio. Enquanto a senha padrão estiver ativa, quem chegar primeiro na tela de login entra como administrador.

Já logado, ligue o Grafana ao Prometheus: em Connections, Data sources, clique em Add data source, escolha Prometheus e informe http://localhost:9090 como endereço do servidor. Clique em Save and test. Como os dois estão na mesma VPS, localhost resolve, e a porta 9090 continua fechada para fora.

## Grafana atrás do Nginx com HTTPS

Com o Grafana preso em 127.0.0.1:3000, o Nginx vira a única porta de entrada, e é nele que fica o certificado. Crie no DNS um registro A do subdomínio, como `grafana.seu-dominio.com.br`, apontando para o IP da VPS. Depois instale o Nginx e o Certbot e crie o arquivo do site:

```
sudo apt install -y nginx certbot python3-certbot-nginx
sudo nano /etc/nginx/sites-available/grafana
```

```
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 80;
    server_name grafana.seu-dominio.com.br;

    location / {
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:3000;
    }

    location /api/live/ {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:3000;
    }
}
```

O bloco de /api/live/ segue a documentação oficial do Grafana: é por ali que passam as conexões WebSocket usadas pelos recursos em tempo real. Ative o site, teste a sintaxe e emita o certificado. O Certbot reescreve o bloco server para escutar na 443 e redirecionar o HTTP:

```
sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo ufw allow "Nginx Full"
sudo certbot --nginx -d grafana.seu-dominio.com.br
```

Se é a primeira vez que você monta proxy reverso, os detalhes de cada diretiva estão em [Nginx como reverse proxy na VPS](https://streethosting.com.br/guias/vps/configurar-nginx-reverse-proxy-vps), e a renovação automática do certificado em [SSL com Let's Encrypt e Nginx](https://streethosting.com.br/guias/vps/certificado-ssl-vps-lets-encrypt-nginx).

> **Dica**
>
> Painel de monitoramento raramente precisa estar aberto para o mundo. Se só a sua equipe acessa, restrinja no próprio bloco location com `allow SEU_IP;` seguido de `deny all;`, ou deixe o Grafana acessível apenas pela VPN.

## Dashboard Node Exporter Full

Montar painel de sistema do zero não compensa o tempo. O dashboard comunitário Node Exporter Full, de ID 1860, já organiza CPU por núcleo, load average, memória, swap, uso e latência de disco, tráfego de rede e ocupação dos sistemas de arquivos em seções que você expande conforme a necessidade.

1. No Grafana, abra Dashboards, clique em New e depois em Import.
2. Digite 1860 no campo de ID do dashboard e clique em Load.
3. Selecione o data source Prometheus criado antes e clique em Import.
4. No topo do painel, escolha o job node e a instância que você quer ver.

Se os painéis aparecerem vazios, quase sempre o problema é o seletor de job ou o target fora do ar. Confira se o alvo está UP na página Targets do Prometheus e se o nome do job no topo do dashboard é o mesmo do prometheus.yml. A página do dashboard fica em [grafana.com/grafana/dashboards/1860](https://grafana.com/grafana/dashboards/1860).

### Consultas úteis em PromQL

Mesmo com o dashboard pronto, vale ter à mão as consultas básicas. São elas que você vai usar para criar alertas e painéis próprios. Cole no campo de consulta do Prometheus ou do Grafana:

```
# CPU em uso (%), média de todos os núcleos
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

# Memória disponível (%)
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100

# Espaço livre na raiz (%)
node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100

# Tráfego de entrada por interface, em bits por segundo
rate(node_network_receive_bytes_total{device!="lo"}[5m]) * 8

# CPU steal (%), tempo que a VM esperou pelo processador físico
avg by (instance) (rate(node_cpu_seconds_total{mode="steal"}[5m])) * 100
```

## Várias VPS e alertas

Quando você tem mais de uma VPS, não instale Grafana e Prometheus em cada uma. O desenho que escala é um servidor de monitoramento central com Prometheus e Grafana e apenas o node_exporter em cada máquina monitorada. Assim há um painel só, um lugar só para configurar alertas e o disco do histórico fica concentrado onde você planejou.

Nesse desenho, o exporter das outras VPS precisa aceitar conexão de fora, mas apenas do IP do Prometheus. Nas máquinas monitoradas, deixe o ARGS do exporter vazio (ou com o IP da interface) e libere a porta somente para o servidor de monitoramento:

```
# na VPS monitorada
sudo ufw allow from IP_DO_MONITORAMENTO to any port 9100 proto tcp

# no prometheus.yml do servidor de monitoramento
  - job_name: "node"
    static_configs:
      - targets: ["localhost:9100"]
        labels:
          servidor: "monitoramento"
      - targets: ["IP_DA_VPS_APP:9100"]
        labels:
          servidor: "app"
```

Uma alternativa ainda mais fechada é ligar as máquinas por uma [VPN com WireGuard](https://streethosting.com.br/guias/vps/proteger-vps-wireguard-vpn) e fazer o exporter ouvir só no IP da VPN, de modo que a 9100 nem apareça na interface pública. O node_exporter também aceita TLS e autenticação básica por um arquivo passado em `--web.config.file`, útil quando a coleta atravessa a internet.

### Alertas no Grafana

O Grafana tem alertas próprios. Em Alerting, Contact points, cadastre um destino, como email, Discord ou Telegram. Em Alert rules, crie regras sobre as mesmas consultas dos painéis. Para email, preencha antes a seção smtp do grafana.ini. Três regras cobrem a maior parte dos incidentes de VPS:

- **Disco:** espaço livre na raiz abaixo de 15% por 10 minutos. Dá tempo de limpar antes de o banco parar de gravar.
- **Memória:** memória disponível abaixo de 10% por 5 minutos, sinal de que o OOM killer está perto de agir.
- **Coleta:** `up == 0` por 2 minutos, que indica exporter parado ou VPS fora do ar.

Esses alertas têm um limite claro: se o servidor de monitoramento cair, ele não avisa nada. Por isso, o monitoramento completo combina métricas internas com checagem de disponibilidade feita de fora. A estratégia inteira, com limites de alerta e o que monitorar em cada camada, está em [como monitorar uma VPS 24 horas por dia](https://streethosting.com.br/guias/vps/monitorar-vps-24-horas).

## Qual VPS usar para o monitoramento

Monitoramento não depende de clock alto. Depende de memória estável para o Grafana e de disco rápido para o Prometheus gravar séries sem engasgar. Por isso a linha [VPS Xeon](https://streethosting.com.br/vps/xeon), com mais vCPU por real, DDR4 e NVMe, encaixa bem como servidor de monitoramento separado das aplicações. Ela também tem AntiDDoS Enterprise, uplink de 1 Gbps e latência média de 20 ms no Brasil.

| Cenário | Plano sugerido | Preço mensal |
| --- | --- | --- |
| Uma a três VPS, retenção de 15 dias | Xeon com 2 vCPU, 2 GB e 20 GB NVMe | R$ 23,00 |
| Até algumas dezenas de VPS, retenção de 30 dias | Xeon com 3 vCPU, 4 GB e 40 GB NVMe | R$ 40,00 |
| Muitos hosts, retenção longa e vários usuários no Grafana | Xeon com 4 vCPU, 6 GB e 60 GB NVMe | R$ 57,00 |
| Stack junto de uma aplicação que pede clock alto | Ryzen 9 9950X com 2 vCPU, 4 GB e 40 GB NVMe | R$ 64,00 |

A linha Xeon vai de R$ 23,00 a R$ 550,00 por mês, com até 24 vCPU, 64 GB de RAM e 640 GB de NVMe. A Ryzen 9 9950X, com DDR5 e até 5,7 GHz, vai de R$ 39,00 a R$ 814,00. As duas ficam em São Paulo, com acesso root, AntiDDoS incluso e ativação em até 60 segundos. Se a retenção crescer mais que o previsto, o upgrade pelo painel aumenta memória, vCPU e disco e cobra só a diferença proporcional do ciclo. Compare os degraus na [página de VPS](https://streethosting.com.br/vps).

## Perguntas frequentes

### Qual a diferença entre Prometheus e Grafana?

O Prometheus coleta as métricas em intervalos fixos, guarda o histórico em disco e responde consultas. O Grafana não armazena métricas: ele consulta o Prometheus e transforma o resultado em painéis e alertas. Juntos, cobrem coleta, histórico e visualização.

### Preciso abrir as portas 9090 e 9100 no firewall?

Não. Quando tudo roda na mesma VPS, o Prometheus lê o node_exporter pela própria máquina, então as duas portas podem ouvir só em 127.0.0.1. Libere a 9100 apenas quando um Prometheus em outro servidor precisar coletar, e só para o IP dele.

### Quanto de RAM o Grafana e o Prometheus usam?

Monitorando poucas VPS, os três componentes juntos costumam ficar em algumas centenas de MB. O consumo cresce com o número de séries coletadas, com a retenção e com a quantidade de painéis abertos. Uma VPS de 2 GB atende um cenário pequeno e 4 GB dão folga para dezenas de servidores.

### Qual dashboard usar com o node_exporter?

O Node Exporter Full, de ID 1860, é o mais usado. Importe pelo menu Dashboards, New, Import, informe o ID e escolha o data source do Prometheus. Ele já traz CPU por núcleo, memória, swap, disco, rede e sistema de arquivos.

### O Grafana substitui um monitor de uptime?

Não por completo. Se o Grafana e o Prometheus rodam na mesma VPS que caiu, nenhum alerta sai de lá. Para saber de queda com certeza, mantenha também um monitor externo, como o Uptime Kuma instalado em outra máquina.

## Guias relacionados

- [Como monitorar uma VPS 24 horas: métricas, alertas e uptime](https://streethosting.com.br/guias/vps/monitorar-vps-24-horas.md)
- [Como monitorar os recursos da VPS com htop e Netdata](https://streethosting.com.br/guias/vps/monitorar-recursos-vps-htop-netdata.md)
- [Como configurar o Nginx como reverse proxy na VPS](https://streethosting.com.br/guias/vps/configurar-nginx-reverse-proxy-vps.md)
- [Certificado SSL na VPS com Let's Encrypt e Nginx](https://streethosting.com.br/guias/vps/certificado-ssl-vps-lets-encrypt-nginx.md)
- [UFW na VPS Ubuntu: regras de firewall sem perder o SSH](https://streethosting.com.br/guias/vps/firewall-ufw-vps-ubuntu.md)

## Produtos citados

- https://streethosting.com.br/vps/xeon
- https://streethosting.com.br/vps

## Dados estruturados

```json
[
  {
    "@context": "https://schema.org",
    "@type": [
      "Article",
      "TechArticle"
    ],
    "headline": "Painel de CPU, RAM, disco e rede da VPS com Grafana e Prometheus",
    "name": "Instalar Grafana e Prometheus na VPS com node_exporter",
    "abstract": "O node_exporter publica os números da máquina, o Prometheus coleta e guarda o histórico e o Grafana transforma tudo em gráficos. Veja como montar o stack no Ubuntu 24.04 sem deixar portas sensíveis abertas para a internet.",
    "description": "Instale Prometheus, node_exporter e Grafana no Ubuntu, importe o dashboard 1860 e publique o Grafana com HTTPS sem expor as portas 9090 e 9100.",
    "datePublished": "2026-09-28",
    "dateModified": "2026-09-28",
    "author": {
      "@type": "Organization",
      "name": "Equipe StreetHosting"
    },
    "publisher": {
      "@type": "Organization",
      "name": "StreetHosting",
      "url": "https://streethosting.com.br"
    },
    "inLanguage": "pt-BR",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://streethosting.com.br/guias/vps/instalar-grafana-prometheus-vps"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Qual a diferença entre Prometheus e Grafana?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "O Prometheus coleta as métricas em intervalos fixos, guarda o histórico em disco e responde consultas. O Grafana não armazena métricas: ele consulta o Prometheus e transforma o resultado em painéis e alertas. Juntos, cobrem coleta, histórico e visualização."
        }
      },
      {
        "@type": "Question",
        "name": "Preciso abrir as portas 9090 e 9100 no firewall?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Não. Quando tudo roda na mesma VPS, o Prometheus lê o node_exporter pela própria máquina, então as duas portas podem ouvir só em 127.0.0.1. Libere a 9100 apenas quando um Prometheus em outro servidor precisar coletar, e só para o IP dele."
        }
      },
      {
        "@type": "Question",
        "name": "Quanto de RAM o Grafana e o Prometheus usam?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Monitorando poucas VPS, os três componentes juntos costumam ficar em algumas centenas de MB. O consumo cresce com o número de séries coletadas, com a retenção e com a quantidade de painéis abertos. Uma VPS de 2 GB atende um cenário pequeno e 4 GB dão folga para dezenas de servidores."
        }
      },
      {
        "@type": "Question",
        "name": "Qual dashboard usar com o node_exporter?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "O Node Exporter Full, de ID 1860, é o mais usado. Importe pelo menu Dashboards, New, Import, informe o ID e escolha o data source do Prometheus. Ele já traz CPU por núcleo, memória, swap, disco, rede e sistema de arquivos."
        }
      },
      {
        "@type": "Question",
        "name": "O Grafana substitui um monitor de uptime?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Não por completo. Se o Grafana e o Prometheus rodam na mesma VPS que caiu, nenhum alerta sai de lá. Para saber de queda com certeza, mantenha também um monitor externo, como o Uptime Kuma instalado em outra máquina."
        }
      }
    ]
  }
]
```
