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

InfluxDB v2 + Telegraf — monitoring VPS i aplikacji

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS / Monitoring

InfluxDB v2 to baza danych szeregów czasowych z wbudowanym dashboardem, API i zarządzaniem alertami. Telegraf to agent zbierający metryki z ponad 300 źródeł (CPU, pamięć, dysk, sieć, MySQL, Nginx, Docker, Kubernetes i wiele innych). Razem tworzą lekki i wydajny stack monitoringu, który dobrze współpracuje z Grafaną. Ten artykuł przeprowadzi cię przez instalację obu komponentów, konfigurację podstawowych collectorów, pierwsze zapytania w języku Flux oraz integrację z Grafaną.

Instalacja InfluxDB v2 na Ubuntu

# Dodaj repozytorium InfluxData
curl -s https://repos.influxdata.com/influxdata-archive_compat.key \
  | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg

echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] \
  https://repos.influxdata.com/ubuntu stable main" \
  | sudo tee /etc/apt/sources.list.d/influxdata.list

sudo apt update && sudo apt install -y influxdb2

# Uruchom i wlacz przy starcie
sudo systemctl enable --now influxdb
sudo systemctl status influxdb

# InfluxDB dziala na porcie 8086
# Web UI: http://localhost:8086

Konfiguracja wstępna — organizacja, bucket i token

Po pierwszym uruchomieniu otwórz http://TWOJ_IP:8086 i przejdź przez wizard konfiguracji. Możesz też użyć CLI:

# Konfiguracja przez CLI
influx setup \
  --username admin \
  --password HasloAdmin123 \
  --org mojafirma \
  --bucket metrics \
  --retention 30d \
  --force

# Sprawdz konfiguracje
influx config ls

# Utwórz dodatkowy bucket (np. dla dlugoterminowych danych z retencja 365 dni)
influx bucket create \
  --name metrics-long \
  --org mojafirma \
  --retention 365d

# Wyswietl tokeny
influx auth list

# Utwórz token read-only dla Grafany
influx auth create \
  --org mojafirma \
  --read-buckets \
  --description "Grafana read-only"

Instalacja i konfiguracja Telegraf

sudo apt install -y telegraf

# Wygeneruj konfiguracje Telegraf z gotowymi pluginami
# Lub skonfiguruj manualnie /etc/telegraf/telegraf.conf

# Glowna konfiguracja outputu do InfluxDB v2
# /etc/telegraf/telegraf.conf

[[outputs.influxdb_v2]]
  urls = ["http://localhost:8086"]
  token = "TWOJ_OPERATOR_TOKEN"
  organization = "mojafirma"
  bucket = "metrics"

[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = false

[[inputs.disk]]
  ignore_fs = ["tmpfs", "devtmpfs", "devfs"]

[[inputs.diskio]]

[[inputs.kernel]]

[[inputs.mem]]

[[inputs.net]]
  interfaces = ["eth0", "lo"]

[[inputs.processes]]

[[inputs.swap]]

[[inputs.system]]
# Uruchom Telegraf
sudo systemctl enable --now telegraf
sudo systemctl status telegraf

# Sprawdz czy metryki plyna do InfluxDB
telegraf --config /etc/telegraf/telegraf.conf --test | head -30

# Logi
sudo journalctl -u telegraf -f

Dodatkowe pluginy Telegraf

Plugin Co zbiera Konfiguracja
inputs.nginx Nginx status (requests, connections, read/write) urls = ["http://localhost/nginx_status"]
inputs.mysql MySQL/MariaDB — queries, connections, InnoDB stats servers = ["user:pass@tcp(127.0.0.1:3306)/"]
inputs.postgresql PostgreSQL — DB stats, table sizes, connections address = "postgres://user:pass@localhost/db"
inputs.docker Docker containers — CPU, mem, net per container endpoint = "unix:///var/run/docker.sock"
inputs.redis Redis — used memory, keyspace hits/misses, clients servers = ["tcp://localhost:6379"]
inputs.http_response HTTP status check — response time, status code urls = ["https://twojadomena.pl"]
inputs.ping ICMP ping — latencja do zewnętrznych hostów urls = ["8.8.8.8", "1.1.1.1"]

Flux — język zapytań InfluxDB v2

Flux to pipeline-based język zapytań. Dane przepływają przez łańcuch transformacji połączonych operatorem |>. Podstawowa struktura: fromrangefilter → agregacja.

// Srednie uzycie CPU z ostatniej godziny, co 5 minut
from(bucket: "metrics")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "cpu")
  |> filter(fn: (r) => r._field == "usage_active")
  |> filter(fn: (r) => r.cpu == "cpu-total")
  |> aggregateWindow(every: 5m, fn: mean, createEmpty: false)
  |> yield(name: "mean_cpu")

// Wolna pamiec RAM (MB)
from(bucket: "metrics")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "mem")
  |> filter(fn: (r) => r._field == "available")
  |> map(fn: (r) => ({ r with _value: r._value / 1024 / 1024 }))
  |> yield(name: "free_mb")

