 Autor: [Adam Nadolny](/autorzy/adam-nadolny) Ekspert DevOps i infrastruktury · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Netdata — real-time monitoring VPS

# Netdata — real-time monitoring VPS z alertami i streaming

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS

Monitoring serwera to must-have w każdym środowisku produkcyjnym. Problem ze stosem Prometheus + Alertmanager + Grafana jest taki, że jego konfiguracja od zera zajmuje godziny. Netdata to inne podejście: instalujesz jeden pakiet i w ciągu 30 sekund masz setki metryk (CPU, RAM, sieć, dysk, procesy, MySQL, Nginx, PostgreSQL i dziesiątki innych) w realnym czasie, z wbudowanymi alertami i dashboardem dostępnym przez przeglądarkę. Ten artykuł pokazuje instalację, konfigurację alertów, parent-child streaming dla wielu serwerów i integrację z Grafana.

## Instalacja Netdata

\# Oficjalny skrypt instalacyjny (działa na Ubuntu, Debian, CentOS, Fedora)
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry

# Lub przez apt (stabilna wersja)
curl -s https://packagecloud.io/netdata/netdata/gpgkey | sudo apt-key add -
echo "deb https://packagecloud.io/netdata/netdata/ubuntu/ $(lsb\_release -cs) main" | \\
  sudo tee /etc/apt/sources.list.d/netdata.list
sudo apt update && sudo apt install netdata -y

# Start i weryfikacja
sudo systemctl enable --now netdata
sudo systemctl status netdata

# Dashboard dostepny lokalnie
# http://localhost:19999
# Lub przez tunel SSH: ssh -L 19999:localhost:19999 user@vps-ip

## Konfiguracja podstawowa — netdata.conf

\# Sprawdz aktualna konfiguracje
sudo /usr/sbin/netdata -W dump-config > /etc/netdata/netdata.conf

# /etc/netdata/netdata.conf — klucze ustawienia
\[global\]
    hostname = web-prod-01   # Nazwa wezla w dashboardzie
    update every = 1         # Czestotliwosc zbierania: 1s (domyslnie)

\[web\]
    bind to = 127.0.0.1      # Tylko localhost (domyslnie) — NIE wystawiaj publicznie bez auth!
    port = 19999

\[db\]
    mode = dbengine
    dbengine multihost disk space MB = 1024   # 1 GB danych historycznych na dysku

# Aplikuj zmiany
sudo systemctl restart netdata

## Konfiguracja retencji — DBENGINE tiers

Netdata używa hierarchicznego systemu przechowywania danych (tiers) — starsze dane są automatycznie agregowane do niższej rozdzielczości:

Tier

Rozdzielczość

Domyślna retencja

Zastosowanie

tier0

1 sekunda

~1 dzień (RAM)

Realtime debugging, aktywny monitoring

tier1

60 sekund (1 min)

~3 miesiące (dysk)

Analiza trendów tygodniowych/miesięcznych

tier2

3600 sekund (1h)

~2 lata (dysk)

Długoterminowe planowanie pojemności

\# /etc/netdata/netdata.conf — konfiguracja retencji
\[db\]
    mode = dbengine

    # Tier 0 (1s) — ile MB RAM uzywac
    dbengine tier 0 granularity = 1
    dbengine tier 0 disk space MB = 512    # Dane 1s na dysku

    # Tier 1 (1min) — 3 miesięczna historia
    dbengine tier 1 granularity = 60
    dbengine tier 1 disk space MB = 256

    # Tier 2 (1h) — 2-letnia historia
    dbengine tier 2 granularity = 3600
    dbengine tier 2 disk space MB = 128

## Alerty — konfiguracja health.d

Netdata dostarcza setki gotowych alertów (w `/usr/lib/netdata/conf.d/health.d/`). Własne reguły definiujesz w `/etc/netdata/health.d/`:

\# /etc/netdata/health.d/custom.conf

# Alert: uzycie dysku > 80%
alarm: disk\_space\_usage
    on: disk.space
    lookup: average -1m percentage of used
    units: %
    every: 1m
    warn: $this > 80
    crit: $this > 95
    info: Uzycie dysku przekroczyo $this% na $family
    to: sysadmin

# Alert: load average > liczba CPU \* 2
alarm: system\_load\_average
    on: system.load
    lookup: average -5m of load1
    units: load
    every: 1m
    warn: $this > (($status >= $WARNING) ? (numcpus \* 1.5) : (numcpus \* 2))
    crit: $this > (($status == $CRITICAL) ? (numcpus \* 2) : (numcpus \* 3))
    info: System load average (1m) jest $this przy ${numcpus} CPU
    to: sysadmin

