 Autor: [Robert Zasilny](/autorzy/robert-zasilny) Ekspert bezpieczeństwa i compliance · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Vector — pipeline do agregacji logów

# Vector — wydajny pipeline do agregacji logów na VPS

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS

Logstash pożera GB RAMu, Fluentd jest wolny pod obciążeniem — Vector to alternatywa napisana w Rust, która przetwarza miliony zdarzeń na sekundę przy minimalnym zużyciu zasobów. Jeden agent zbiera logi, metryki i traces, transformuje je przez VRL i rozsyła do wielu sinków. Oto kompletny przewodnik.

## Instalacja Vector

\# Ubuntu/Debian — oficjalny pakiet
curl -1sLf 'https://repositories.timber.io/public/vector/cfg/setup/bash.deb.sh' | bash
apt install vector

# Weryfikacja
vector --version
systemctl status vector

# Konfiguracja domyślna
cat /etc/vector/vector.toml

## Podstawowa konfiguracja — TOML

Plik `/etc/vector/vector.toml`. Każdy komponent ma typ (`type`) i opcjonalne `inputs` wskazujące na poprzednie komponenty:

\# /etc/vector/vector.toml

# 1. SOURCE — czytaj logi Nginx
\[sources.nginx\_logs\]
type = "file"
include = \["/var/log/nginx/access.log", "/var/log/nginx/error.log"\]
read\_from = "end"
multiline.condition\_pattern = '^\[0-9\]'
multiline.mode = "halt\_before"
multiline.start\_pattern = '^\[0-9\]'
multiline.timeout\_ms = 1000

# 2. TRANSFORM — parsuj format access.log
\[transforms.parse\_nginx\]
type = "remap"
inputs = \["nginx\_logs"\]
source = '''
  # Parsuj Combined Log Format
  . = parse\_common\_log!(.message)
  .host = get\_hostname!()
  .service = "nginx"
'''

# 3. TRANSFORM — filtruj healthchecks
\[transforms.filter\_health\]
type = "filter"
inputs = \["parse\_nginx"\]
condition = '.request != "GET /health HTTP/1.1"'

# 4. SINK — wyślij do Loki
\[sinks.loki\_out\]
type = "loki"
inputs = \["filter\_health"\]
endpoint = "http://loki:3100"
encoding.codec = "json"

\[sinks.loki\_out.labels\]
host = "{{ host }}"
service = "{{ service }}"
level = "{{ level }}"

## Zbieranie logów Dockera

\[sources.docker\]
type = "docker\_logs"
docker\_host = "unix:///var/run/docker.sock"
# Opcjonalnie filtruj kontenery:
# include\_labels = \["com.docker.compose.project=myapp"\]
# exclude\_containers = \["vector"\]

\[transforms.enrich\_docker\]
type = "remap"
inputs = \["docker"\]
source = '''
  # Metadane kontenera są automatycznie w zdarzeniu
  .host = get\_hostname!()
  # Spróbuj sparsować JSON w message
  parsed, err = parse\_json(.message)
  if err == null {
    . = merge(., parsed)
  }
'''

\[sinks.loki\_docker\]
type = "loki"
inputs = \["enrich\_docker"\]
endpoint = "http://loki:3100"
encoding.codec = "json"

\[sinks.loki\_docker.labels\]
host = "{{ host }}"
container = "{{ container\_name }}"
image = "{{ image }}"

## VRL — Vector Remap Language

VRL to domenowy język do transformacji zdarzeń. Przykłady najczęściej używanych operacji:

\# VRL — przykłady transformacji

# Parsowanie JSON
.parsed = parse\_json!(.message)

# Parsowanie logu Apache/Nginx combined format
. = parse\_common\_log!(.message)

# Ekstrakcja regex — wyciągnij ID z URL
.user\_id = parse\_regex!(.path, r'/users/(?P<id>\\d+)').id

# Ustawianie poziomu logu na podstawie status\_code
.level = if .status >= 500 {
  "error"
} else if .status >= 400 {
  "warn"
} else {
  "info"
}

# Usuwanie pola (prywatne dane)
del(.user\_email)

# Zmiana nazwy pola
.duration\_ms = del(.response\_time)

# Dodanie timestampa jeśli brak
if !exists(.timestamp) {
  .timestamp = now()
}

## Multi-output — Loki + S3 + Elasticsearch

Vector obsługuje wiele sinków jednocześnie — możesz wysyłać te same logi do wielu miejsc:

\# Wyślij do Loki (hot storage — ostatnie 7 dni)
\[sinks.loki\]
type = "loki"
inputs = \["parse\_nginx"\]
endpoint = "http://loki:3100"
encoding.codec = "json"

\[sinks.loki.labels\]
host = "{{ host }}"
service = "nginx"

# Archiwum w S3 (cold storage — długoterminowe)
\[sinks.s3\_archive\]
type = "aws\_s3"
inputs = \["parse\_nginx"\]
bucket = "logs-archive"
region = "eu-central-1"
key\_prefix = "nginx/%Y/%m/%d/"
encoding.codec = "ndjson"
compression = "gzip"
batch.max\_bytes = 10000000   # 10 MB per plik

