Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Grafana + Prometheus — monitoring serwera VPS

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Monitoring

Dowiadujesz się o problemie od użytkownika? Za późno. Profesjonalne monitorowanie VPS to Prometheus zbierający metryki co 15 sekund i Grafana wyświetlająca dashboardy w czasie rzeczywistym. Gdy CPU przekroczy 90% lub dysk zapełni się w 80% — dostajesz alert zanim cokolwiek się zepsuje. Oto jak to skonfigurować w 30 minut.

Architektura stacku

Trzy komponenty współpracują razem:

  • node_exporter — agent na każdym serwerze, zbiera metryki systemu, wystawia na :9100/metrics
  • Prometheus — scrapuje node_exporter co 15s, przechowuje dane w time-series DB, wystawia :9090
  • Grafana — łączy się z Prometheus, wyświetla dashboardy i zarządza alertami, wystawia :3000

Instalacja node_exporter

# Pobierz najnowszą wersję
NODE_EXPORTER_VERSION="1.7.0"
wget https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
tar xzf node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
sudo mv node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64/node_exporter /usr/local/bin/

# Utwórz użytkownika systemowego
sudo useradd --no-create-home --shell /bin/false node_exporter

# Plik systemd
sudo tee /etc/systemd/system/node_exporter.service <<'EOF'
[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
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

# Sprawdź czy działa
curl -s http://localhost:9100/metrics | head -20

Instalacja Prometheus

PROMETHEUS_VERSION="2.50.0"
wget https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz
tar xzf prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz
sudo mv prometheus-${PROMETHEUS_VERSION}.linux-amd64/{prometheus,promtool} /usr/local/bin/

sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
# /etc/prometheus/prometheus.yml
global:
  scrape_interval: 15s       # Zbieraj metryki co 15 sekund
  evaluation_interval: 15s   # Sprawdzaj reguły alertów co 15s

alerting:
  alertmanagers:
    - static_configs:
        - targets: ['localhost:9093']

rule_files:
  - "alerts/*.yml"

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

  # Metryki systemu Linux
  - job_name: 'node'
    static_configs:
      - targets:
          - 'localhost:9100'       # Ten sam serwer
          - '10.0.0.11:9100'      # Drugi serwer (jeśli masz)
        labels:
          environment: 'production'
# /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 \
    --storage.tsdb.retention.time=15d \
    --web.listen-address=127.0.0.1:9090

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus

# Sprawdź targets w UI
# Otwórz przez SSH tunnel: ssh -L 9090:localhost:9090 user@serwer
# Wejdź na http://localhost:9090/targets — oba targety powinny być UP

Instalacja Grafana

sudo apt-get install -y apt-transport-https software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/grafana.gpg
echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] 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 enable --now grafana-server

Grafana działa na porcie 3000. Po pierwszym zalogowaniu (admin/admin — zmień hasło!) dodaj data source: Configuration → Data Sources → Add data source → Prometheus. URL: http://localhost:9090. Kliknij Save & Test.

Dashboard Node Exporter Full

Zamiast budować dashboard od zera, zaimportuj gotowy "Node Exporter Full" (ID: 1860 w Grafana.com). Zawiera wszystkie kluczowe metryki systemu: CPU, RAM, dysk, sieć, load average, temperatura. Import: Dashboards → Import → 1860 → Load.

Alerting — powiadomienia gdy coś się dzieje

# /etc/prometheus/alerts/node.yml
groups:
  - name: node_alerts
    rules:
      # Alert gdy CPU > 90% przez 5 minut
      - alert: HighCPU
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Wysokie użycie CPU na {{ $labels.instance }}"
          description: "CPU: {{ $value | printf \"%.1f\" }}%"

      # Alert gdy dysk > 85% zajęty
      - alert: DiskSpaceLow
        expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 < 15
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Mało miejsca na dysku: {{ $labels.instance }}"

      # Alert gdy RAM < 10% wolnego
      - alert: LowMemory
        expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 < 10
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Mało pamięci RAM: {{ $labels.instance }}"

Alerty możesz też konfigurować bezpośrednio w Grafanie (Alerting → Alert rules) — łatwiejsze UI, powiadomienia przez email, Slack, PagerDuty, Telegram bez dodatkowego Alertmanagera.

Najczęstsze pytania

Czym różni się Prometheus od Grafany? +
Prometheus to baza danych szeregów czasowych (time-series database) — zbiera metryki przez scraping HTTP endpoints co kilkanaście sekund i je przechowuje. Sam Prometheus ma minimalne UI. Grafana to warstwa wizualizacji — łączy się z Prometheusem (i innymi źródłami: InfluxDB, Elasticsearch, CloudWatch) i wyświetla dashboardy. Alerting możesz robić zarówno w Prometheusie (Alertmanager) jak i w Grafanie (Grafana Alerting).
Co monitoruje node_exporter? +
node_exporter to standardowy eksporter Prometheus dla metryk systemu Linux. Zbiera: CPU (per-core użycie, iowait), RAM (total/used/buffers/cached), dysk (IOPS, latencja, użycie przestrzeni), sieć (bytes in/out, pakiety, błędy), load average, liczba procesów, uptime, temperatura (jeśli dostępna). Uruchamia się jako systemd service na każdym monitorowanym serwerze i wystawia metryki na porcie 9100.
Jak zabezpieczyć Prometheus i Grafanę przed dostępem z zewnątrz? +
Prometheus nie ma wbudowanego uwierzytelnienia — nigdy nie wystawiaj go bezpośrednio na port publiczny. Opcje: (1) Bind na localhost (127.0.0.1:9090) i dostęp przez SSH tunnel: ssh -L 9090:localhost:9090 user@serwer. (2) Nginx reverse proxy z Basic Auth lub OAuth2 Proxy. (3) Firewall — zezwól tylko na IP swojego biura. Grafana ma własne logowanie (domyślnie admin/admin — zmień natychmiast) i może być wystawiona za HTTPS.
Ile zasobów zużywa stack Prometheus + Grafana? +
Prometheus zużywa zależnie od liczby metryk i retention (przechowywania). Dla jednego VPS z node_exporter: ~50-200 MB RAM, ~1-5 GB dysku przy retention 15 dni. Grafana: ~50-100 MB RAM. node_exporter: pomijalne (kilka MB). Stack łącznie potrzebuje ~512 MB RAM i ~10 GB dysku. Na VPS z 2+ GB RAM to komfortowe warunki. Dla mniejszych serwerów (512 MB) rozważ VictoriaMetrics (lżejsza alternatywa dla Prometheus).

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.