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étodo | Comando |
|---|
| 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 |
| 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"]
| Etapa | Propósito |
|---|
sources | De dónde vienen los datos |
transforms | Analiza, filtra, enriquece, redacta, agrega |
sinks | Dónde van los datos |
inputs | Conecta componentes en un DAG |
Fuentes comunes
| Fuente | Recopila |
|---|
file | Archivos de registro (cola) |
journald | Diario de systemd |
kubernetes_logs | Registros de pod con metadatos de k8s |
docker_logs | Registros de contenedor |
http_server | Punto final push |
syslog | Syslog sobre TCP/UDP |
prometheus_scrape | Raspa puntos finales de métricas |
opentelemetry | Ingesta de OTLP |
Sumideros comunes
| Sumidero | Envía a |
|---|
elasticsearch | Elasticsearch/OpenSearch |
loki | Grafana Loki |
clickhouse | ClickHouse |
aws_s3 | S3 (archivo) |
prometheus_exporter | Expone métricas para raspar |
datadog_logs / splunk_hec | Backends de proveedor |
console | stdout (depuración) |
blackhole | Descartar (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 VRL | Propó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 |
abort | Descarta el evento |
merge, flatten | Reformula objetos |
| Transformación | Hace |
|---|
remap | Reformulación basada en VRL (la herramienta de trabajo) |
filter | Mantiene eventos que coinciden con una condición |
route | Divide un flujo en ramas nombradas |
aggregate | Agrega métricas en un intervalo |
throttle | Limita la velocidad de eventos ruidosos |
dedupe | Descarta duplicados |
sample | Mantiene un porcentaje de eventos |
Operación de Vector
| Comando | Descripción |
|---|
vector --config vector.yaml | Ejecuta con una configuración |
vector validate | Verifica configuración antes de desplegar |
vector test | Ejecuta pruebas unitarias definidas en la configuración |
vector top | TUI en vivo de rendimiento por componente |
vector tap <component> | Flujo de eventos que fluyen a través de un componente |
--watch-config | Recarga en caliente en cambio de configuración |
# Depura lo que una transformación realmente emite
vector tap parse
Confiabilidad
| Característica | Nota |
|---|
| Búferes de disco | Sobreviven reinicios/contrapresión (buffer.type: disk) |
| Reconocimientos | Garantías de entrega de extremo a extremo |
| Concurrencia adaptativa | Auto-sintoniza la tasa de solicitud del sumidero |
| Verificaciones de salud | Falla rápido en sumideros inalcanzables |
Vector vs alternativas
| Aspecto | Vector | Fluent Bit | Logstash |
|---|
| Idioma | Rust | C | JRuby/JVM |
| Uso de recursos | Muy bajo | Muy bajo | Alto |
| Lenguaje de transformación | VRL (rico) | Lua/filtros | Ruby/grok |
| Tipos de datos | Registros, métricas, trazas | Registros, métricas | Registros |
| Mejor para | Canalizaciones agnósticas del proveedor | Agente ultraligero del borde | Pilas ELK heredadas |
Alimenta sumideros como OpenObserve, Loki y Elasticsearch; compara con Fluentd.
Recursos