Vector - Pipeline de Dados de Observabilidade de Alto Desempenho - Guia de Referência
Vector (por Datadog, código aberto) é um pipeline de dados de observabilidade de alto desempenho escrito em Rust. Ele coleta logs, métricas e traces de qualquer origem, os reformula através de transformações e os entrega a qualquer destino — tudo agnóstico de fornecedor, então você pode trocar backends sem re-instrumentar. Tipicamente usa uma fração do CPU e memória de Logstash ou Fluentd, o que importa quando um agente roda em todo nó.
Instalação
| Método | Comando |
|---|
| Script de instalação | `curl —proto ‘=https’ —tlsv1.2 -sSf https://sh.vector.dev |
| Debian/Ubuntu | .deb de releases Vector |
| macOS (Homebrew) | brew install vectordotdev/brew/vector |
| Docker | docker run -v $PWD/vector.yaml:/etc/vector/vector.yaml timberio/vector:latest-alpine |
| Verificar | 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"]
| Estágio | Propósito |
|---|
sources | De onde dados vêm |
transforms | Parse, filtro, enriquecimento, redação, agregação |
sinks | Para onde dados vão |
inputs | Fios de componentes em um DAG |
Origens Comuns
| Origem | Coleta |
|---|
file | Arquivos de log (tailing) |
journald | Diário systemd |
kubernetes_logs | Logs de pod com metadados k8s |
docker_logs | Logs de container |
http_server | Endpoint de push |
syslog | Syslog sobre TCP/UDP |
prometheus_scrape | Scrape de endpoints de métricas |
opentelemetry | Ingestão OTLP |
Destinos Comuns
| Destino | Envia para |
|---|
elasticsearch | Elasticsearch/OpenSearch |
loki | Grafana Loki |
clickhouse | ClickHouse |
aws_s3 | S3 (arquivamento) |
prometheus_exporter | Expor métricas para scrape |
datadog_logs / splunk_hec | Backends de fornecedor |
console | stdout (debug) |
blackhole | Descartar (testes) |
VRL (Vector Remap Language)
A transformação remap é onde a maioria do trabalho acontece.
# Parse, enriquecimento, redação e drop de ruído
. = parse_json!(.message)
.timestamp = parse_timestamp!(.ts, "%+")
.service = "checkout"
del(.credit_card)
if .level == "debug" { abort }
| Função VRL | Propósito |
|---|
parse_json!, parse_regex!, parse_grok! | Estruturar texto bruto |
del(.field) | Remover um campo (redação de PII) |
to_int!, to_float! | Coerção de tipo |
abort | Descartar o evento |
merge, flatten | Reformatar objetos |
| Transformação | Faz |
|---|
remap | Reformulação baseada em VRL (a workhorse) |
filter | Manter eventos correspondendo a uma condição |
route | Dividir um stream em ramos nomeados |
aggregate | Agregar métricas ao longo de um intervalo |
throttle | Taxa-limite de eventos ruidosos |
dedupe | Descartar duplicados |
sample | Manter uma porcentagem de eventos |
Operando Vector
| Comando | Descrição |
|---|
vector --config vector.yaml | Executar com uma config |
vector validate | Verificar config antes de implantar |
vector test | Executar testes unitários definidos na config |
vector top | TUI ao vivo de throughput por componente |
vector tap <component> | Stream de eventos fluindo através de um componente |
--watch-config | Hot-reload em mudança de config |
# Debug o que uma transformação realmente está emitindo
vector tap parse
Confiabilidade
| Recurso | Nota |
|---|
| Buffers de disco | Sobreviver restarts/backpressure (buffer.type: disk) |
| Confirmações | Garantias de entrega fim-a-fim |
| Concorrência adaptativa | Auto-tune da taxa de requisição de sink |
| Verificações de saúde | Falhar rápido em sinks inalcançáveis |
Vector vs Alternativas
| Aspecto | Vector | Fluent Bit | Logstash |
|---|
| Linguagem | Rust | C | JRuby/JVM |
| Uso de recurso | Muito baixo | Muito baixo | Alto |
| Linguagem de transformação | VRL (rico) | Lua/filtros | Ruby/grok |
| Tipos de dados | Logs, métricas, traces | Logs, métricas | Logs |
| Melhor para | Pipelines agnósticos de fornecedor | Agente ultra-leve edge | Stacks ELK legadas |
Alimenta destinos como OpenObserve, Loki e Elasticsearch; compare com Fluentd.
Recursos