Best VPS for Grafana 2026: Monitor Everything on Your Own Server
REVIEW 9 min read fordnox

Best VPS for Grafana 2026: Monitor Everything on Your Own Server

Find the best VPS for hosting Grafana. Compare specs, pricing, and performance to run your own monitoring dashboards with Prometheus, Loki, and more.


Best VPS for Grafana in 2026

Grafana is the go-to open-source platform for monitoring and observability. Beautiful dashboards, alerting, and support for dozens of data sources — from Prometheus to PostgreSQL to CloudWatch. Self-hosting it means your metrics stay yours.

Why Self-Host Grafana?

Why Self-Host Grafana?

Why Self-Host Grafana?

FactorGrafana Cloud FreeGrafana Cloud ProSelf-Hosted
Metrics10k series15k+ seriesUnlimited
Logs50GB/mo100GB+/moYour disk
Retention14 days13 monthsYou decide
Dashboards10UnlimitedUnlimited
Users3UnlimitedUnlimited
CostFree$29+/mo~$5-10/mo

Once you’re past hobby scale, self-hosting Grafana saves money and removes all limits on metrics, retention, and users.

VPS Requirements

Grafana itself is lightweight, but the full monitoring stack (Prometheus, Loki, etc.) needs more resources.

RAM (Important)

CPU (Moderate)

Storage (Critical)

Network

Best VPS for Grafana

1. Hostinger KVM2 (Best Overall) ⭐

$5.99/mo | 2 vCPU, 8GB RAM, 100GB NVMe

8GB RAM handles Grafana + Prometheus + Loki comfortably for most setups. 100GB NVMe gives solid retention for metrics and logs. Hard to beat at this price.

Best for: Full monitoring stack, small-to-medium infrastructure

→ Get Hostinger VPS

2. Hetzner CX22 (Best Budget)

€3.99/mo | 2 vCPU, 4GB RAM, 40GB NVMe

Runs Grafana + Prometheus for a handful of targets. 4GB RAM means you’ll need to be strategic about what you monitor, but for personal projects or small teams it works.

Best for: Solo developers, monitoring < 20 targets

→ Get Hetzner VPS

3. Contabo VPS M (Best Value)

€9.49/mo | 6 vCPU, 16GB RAM, 200GB NVMe

16GB RAM lets you run the entire LGTM stack (Loki, Grafana, Tempo, Mimir) without sweating. 200GB NVMe gives months of metric and log retention. Six vCPUs handle complex PromQL queries and dashboard rendering.

Best for: Full observability stack, long retention, 50+ monitored targets

→ Get Contabo VPS

4. Hetzner CPX31 (Best Performance)

€14.49/mo | 4 vCPU, 8GB RAM, 160GB NVMe

Dedicated AMD EPYC vCPUs give consistent query performance. Prometheus PromQL queries on large datasets benefit from predictable CPU. 160GB NVMe handles serious retention.

Best for: Production monitoring, consistent performance needs

→ Get Hetzner VPS

5. Vultr Cloud Compute (Best Global Coverage)

$24/mo | 2 vCPU, 4GB RAM, 80GB NVMe

32 data centers worldwide. If you’re monitoring infrastructure across regions, place your Grafana instance close to the majority of your scrape targets for lower latency.

Best for: Distributed infrastructure monitoring

→ Get Vultr VPS

Quick Comparison

VPSRAMvCPUStoragePriceBest For
Hostinger KVM28GB2100GB NVMe$5.99/moOverall best
Hetzner CX224GB240GB NVMe€3.99/moBudget
Contabo M16GB6200GB NVMe€9.49/moFull stack
Hetzner CPX318GB4160GB NVMe€14.49/moPerformance
Vultr CC4GB280GB NVMe$24/moGlobal

How to Install Grafana + Prometheus

# docker-compose.yml
version: "3.8"
services:
  grafana:
    image: grafana/grafana:latest
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=changeme
      - GF_USERS_ALLOW_SIGN_UP=false
    depends_on:
      - prometheus

  prometheus:
    image: prom/prometheus:latest
    restart: unless-stopped
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.retention.time=90d'
      - '--storage.tsdb.path=/prometheus'

  node-exporter:
    image: prom/node-exporter:latest
    restart: unless-stopped
    ports:
      - "9100:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'

volumes:
  grafana_data:
  prometheus_data:

Prometheus Config

# prometheus.yml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

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

  - job_name: 'node'
    static_configs:
      - targets: ['node-exporter:9100']
docker compose up -d
# Grafana: http://your-server:3000 (admin / changeme)
# Prometheus: http://your-server:9090

Adding Loki for Logs

# Add to docker-compose.yml
  loki:
    image: grafana/loki:latest
    restart: unless-stopped
    ports:
      - "3100:3100"
    volumes:
      - loki_data:/loki
    command: -config.file=/etc/loki/local-config.yaml

  promtail:
    image: grafana/promtail:latest
    restart: unless-stopped
    volumes:
      - /var/log:/var/log:ro
      - ./promtail.yml:/etc/promtail/config.yml
    command: -config.file=/etc/promtail/config.yml

volumes:
  loki_data:

