Ir al contenido

Vector - Canalización de datos de observabilidad de alto rendimiento

Vector - Canalización de datos de observabilidad de alto rendimiento

Vector (por Datadog, código abierto) es una canalización de datos de observabilidad de alto rendimiento escrita en Rust. Recopila registros, métricas y trazas de cualquier fuente, los reformatea mediante transformaciones, y los entrega a cualquier sumidero — todo agnóstico del proveedor, así puedes cambiar backends sin re-instrumentar. Típicamente usa una fracción de CPU y memoria de Logstash o Fluentd, lo que importa cuando un agente se ejecuta en cada nodo.

Instalación

MétodoComando
Script de instalación`curl —proto ‘=https’ —tlsv1.2 -sSf https://sh.vector.dev
Debian/Ubuntu.deb desde versiones de Vector
macOS (Homebrew)brew install vectordotdev/brew/vector
Dockerdocker run -v $PWD/vector.yaml:/etc/vector/vector.yaml timberio/vector:latest-alpine
Verificarvector --version

El modelo: Fuentes → Transformaciones → Sumideros

# 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"]
EtapaPropósito
sourcesDe dónde vienen los datos
transformsAnaliza, filtra, enriquece, redacta, agrega
sinksDónde van los datos
inputsConecta componentes en un DAG

Fuentes comunes

FuenteRecopila
fileArchivos de registro (cola)
journaldDiario de systemd
kubernetes_logsRegistros de pod con metadatos de k8s
docker_logsRegistros de contenedor
http_serverPunto final push
syslogSyslog sobre TCP/UDP
prometheus_scrapeRaspa puntos finales de métricas
opentelemetryIngesta de OTLP

Sumideros comunes

SumideroEnvía a
elasticsearchElasticsearch/OpenSearch
lokiGrafana Loki
clickhouseClickHouse
aws_s3S3 (archivo)
prometheus_exporterExpone métricas para raspar
datadog_logs / splunk_hecBackends de proveedor
consolestdout (depuración)
blackholeDescartar (pruebas)

VRL (lenguaje de remapeo de Vector)

La transformación remap es donde ocurre la mayoría del trabajo.

# Analiza, enriquece, redacta y descarta ruido
. = parse_json!(.message)
.timestamp = parse_timestamp!(.ts, "%+")
.service = "checkout"
del(.credit_card)
if .level == "debug" { abort }
Función VRLPropósito
parse_json!, parse_regex!, parse_grok!Estructura texto sin procesar
del(.field)Elimina un campo (redacción de PII)
to_int!, to_float!Coerción de tipo
abortDescarta el evento
merge, flattenReformula objetos

Transformaciones útiles

TransformaciónHace
remapReformulación basada en VRL (la herramienta de trabajo)
filterMantiene eventos que coinciden con una condición
routeDivide un flujo en ramas nombradas
aggregateAgrega métricas en un intervalo
throttleLimita la velocidad de eventos ruidosos
dedupeDescarta duplicados
sampleMantiene un porcentaje de eventos

Operación de Vector

ComandoDescripción
vector --config vector.yamlEjecuta con una configuración
vector validateVerifica configuración antes de desplegar
vector testEjecuta pruebas unitarias definidas en la configuración
vector topTUI en vivo de rendimiento por componente
vector tap <component>Flujo de eventos que fluyen a través de un componente
--watch-configRecarga en caliente en cambio de configuración
# Depura lo que una transformación realmente emite
vector tap parse

Confiabilidad

CaracterísticaNota
Búferes de discoSobreviven reinicios/contrapresión (buffer.type: disk)
ReconocimientosGarantías de entrega de extremo a extremo
Concurrencia adaptativaAuto-sintoniza la tasa de solicitud del sumidero
Verificaciones de saludFalla rápido en sumideros inalcanzables

Vector vs alternativas

AspectoVectorFluent BitLogstash
IdiomaRustCJRuby/JVM
Uso de recursosMuy bajoMuy bajoAlto
Lenguaje de transformaciónVRL (rico)Lua/filtrosRuby/grok
Tipos de datosRegistros, métricas, trazasRegistros, métricasRegistros
Mejor paraCanalizaciones agnósticas del proveedorAgente ultraligero del bordePilas ELK heredadas

Alimenta sumideros como OpenObserve, Loki y Elasticsearch; compara con Fluentd.

Recursos