Salta ai contenuti

Vector - Foglio di aiuto della pipeline di dati di osservabilità ad alte prestazioni

Vector - Foglio di aiuto della pipeline di dati di osservabilità ad alte prestazioni

Vector (di Datadog, open-source) è una pipeline di dati di osservabilità ad alte prestazioni scritta in Rust. Raccoglie log, metriche e tracce da qualsiasi fonte, le rimodella attraverso trasformazioni e le consegna a qualsiasi sink — tutto vendor-agnostic, quindi puoi cambiare i backend senza re-instrumentare. Tipicamente utilizza una frazione della CPU e della memoria di Logstash o Fluentd, il che è importante quando un agente gira su ogni nodo.

Installazione

MetodoComando
Script di installazione`curl —proto ‘=https’ —tlsv1.2 -sSf https://sh.vector.dev
Debian/Ubuntu.deb da Vector releases
macOS (Homebrew)brew install vectordotdev/brew/vector
Dockerdocker run -v $PWD/vector.yaml:/etc/vector/vector.yaml timberio/vector:latest-alpine
Verificavector --version

Il modello: Sources → Transforms → Sinks

# 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"]
StageScopo
sourcesDa dove vengono i dati
transformsAnalizza, filtra, arricchisci, cura, aggrega
sinksDove vanno i dati
inputsCollega i componenti in un DAG

Fonti comuni

FonteRaccoglie
fileFile di log (tailing)
journaldJournal di systemd
kubernetes_logsLog dei pod con metadati k8s
docker_logsLog dei contenitori
http_serverEndpoint push
syslogSyslog su TCP/UDP
prometheus_scrapeScrape endpoint metriche
opentelemetryIngestione OTLP

Sink comuni

SinkInvia a
elasticsearchElasticsearch/OpenSearch
lokiGrafana Loki
clickhouseClickHouse
aws_s3S3 (archivio)
prometheus_exporterEsponi metriche per scraping
datadog_logs / splunk_hecBackend fornitori
consolestdout (debug)
blackholeScarta (test)

VRL (Vector Remap Language)

La trasformazione remap è dove avviene la maggior parte del lavoro.

# Analizza, arricchisci, cura e scarta il rumore
. = parse_json!(.message)
.timestamp = parse_timestamp!(.ts, "%+")
.service = "checkout"
del(.credit_card)
if .level == "debug" { abort }
Funzione VRLScopo
parse_json!, parse_regex!, parse_grok!Struttura testo grezzo
del(.field)Rimuovi un campo (redazione PII)
to_int!, to_float!Coercizione di tipo
abortScarta l”evento
merge, flattenRimodella oggetti

Trasformazioni utili

TrasformazioneFa
remapRimodellamento basato su VRL (il principale)
filterMantieni gli eventi che corrispondono a una condizione
routeDividi un flusso in rami denominati
aggregateAccumula metriche in un intervallo
throttleRate-limita gli eventi rumorosi
dedupeScarta duplicati
sampleMantieni una percentuale di eventi

Funzionamento di Vector

ComandoDescrizione
vector --config vector.yamlEsegui con una configurazione
vector validateVerifica la configurazione prima del deployment
vector testEsegui i test unitari definiti nella configurazione
vector topTUI in tempo reale della velocità effettiva per componente
vector tap <component>Flusso degli eventi che scorrono attraverso un componente
--watch-configHot-reload al cambio della configurazione
# Debug di cosa sta effettivamente emettendo una trasformazione
vector tap parse

Affidabilità

FunzionalitàNota
Disk buffersSopravvivi ai riavvi/backpressure (buffer.type: disk)
AcknowledgementsGaranzie di consegna end-to-end
Adaptive concurrencyMessa a punto automatica della velocità di richiesta del sink
Health checksFallisci veloce su sink non raggiungibili

Vector vs Alternative

AspettoVectorFluent BitLogstash
LinguaggioRustCJRuby/JVM
Utilizzo di risorseMolto bassoMolto bassoAlto
Linguaggio di trasformazioneVRL (ricco)Lua/filtriRuby/grok
Tipi di datiLog, metriche, tracceLog, metricheLog
Migliore perPipeline vendor-agnosticAgent ultra-leggero ai marginiStack ELK legacy

Alimenta sink come OpenObserve, Loki e Elasticsearch; confronta con Fluentd.

Risorse