1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Grafana + Prometheus - monitoring VPS

# Grafana + Prometheus - monitoring serwera VPS

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Monitoring

⚡ W skrócie · 8 min czytania

-   Jak skonfigurować stack Prometheus + node\_exporter + Grafana na VPS: instalacja, konfiguracja scrapingu, dashboardy, alerting przez Alertmanager.
-   Architektura stacku.
-   Instalacja node\_exporter.
-   Instalacja Prometheus.
-   Instalacja Grafana.

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.

Contabo

VPS z dużym RAM - monitoring stack Prometheus+Grafana potrzebuje min. 1 GB RAM

Monitoring VPS

[Aktywuj rabat →](/out/contabo/#reklama "Contabo")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo/)

Mikrus

Tani VPS do nauki monitoringu - node\_exporter działa nawet na 256 MB RAM

Tani VPS

[Aktywuj rabat →](/out/mikrus/#reklama "Mikrus")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus/)

## Powiązane strony

-   [Netdata - monitoring serwera w czasie rzeczywistym](/baza-wiedzy/netdata-monitoring-vps/)
-   [Monitorowanie strony - UptimeRobot i alerty](/baza-wiedzy/monitorowanie-strony-uptime-robot/)
-   [ELK Stack - centralne logowanie serwera](/baza-wiedzy/elk-stack-logi-serwera/)
-   [Docker Compose w produkcji - best practices](/baza-wiedzy/docker-compose-produkcja/)
-   [MySQL slow query log - optymalizacja zapytań](/baza-wiedzy/mysql-slow-query-log/)
-   [Wszystkie artykuły](/baza-wiedzy/)
-   [Jaki VPS wybrać?](/jaki-vps-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 14 czerwca 2026

Artykuły HostGrade.pl przygotowuje i aktualizuje redakcja serwisu. Ceny startowe, ceny odnowienia i warunki planów sprawdzamy w cennikach i regulaminach dostawców, a potem liczymy całkowity koszt za 2 lata (cena startowa plus odnowienia). Zasady zbierania danych i liczenia kosztów opisujemy na stronie Metodologia. Linki partnerskie oznaczamy jako #reklama.

[O redakcji i metodologii →](/autorzy/)