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

⚡ W skrócie · 8 min czytania

-   Kompletny przewodnik po Vector: sources/transforms/sinks (TOML), file/syslog/Docker inputs, remap VRL, Elasticsearch/Loki/S3 outputs, benchmarki vs Logstash i Fluentd.
-   Instalacja Vector.
-   Podstawowa konfiguracja - TOML.
-   Zbieranie logów Dockera.
-   VRL - Vector Remap Language.

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<method>\\w+) (?P<path>\\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 "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 "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 "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/)
-   [Jenkins CI/CD na VPS - instalacja i Jenkinsfile pipeline
    
    Jenkins CI/CD na VPS: instalacja przez apt, Jenkinsfile declarative pipeline, integracja GitHub webhooks, Docker agent,…
    
    ](/baza-wiedzy/jenkins-cicd-vps/)
-   [Terraform dla VPS - provisioning Hetzner Cloud i DigitalOcean
    
    Terraform IaC dla VPS: instalacja, providery Hetzner Cloud i DigitalOcean, zasoby, zmienne, outputs, remote state…
    
    ](/baza-wiedzy/terraform-vps-provisioning/)
-   [Nexus Repository Manager - prywatne repozytorium artefaktów
    
    Nexus OSS: instalacja Docker, konfiguracja repozytoriów Maven/npm/PyPI/Docker, proxy zewnętrznych repo, cleanup…
    
    ](/baza-wiedzy/nexus-repository-manager/)
-   [Jaki VPS wybrać?](/jaki-vps-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 10 kwietnia 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/)