Grafana em um VPS é o painel que lê as métricas que o Prometheus coleta nesse servidor: CPU, memória, disco e rede. Sem esse histórico, o time só descobre que o disco encheu quando a aplicação já caiu.
Este guia instala Node Exporter, Prometheus e Grafana no Ubuntu 22.04 ou 24.04. As versões fixadas são Prometheus 2.53.0 e Node Exporter 1.8.2. Antes de copiar, confira se ainda são as estáveis em github.com/prometheus/prometheus/releases.
O conceito do stack está no artigo de monitoramento com Prometheus e Grafana. O servidor em si pode ser um VPS KVM gerenciado.
1. Criar os usuários de serviço
Os binários não devem rodar como root.
sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus
sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter
2. Instalar o Node Exporter
O Node Exporter publica as métricas do sistema na porta 9100.
cd /tmp
NODE_VERSION=1.8.2
wget https://github.com/prometheus/node_exporter/releases/download/v${NODE_VERSION}/node_exporter-${NODE_VERSION}.linux-amd64.tar.gz
tar xzf node_exporter-${NODE_VERSION}.linux-amd64.tar.gz
sudo mv node_exporter-${NODE_VERSION}.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Crie /etc/systemd/system/node_exporter.service:
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
curl -s localhost:9100/metrics | head
A última linha precisa imprimir métricas (node_cpu_seconds_total ou similar). Se o curl falhar, rode systemctl status node_exporter.
3. Instalar o Prometheus
cd /tmp
PROM_VERSION=2.53.0
wget https://github.com/prometheus/prometheus/releases/download/v${PROM_VERSION}/prometheus-${PROM_VERSION}.linux-amd64.tar.gz
tar xzf prometheus-${PROM_VERSION}.linux-amd64.tar.gz
sudo mv prometheus-${PROM_VERSION}.linux-amd64/prometheus prometheus-${PROM_VERSION}.linux-amd64/promtool /usr/local/bin/
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
Grave /etc/prometheus/prometheus.yml:
global:
scrape_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ["localhost:9090"]
- job_name: node
static_configs:
- targets: ["localhost:9100"]
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
Crie /etc/systemd/system/prometheus.service:
[Unit]
Description=Prometheus
After=network.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
curl -s localhost:9090/-/ready
A resposta esperada é Prometheus Server is Ready.
4. Instalar o Grafana e importar o dashboard
sudo apt-get install -y apt-transport-https wget
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-get update
sudo apt-get install -y grafana
Feche o painel na interface local. Em /etc/grafana/grafana.ini, na seção [server]:
http_addr = 127.0.0.1
http_port = 3000
sudo systemctl enable --now grafana-server
Na sua máquina, abra um túnel e use o navegador em http://127.0.0.1:3000:
ssh -L 3000:127.0.0.1:3000 deploy@IP_DO_VPS
Login inicial: admin / admin. Troque a senha no primeiro acesso. Em Connections, Data sources, adicione Prometheus com a URL http://127.0.0.1:9090. Em Dashboards, New, Import, use o ID 1860 (Node Exporter Full) e selecione essa fonte.
5. Firewall
Prometheus (9090) e Node Exporter (9100) ficam só em localhost neste guia. Não publique essas portas na internet. Se o SSH ainda não está liberado na firewall, faça isso antes de ativá-la:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Conclusão
Com o dashboard 1860 aberto pelo túnel SSH, CPU, memória, disco e rede do VPS passam a ter histórico. O próximo passo operacional é alerta: disco acima de 80% e load acima do número de vCPUs. Quem não quer manter esse stack pode deixar o monitoramento no VPS gerenciado, em que a engenharia acompanha os mesmos sinais.