# Alert: dostepna pamiec RAM < 20%
alarm: low\_ram\_available
    on: system.ram
    lookup: average -1m percentage of free,cached,buffers
    units: %
    every: 1m
    warn: $this < 20
    crit: $this < 10
    info: Dostepna pamiec RAM wynosi $this%
    to: sysadmin

# Alert: wiecej niz 10 polaczen CLOSE\_WAIT
alarm: tcp\_close\_wait
    on: ipv4.tcpsock
    lookup: average -1m of CurrEstab
    units: connections
    every: 1m
    warn: $this > 500
    crit: $this > 1000
    to: sysadmin

\# /etc/netdata/health\_alarm\_notify.conf — kanaly powiadomien

# Email
SEND\_EMAIL="YES"
EMAIL\_SENDER="netdata@example.com"
DEFAULT\_RECIPIENT\_EMAIL="admin@example.com"

# Discord
SEND\_DISCORD="YES"
DISCORD\_WEBHOOK\_URL="https://discord.com/api/webhooks/xxx/yyy"
DEFAULT\_RECIPIENT\_DISCORD="alerts"   # Nazwa kanalu Discord (bez #)

# Slack
SEND\_SLACK="YES"
SLACK\_WEBHOOK\_URL="https://hooks.slack.com/services/xxx/yyy"
DEFAULT\_RECIPIENT\_SLACK="#monitoring"

# Telegram
SEND\_TELEGRAM="YES"
TELEGRAM\_BOT\_TOKEN="12345:xxxxx"
DEFAULT\_RECIPIENT\_TELEGRAM="chat-id"

# Testowanie powiadomien
/usr/libexec/netdata/plugins.d/alarm-notify.sh test

## Parent-child streaming — centralne zbieranie metryk

Streaming pozwala zbierać metryki z wielu serwerów na jednym dashboardzie. Konfiguracja:

\# Na serwerze PARENT (centralny):
# /etc/netdata/stream.conf

\[stream\]
    enabled = yes

# Przyjmuj polaczenia z child-ow
\[API\_TOKEN\]                        # Wygeneruj token: openssl rand -hex 32
    enabled = yes
    allow from = \*                 # Lub podaj IP child-ow
    default history = 3600
    default memory mode = dbengine
    health enabled by default = auto

\# Na serwerach CHILD (kazdy monitorowany serwer):
# /etc/netdata/stream.conf

\[stream\]
    enabled = yes
    destination = parent-server.example.com:19999
    api key = TWOJ\_API\_TOKEN\_Z\_PARENTA

# Na child mozna wylaczyc lokalne przechowywanie danych (parent je trzyma)
# /etc/netdata/netdata.conf
\[db\]
    mode = ram           # Tylko w RAM, bez zapisu na dysk child
    retention = 120      # 2 minuty buforu w przypadku utraty polaczenia

# Restart na child i parent
sudo systemctl restart netdata

## Integracja z Grafana przez Prometheus exporter

\# Netdata eksportuje metryki w formacie Prometheus
# Endpoint: http://localhost:19999/api/v1/allmetrics?format=prometheus

# Konfiguracja w /etc/netdata/exporting.conf
\[prometheus:exporter\]
    enabled = yes
    destination = localhost:19999

# Konfiguracja Prometheus — dodaj job w prometheus.yml
scrape\_configs:
  - job\_name: 'netdata'
    metrics\_path: /api/v1/allmetrics
    params:
      format: \[prometheus\]
    static\_configs:
      - targets:
          - web-prod-01:19999
          - web-prod-02:19999
          - db-prod-01:19999

# W Grafana dodaj datasource Prometheus i importuj dashboard:
# ID: 7107 (Netdata for Prometheus) lub 2701 (Netdata summary)

## Zabezpieczenie dashboardu — Nginx reverse proxy z auth

\# NIGDY nie wystawiaj Netdata (port 19999) bezposrednio na internet
# Ustaw bind only localhost: w netdata.conf: bind to = 127.0.0.1

# Proxy przez Nginx z BasicAuth
server {
    listen 443 ssl;
    server\_name monitoring.example.com;

    # SSL przez certbot / Let's Encrypt

    location / {
        auth\_basic "Netdata Monitoring";
        auth\_basic\_user\_file /etc/nginx/.htpasswd;

        proxy\_pass http://127.0.0.1:19999;
        proxy\_http\_version 1.1;
        proxy\_set\_header Upgrade $http\_upgrade;
        proxy\_set\_header Connection "upgrade";
        proxy\_set\_header Host $host;
    }
}