## Benchmarki — Vector vs Logstash vs Fluentd

Metrika

Vector

Logstash

Fluentd

Przepustowość (events/s)

~5 000 000

~100 000

~800 000

RAM (idle)

~20 MB

~512 MB (JVM)

~50 MB

CPU (pod obciążeniem)

Najniższe

Najwyższe

Średnie

Język implementacji

Rust

Java/JRuby

Ruby/C

Latency przy przetwarzaniu

<1ms

10-100ms

5-50ms

**Uwaga:** Benchmarki mogą różnić się w zależności od środowiska i konfiguracji. Vector jest szczególnie wydajny przy prostych transformacjach. Logstash ma bogatszy ekosystem pluginów (np. dla Beats).

## Testowanie i walidacja konfiguracji

\# Waliduj konfigurację bez uruchamiania
vector validate /etc/vector/vector.toml

# Testuj pipeline na przykładowych danych
echo '127.0.0.1 - - \[10/Apr/2026:10:00:00 +0200\] "GET /api HTTP/1.1" 200 1234' | \\
  vector --config /etc/vector/vector.toml

# Podgląd zdarzeń w czasie rzeczywistym (tap)
vector tap --outputs parse\_nginx

# Statystyki wewnętrzne
vector top

## Najczęstsze pytania

Czym jest Vector i czym różni się od Logstash i Fluentd? +

Vector to agent do zbierania, transformowania i wysyłania logów/metryk/traces, napisany w Rust. Jest wielokrotnie szybszy od Logstash (JVM, wysokie zużycie RAM) i Fluentd (Ruby). Vector ma natywny VRL (Vector Remap Language) do transformacji danych — bardziej wydajny niż Grok w Logstash. Obsługuje unified telemetry (logi, metryki i traces w jednym agencie). Idealny dla środowisk VPS gdzie zasoby są ograniczone.

Jakie są główne komponenty konfiguracji Vector? +

Vector konfiguruje się przez TOML (lub YAML/JSON). Trzy rodzaje komponentów: (1) Sources — skąd zbierać dane: file, syslog, docker\_logs, stdin, socket, kafka, http. (2) Transforms — jak przekształcać: remap (VRL), filter, aggregate, route, throttle, aws\_cloudwatch\_logs\_subscription\_parser. (3) Sinks — dokąd wysyłać: elasticsearch, loki, s3, kafka, prometheus\_remote\_write, clickhouse, http. Komponenty łączy się przez pola inputs.

Co to jest VRL (Vector Remap Language)? +

VRL to domain-specific language do transformowania zdarzeń w Vector. Podobny do jq dla JSON, ale zaprojektowany dla logów. Operacje: parsowanie (.parsed = parse\_json!(.message)), ekstrakcja regexa (.method, .path = parse\_regex!(.message, /^(?P&lt;method&gt;\\w+) (?P&lt;path&gt;\\S+)/)), dodawanie pól, usuwanie, rename, typ casting. VRL jest kompilowany do bytecodu — bardzo szybki, błędy typów wykrywane w czasie kompilacji.

Jak zbierać logi z kontenerów Dockera przez Vector? +

Source docker\_logs zbiera logi ze wszystkich kontenerów przez Docker Socket (/var/run/docker.sock). Każde zdarzenie ma automatyczne metadane: container\_name, container\_id, image, label.\*. Możesz filtrować po labels przez include\_labels lub exclude\_containers. Zalecane: uruchom Vector jako kontener z mounted docker.sock, opcjonalnie jako sidecar w compose. Vector wysyła do Loki z labelami container i image dla wygodnego przeszukiwania.

Jak skonfigurować Vector do wysyłania logów do Grafana Loki? +

Sink loki w Vector wymaga endpoint (np. http://loki:3100) i labels — obowiązkowe dla Loki. Labels MUSZĄ być statyczne lub z pola zdarzenia przez składnię &#123;&#123; .container\_name &#125;&#125;. Uwaga: Loki nie przyjmuje zbyt wielu unikalnych kombinacji labelowych (cardinality limit). Zalecane labels: host, service, level. Resztę metadanych umieść w structured\_metadata (Loki 3.0+) lub body logów.

## 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 transferem — idealny do centralnego zbierania logów z wielu serwerów

Log Aggregation

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

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

Mikrus

Tani VPS do testowania Vector pipeline z Loki lub Elasticsearch

Dev VPS

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

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

CyberFolks

VPS z SSD NVMe — niskie opóźnienia I/O przy przetwarzaniu logów

VPS NVMe

[Aktywuj rabat →](/out/cyberfolks)

#Reklama · link partnerski

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

## Powiązane strony

-   [Grafana Loki — agregacja logów z Promtail i LogQL](/baza-wiedzy/loki-grafana-logi)
-   [ELK Stack — centralne logowanie dla serwera](/baza-wiedzy/elk-stack-logi-serwera)
-   [Fluent Bit — lekki agent do forwarding logów](/baza-wiedzy/fluent-bit-log-forwarding)
-   [Wszystkie artykuły](/baza-wiedzy/)