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
| Metodo | Comando |
|---|
| 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 |
| Docker | docker run -v $PWD/vector.yaml:/etc/vector/vector.yaml timberio/vector:latest-alpine |
| Verifica | 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 | Scopo |
|---|
sources | Da dove vengono i dati |
transforms | Analizza, filtra, arricchisci, cura, aggrega |
sinks | Dove vanno i dati |
inputs | Collega i componenti in un DAG |
Fonti comuni
| Fonte | Raccoglie |
|---|
file | File di log (tailing) |
journald | Journal di systemd |
kubernetes_logs | Log dei pod con metadati k8s |
docker_logs | Log dei contenitori |
http_server | Endpoint push |
syslog | Syslog su TCP/UDP |
prometheus_scrape | Scrape endpoint metriche |
opentelemetry | Ingestione OTLP |
Sink comuni
| Sink | Invia a |
|---|
elasticsearch | Elasticsearch/OpenSearch |
loki | Grafana Loki |
clickhouse | ClickHouse |
aws_s3 | S3 (archivio) |
prometheus_exporter | Esponi metriche per scraping |
datadog_logs / splunk_hec | Backend fornitori |
console | stdout (debug) |
blackhole | Scarta (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 VRL | Scopo |
|---|
parse_json!, parse_regex!, parse_grok! | Struttura testo grezzo |
del(.field) | Rimuovi un campo (redazione PII) |
to_int!, to_float! | Coercizione di tipo |
abort | Scarta l”evento |
merge, flatten | Rimodella oggetti |
| Trasformazione | Fa |
|---|
remap | Rimodellamento basato su VRL (il principale) |
filter | Mantieni gli eventi che corrispondono a una condizione |
route | Dividi un flusso in rami denominati |
aggregate | Accumula metriche in un intervallo |
throttle | Rate-limita gli eventi rumorosi |
dedupe | Scarta duplicati |
sample | Mantieni una percentuale di eventi |
Funzionamento di Vector
| Comando | Descrizione |
|---|
vector --config vector.yaml | Esegui con una configurazione |
vector validate | Verifica la configurazione prima del deployment |
vector test | Esegui i test unitari definiti nella configurazione |
vector top | TUI in tempo reale della velocità effettiva per componente |
vector tap <component> | Flusso degli eventi che scorrono attraverso un componente |
--watch-config | Hot-reload al cambio della configurazione |
# Debug di cosa sta effettivamente emettendo una trasformazione
vector tap parse
Affidabilità
| Funzionalità | Nota |
|---|
| Disk buffers | Sopravvivi ai riavvi/backpressure (buffer.type: disk) |
| Acknowledgements | Garanzie di consegna end-to-end |
| Adaptive concurrency | Messa a punto automatica della velocità di richiesta del sink |
| Health checks | Fallisci veloce su sink non raggiungibili |
Vector vs Alternative
| Aspetto | Vector | Fluent Bit | Logstash |
|---|
| Linguaggio | Rust | C | JRuby/JVM |
| Utilizzo di risorse | Molto basso | Molto basso | Alto |
| Linguaggio di trasformazione | VRL (ricco) | Lua/filtri | Ruby/grok |
| Tipi di dati | Log, metriche, tracce | Log, metriche | Log |
| Migliore per | Pipeline vendor-agnostic | Agent ultra-leggero ai margini | Stack ELK legacy |
Alimenta sink come OpenObserve, Loki e Elasticsearch; confronta con Fluentd.
Risorse