# Wygeneruj .htpasswd
sudo htpasswd -c /etc/nginx/.htpasswd admin

## Porównanie narzędzi monitoringu

Narzędzie

Instalacja

Real-time

Alerty

Zużycie RAM

**Netdata**

Bardzo prosta

1 sekunda

Wbudowane

~50 MB

Prometheus + Grafana

Złożona

15 sekund

Alertmanager

~200 MB+

Zabbix

Złożona

30 sekund

Zaawansowane

~300 MB+

Munin

Prosta

5 minut

Podstawowe

~20 MB

Glances

Bardzo prosta

1 sekunda

Brak wbudowanych

~30 MB

## Najczęstsze pytania

Czym Netdata różni się od Prometheus + Grafana? +

Netdata jest gotowe z pudełka — instalujesz i masz dashboard z setkoma metryk bez konfiguracji. Prometheus wymaga: eksporterów per usługa, konfiguracji scraping, reguł alertów w osobnym pliku, Grafany do wizualizacji. Netdata zbiera dane co sekundę (Prometheus domyślnie co 15s), ma wbudowany alert engine i anomaly detection. Prometheus jest lepszy dla multi-tenant, własnych metryk aplikacyjnych i złożonych reguł agregacji. W praktyce można łączyć: Netdata jako agent + eksport do Prometheus.

Ile zasobów zużywa Netdata na małym VPS? +

Netdata zużywa około 40-80 MB RAM i 1-3% CPU na typowym VPS. Przy domyślnej konfiguracji przechowuje dane przez 1 dzień w pamięci (DBENGINE tier0). Historyczne dane są tiers: tier0=1sek/1dzień, tier1=1min/3miesiące, tier2=1h/2lata. Możesz ograniczyć zużycie przez zmniejszenie liczby zbieranych metryk lub ustawienie db storage bytes. Na VPS z 1 GB RAM Netdata jest akceptowalny, ale przy ekstremalnie ograniczonych zasobach rozważ Prometheus node\_exporter (lżejszy).

Jak skonfigurować powiadomienia alertów Netdata na email lub Discord? +

Alerty Netdata konfiguruje się w /etc/netdata/health.d/ (definicje reguł) i /etc/netdata/health\_alarm\_notify.conf (kanały powiadomień). Dla emaila: ustaw EMAIL\_SENDER i DEFAULT\_RECIPIENT\_EMAIL. Dla Discorda: włącz SEND\_DISCORD=YES, ustaw DISCORD\_WEBHOOK\_URL i DEFAULT\_RECIPIENT\_DISCORD=. Są też integracje z Slack, PagerDuty, Telegram, OpsGenie. Netdata obsługuje alerty wielopoziomowe: WARNING i CRITICAL ze s osobnymi odbiorcami.

Co to jest parent-child streaming w Netdata? +

Streaming to architektura gdzie wiele węzłów child (agenty na serwerach) przesyła metryki do jednego węzła parent (centralny serwer). Child zbiera i wysyła, parent przechowuje dane długoterminowo i udostępnia wspólny dashboard dla wszystkich węzłów. Dzięki temu dashboardy i alerty są w jednym miejscu, a child-y mogą mieć mniejszą retencję (lub żadną). Używasz jednego tokenu API (stream.conf) do autoryzacji child→parent.

## 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 pod Netdata parent — zbierz metryki z wielu child serwerów w jednym miejscu

VPS Monitor

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

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

Mikr.us

Tani VPS z Netdata child — monitoruj każdy serwer budżetowy centralnie

Child node

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

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

LH.pl

Hosting z wbudowanym monitoringiem — alternatywa gdy nie chcesz zarządzać Netdata

Managed

[Aktywuj rabat →](/out/lh-pl)

#Reklama · link partnerski

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

## Powiązane strony

-   [Zabbix — monitoring serwera VPS i alerting](/baza-wiedzy/zabbix-monitoring-serwera)
-   [Fail2ban — ochrona VPS przed bruteforce](/baza-wiedzy/fail2ban-konfiguracja-vps)
-   [Monitoring strony — UptimeRobot](/baza-wiedzy/monitorowanie-strony-uptime-robot)
-   [Wszystkie artykuły](/baza-wiedzy/)