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

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="[email protected]"
DEFAULT_RECIPIENT_EMAIL="[email protected]"

# 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.