Vector (von Datadog, Open-Source) ist eine High-Performance Observability Data Pipeline in Rust geschrieben. Sie sammelt Logs, Metrics und Traces von jeder Quelle, gestaltet sie durch Transformationen um und liefert sie zu jedem Sink – alles anbietagnositisch, so können Sie Backends wechseln ohne neu zu instrumentieren. Sie verwendet typischerweise einen Bruchteil der CPU und des Speichers von Logstash oder Fluentd, was zählt, wenn ein Agent auf jedem Node läuft.
Installation
| Methode | Befehl |
|---|
| Installationsskript | `curl —proto ‘=https’ —tlsv1.2 -sSf https://sh.vector.dev |
| Debian/Ubuntu | .deb von Vector Releases |
| macOS (Homebrew) | brew install vectordotdev/brew/vector |
| Docker | docker run -v $PWD/vector.yaml:/etc/vector/vector.yaml timberio/vector:latest-alpine |
| Überprüfen | vector --version |
# vector.yaml
sources:
app_logs:
type: file
include: ["/var/log/app/*.log"]
transforms:
parse:
type: remap
inputs: ["app_logs"]
source: |
. = parse_json!(.message)
.env = "production"
del(.password)
sinks:
out:
type: elasticsearch
inputs: ["parse"]
endpoints: ["http://es:9200"]
| Stage | Zweck |
|---|
sources | Woher Daten kommen |
transforms | Parse, Filter, Bereichern, Redigieren, Aggregieren |
sinks | Wohin Daten gehen |
inputs | Verdrahtet Komponenten in einen DAG |
Häufige Quellen
| Quelle | Sammelt |
|---|
file | Log-Dateien (Tailing) |
journald | Systemd Journal |
kubernetes_logs | Pod-Logs mit K8s-Metadaten |
docker_logs | Container-Logs |
http_server | Push-Endpunkt |
syslog | Syslog über TCP/UDP |
prometheus_scrape | Scrapen Metrics-Endpunkte |
opentelemetry | OTLP-Aufnahme |
Häufige Sinks
| Sink | Sendet zu |
|---|
elasticsearch | Elasticsearch/OpenSearch |
loki | Grafana Loki |
clickhouse | ClickHouse |
aws_s3 | S3 (Archivierung) |
prometheus_exporter | Exponieren Sie Metrics zum Scrapen |
datadog_logs / splunk_hec | Vendor Backends |
console | Stdout (Debugging) |
blackhole | Verwerfen (Testing) |
VRL (Vector Remap Language)
Die remap-Transformation ist wo die meiste Arbeit stattfindet.
# Parse, bereichern, redigieren und drop noise
. = parse_json!(.message)
.timestamp = parse_timestamp!(.ts, "%+")
.service = "checkout"
del(.credit_card)
if .level == "debug" { abort }
| VRL Funktion | Zweck |
|---|
parse_json!, parse_regex!, parse_grok! | Strukturieren Sie rohen Text |
del(.field) | Entfernen Sie ein Feld (PII-Redigierung) |
to_int!, to_float! | Typ-Konvertierung |
abort | Fallen Sie das Event |
merge, flatten | Reshape-Objekte |
| Transformation | Tut |
|---|
remap | VRL-basierte Umgestaltung (das Workhorse) |
filter | Behalten Sie Events, die eine Bedingung erfüllen |
route | Teilen Sie einen Stream in benannte Branches |
aggregate | Rollen Sie Metrics über ein Intervall auf |
throttle | Rate-limit laute Events |
dedupe | Drop Duplikate |
sample | Behalten Sie einen Prozentsatz von Events |
Vector operieren
| Befehl | Beschreibung |
|---|
vector --config vector.yaml | Führen Sie mit einer Konfiguration aus |
vector validate | Überprüfen Sie Config vor Deployment |
vector test | Führen Sie Unit Tests aus, die in der Config definiert sind |
vector top | Live TUI des Durchsatzes pro Komponente |
vector tap <component> | Stream Events, die durch eine Komponente fließen |
--watch-config | Hot-Reload bei Config-Änderung |
# Debug, was eine Transformation tatsächlich ausgibt
vector tap parse
Zuverlässigkeit
| Feature | Notiz |
|---|
| Disk Buffers | Überleben von Neustarts/Backpressure (buffer.type: disk) |
| Acknowledgements | End-to-End-Liefergarantien |
| Adaptive Concurrency | Auto-Tunes Sink-Request-Rate |
| Health Checks | Fail schnell bei unerreichbaren Sinks |
Vector vs Alternativen
| Aspekt | Vector | Fluent Bit | Logstash |
|---|
| Sprache | Rust | C | JRuby/JVM |
| Ressourcennutzung | Sehr niedrig | Sehr niedrig | Hoch |
| Transform Sprache | VRL (reich) | Lua/Filter | Ruby/Grok |
| Datentypen | Logs, Metrics, Traces | Logs, Metrics | Logs |
| Am besten für | Anbieteragnositische Pipelines | Ultra-leichter Edge-Agent | Legacy ELK Stacks |
Füttert Sinks wie OpenObserve, Loki und Elasticsearch; vergleichen Sie mit Fluentd.
Ressourcen