Vector (par Datadog, open-source) est un pipeline de données observabilité haute-performance écrit en Rust. Il collecte les logs, métriques, et traces depuis n’importe quelle source, les remet en forme via des transformations, et les livrent à n’importe quel sink — tout agnostique aux fournisseurs, pour que vous puissiez changer les backends sans ré-instrumenter. Il utilise typiquement une fraction du CPU et de la mémoire de Logstash ou Fluentd, ce qui importe quand un agent s’exécute sur chaque nœud.
Installation
| Méthode | Commande |
|---|
| Script d’installation | `curl —proto ‘=https’ —tlsv1.2 -sSf https://sh.vector.dev |
| Debian/Ubuntu | .deb depuis les releases Vector |
| macOS (Homebrew) | brew install vectordotdev/brew/vector |
| Docker | docker run -v $PWD/vector.yaml:/etc/vector/vector.yaml timberio/vector:latest-alpine |
| Vérifier | 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 | Objectif |
|---|
sources | D’où viennent les données |
transforms | Parser, filtrer, enrichir, redact, agréger |
sinks | Où vont les données |
inputs | Câble les composants dans un DAG |
Sources courantes
| Source | Collecte |
|---|
file | Fichiers log (tailing) |
journald | Journal systemd |
kubernetes_logs | Logs de pod avec métadonnées k8s |
docker_logs | Logs de conteneur |
http_server | Endpoint de push |
syslog | Syslog sur TCP/UDP |
prometheus_scrape | Scraper les endpoints de métriques |
opentelemetry | Ingestion OTLP |
Sinks courants
| Sink | Envoie à |
|---|
elasticsearch | Elasticsearch/OpenSearch |
loki | Grafana Loki |
clickhouse | ClickHouse |
aws_s3 | S3 (archival) |
prometheus_exporter | Exposer les métriques pour le scraping |
datadog_logs / splunk_hec | Backends fournisseurs |
console | stdout (débogage) |
blackhole | Discarder (tests) |
VRL (Vector Remap Language)
La transformation remap est où se passe la plupart du travail.
# Parser, enrichir, redact, et jeter le bruit
. = parse_json!(.message)
.timestamp = parse_timestamp!(.ts, "%+")
.service = "checkout"
del(.credit_card)
if .level == "debug" { abort }
| Fonction VRL | Objectif |
|---|
parse_json!, parse_regex!, parse_grok! | Structurer le texte brut |
del(.field) | Supprimer un champ (redaction PII) |
to_int!, to_float! | Coercion de type |
abort | Jeter l’événement |
merge, flatten | Remodeler les objets |
| Transformation | Fait |
|---|
remap | Remodelage basé sur VRL (le cheval de trait) |
filter | Garder les événements correspondant une condition |
route | Diviser un flux en branches nommées |
aggregate | Roll up des métriques sur un intervalle |
throttle | Rate-limiter les événements bruyants |
dedupe | Jeter les duplicatas |
sample | Garder un pourcentage des événements |
Opérer Vector
| Commande | Description |
|---|
vector --config vector.yaml | Exécuter avec une config |
vector validate | Vérifier la config avant le déploiement |
vector test | Exécuter les tests unitaires définis dans la config |
vector top | TUI live du throughput par composant |
vector tap <component> | Flux des événements circulant via un composant |
--watch-config | Hot-reload sur changement de config |
# Déboguer ce qu'une transformation émèt réellement
vector tap parse
Fiabilité
| Feature | Note |
|---|
| Disk buffers | Survivre aux redémarrages/backpressure (buffer.type: disk) |
| Acknowledgements | Garanties de livraison end-to-end |
| Adaptive concurrency | Taux de requête sink auto-tuné |
| Health checks | Échouer vite sur les sinks inaccessibles |
Vector vs alternatives
| Aspect | Vector | Fluent Bit | Logstash |
|---|
| Langage | Rust | C | JRuby/JVM |
| Utilisation de ressources | Très basse | Très basse | Haute |
| Langage de transformation | VRL (riche) | Lua/filters | Ruby/grok |
| Types de données | Logs, métriques, traces | Logs, métriques | Logs |
| Idéal pour | Pipelines agnostiques aux fournisseurs | Ultra-light edge agent | Stacks ELK hérités |
Alimenter les sinks comme OpenObserve, Loki, et Elasticsearch ; comparer avec Fluentd.
Ressources