Now you have metrics AND logs in one place. Add Loki as a data source in Grafana and query logs alongside your dashboards.

Performance Tuning

Prometheus

# prometheus.yml
global:
  scrape_interval: 30s      # 30s instead of 15s halves storage
  scrape_timeout: 10s

# Command flags
--storage.tsdb.retention.time=90d    # Keep 90 days
--storage.tsdb.retention.size=50GB   # Or cap by size
--storage.tsdb.wal-compression       # Compress WAL

Grafana

# /etc/grafana/grafana.ini or environment variables
[database]
type = sqlite3            # SQLite is fine for most setups
# Use PostgreSQL if you have 10+ concurrent dashboard users

[dashboards]
min_refresh_interval = 30s   # Prevent 1s refresh intervals

[dataproxy]
timeout = 60                 # Increase for slow queries

Reverse Proxy (Caddy)

grafana.yourdomain.com {
    reverse_proxy localhost:3000
}

Essential Dashboards

Start with these community dashboards (import by ID in Grafana):

DashboardIDDescription
Node Exporter Full1860Complete Linux server monitoring
Docker + System893Container metrics
Caddy14280Reverse proxy monitoring
PostgreSQL9628Database monitoring
Prometheus Stats2Prometheus self-monitoring

Import: Grafana → Dashboards → Import → Enter ID → Select Prometheus data source.

Alerting Setup

Grafana has built-in alerting. No need for Alertmanager unless you’re already running it:

# In Grafana UI: Alerting → Contact points
# Set up Telegram, Slack, Discord, or email notifications

# Example alert rule (via provisioning):
# Alert when CPU > 80% for 5 minutes
# Alert when disk usage > 90%
# Alert when a target is down for 2 minutes

Security Checklist

Grafana Cloud vs Self-Hosted

FeatureGrafana Cloud FreeSelf-Hosted
Setup timeInstant15 minutes
Metrics limit10k seriesUnlimited
Log limit50GB/moYour disk
Retention14 daysYou choose
Dashboards10Unlimited
AlertingBasicFull
Cost at scale$29-299/mo$5-10/mo
MaintenanceNoneYou

Grafana Cloud is great for getting started. Self-hosting wins when you need more metrics, longer retention, or want to avoid growing costs.

Backup Strategy

#!/bin/bash
# backup-monitoring.sh — run daily via cron
BACKUP_DIR="/backups/monitoring"
DATE=$(date +%Y-%m-%d)

# Backup Grafana (dashboards, users, settings)
docker compose exec -T grafana grafana-cli admin data-migration backup \
  /var/lib/grafana/backup-$DATE.tar.gz 2>/dev/null || \
  docker cp grafana:/var/lib/grafana/grafana.db "$BACKUP_DIR/grafana-$DATE.db"

# Snapshot Prometheus (optional — large)
# docker compose exec -T prometheus promtool tsdb snapshot /prometheus
# docker cp prometheus:/prometheus/snapshots/ "$BACKUP_DIR/prom-$DATE/"

# Keep last 14 days
find $BACKUP_DIR -name "grafana-*.db" -mtime +14 -delete

FAQ

How much RAM does Grafana need?

Grafana alone runs in 200-500MB. But you’ll want Prometheus too, which needs 1-4GB depending on metric count. Budget 4GB minimum for a useful monitoring stack.

Can I monitor multiple servers with one Grafana instance?

Yes. Install node-exporter on each server, point Prometheus at them, and view everything in one Grafana dashboard. One VPS can monitor dozens of servers.

Is Prometheus required for Grafana?

No — Grafana supports 50+ data sources including MySQL, PostgreSQL, Elasticsearch, InfluxDB, and CloudWatch. But Prometheus is the most popular pairing and what most tutorials use.

How long can I keep metrics?

As long as you have disk space. Prometheus with 100GB NVMe can store months of data for hundreds of targets. Use --storage.tsdb.retention.time to set your retention period.

Grafana vs Datadog?

Grafana is free and open source. Datadog charges per host ($15-23/host/mo) and per metric. For 10 servers, Datadog costs $150-230/mo. Self-hosted Grafana costs $6/mo. The tradeoff is you manage the infrastructure.

Our Pick

Hostinger KVM2 at $5.99/month gives you 8GB RAM and 100GB NVMe — enough to run Grafana, Prometheus, Loki, and node-exporter for dozens of targets. A complete monitoring stack for less than one month of any cloud monitoring service.

→ Get started with Hostinger

~/best-vps-for-grafana/get-started

Ready to get started?

Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.

Get Hostinger VPS — $4.99/mo

// up to 75% off + free domain included

// related topics

best vps for grafana grafana hosting self-hosted grafana grafana vps grafana server grafana prometheus vps

// related guides

Andrius Putna

Andrius Putna

I am Andrius Putna. Geek. Since early 2000 in love tinkering with web technologies. Now AI. Bridging business and technology to drive meaningful impact. Combining expertise in customer experience, technology, and business strategy to deliver valuable insights. Father, open-source contributor, investor, 2xIronman, MBA graduate.

// last updated: February 18, 2026. Disclosure: This article may contain affiliate links.