// Top 5 procesow po uzyciu CPU
from(bucket: "metrics")
  |> range(start: -15m)
  |> filter(fn: (r) => r._measurement == "procstat")
  |> filter(fn: (r) => r._field == "cpu_usage")
  |> top(n: 5, columns: ["_value"])

// Uzycie dysku ponad 80%
from(bucket: "metrics")
  |> range(start: -5m)
  |> filter(fn: (r) => r._measurement == "disk")
  |> filter(fn: (r) => r._field == "used_percent")
  |> filter(fn: (r) => r._value > 80.0)

Alerty w InfluxDB (Checks i Notifications)

InfluxDB v2 ma wbudowany system alertowania. W zakładce Alerts tworzysz Checks (definicja warunku) i Notification Rules (gdzie wysłać alert). Obsługiwane kanały powiadomień: Slack, PagerDuty, email, HTTP webhook. Przykład alertu przez Flux CLI:

// Alert gdy CPU > 90% przez 5 minut
// Tworz przez UI: Alerts → Create Check → Threshold Check
// lub Flux:

option task = {name: "CPU alert", every: 5m}

from(bucket: "metrics")
  |> range(start: -task.every)
  |> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_active")
  |> filter(fn: (r) => r.cpu == "cpu-total")
  |> mean()
  |> map(fn: (r) => ({ r with
    _level: if r._value > 90.0 then "crit"
             else if r._value > 75.0 then "warn"
             else "ok"
  }))
  |> monitor.check(
    data: {r},
    messageFn: (r) => "CPU usage is ${r._value}% on ${r.host}"
  )

Grafana — integracja z InfluxDB v2

Grafana świetnie współpracuje z InfluxDB v2 jako datasource. Gotowe dashboardy dla Telegraf są dostępne na Grafana.com do importu jednym kliknięciem.

# Instalacja Grafana (Ubuntu)
sudo apt install -y grafana
sudo systemctl enable --now grafana-server
# Web UI: http://localhost:3000 (admin/admin)

# Konfiguracja datasource InfluxDB v2 przez API (lub przez UI)
curl -X POST http://admin:admin@localhost:3000/api/datasources \
  -H "Content-Type: application/json" \
  -d '{
    "name": "InfluxDB",
    "type": "influxdb",
    "url": "http://localhost:8086",
    "jsonData": {
      "version": "Flux",
      "organization": "mojafirma",
      "defaultBucket": "metrics",
      "tlsSkipVerify": true
    },
    "secureJsonData": {
      "token": "TWOJ_GRAFANA_READ_TOKEN"
    }
  }'

# Importuj gotowy dashboard Telegraf (ID 928 lub 1443 na grafana.com)
# Grafana UI: Dashboards → Import → wpisz ID 928 → Load → Select datasource

Najczęstsze pytania

Czym InfluxDB różni się od PostgreSQL do przechowywania metryk? +
InfluxDB to baza danych szeregów czasowych (time series database, TSDB) zoptymalizowana pod metryki: automatyczna kompresja danych w czasie, natywny timestamp jako klucz, efektywne zapytania agregujące po czasie (mean/max/min over last 5m), polityki retencji automatycznie usuwające stare dane. PostgreSQL to baza relacyjna — świetna do danych biznesowych, ale bez specjalizacji na metryki: bez automatycznej kompresji, bez natywnych operacji okna czasowego, wolna przy milionach wierszy metryk. Do metryk VPS i aplikacji InfluxDB jest 10-100x efektywniejsza.
Co to są tagi i pola w InfluxDB? +
W InfluxDB każdy punkt danych (measurement) ma: timestamp, tagi (tags) i pola (fields). Tagi to metadane indeksowane — używane do filtrowania i grupowania, np. host="web01", region="pl". Pola to wartości numeryczne lub string nieindeksowane — same metryki, np. cpu_usage=45.2, memory_free=1024. Kluczowa zasada: tagi mają niską kardynalność (mały zbiór unikalnych wartości), pola mogą być dowolne. Zbyt wiele unikalnych tagów powoduje "high cardinality" i spowalnia zapytania.
Czym jest Flux i dlaczego zastąpił InfluxQL? +
Flux to język zapytań i transformacji danych wprowadzony w InfluxDB 2.0. W odróżnieniu od InfluxQL (SQL-like) Flux jest pipeline-based — dane przepływają przez łańcuch transformacji (from → range → filter → aggregateWindow → yield). Flux pozwala na złożone operacje: join wielu bucketsów, math między seriami, custom functions, HTTP requests w query. InfluxDB 3.0 wraca do SQL i Apache Arrow Flight SQL, ale Flux jest nadal standardem w v2.
Jak połączyć Grafanę z InfluxDB v2? +
W Grafanie: Settings → Data Sources → Add data source → InfluxDB. Ustaw Query Language na Flux (nie InfluxQL). URL: adres InfluxDB (np. http://localhost:8086). W sekcji InfluxDB Details: Organization (nazwa org), Default Bucket (bucket), Token (API token z prawami read). W panelach Grafany piszesz zapytania w Flux, możesz też użyć Grafana InfluxDB datasource query builder dla podstawowych wykresów. Dashboard Telegraf system metrics jest dostępny na Grafana.com (ID: 928) gotowy do importu.

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.