config de base

# Random Syslog-formatted logs
[sources.dummy_logs]
type = "demo_logs"
format = "syslog"
interval = 1

# Parse Syslog logs
# See the Vector Remap Language reference for more info: https://vrl.dev
[transforms.parse_logs]
type = "remap"
inputs = ["dummy_logs"]
source = '''
. = parse_syslog!(string!(.message))
'''

# Print parsed logs to stdout
[sinks.print]
type = "console"
inputs = ["parse_logs"]
encoding.codec = "json"

# Vector's GraphQL API (disabled by default)
# Uncomment to try it out with the `vector top` command or
# in your browser at http://localhost:8686
[api]
enabled = true
address = "127.0.0.1:8686"
~/vector-demo/vector-bin/bin/vector -C ~/vector-demo/vector-bin/config/

Simple à configurer....

Real world example with elasticsearch

[sources.dummy_logs]
type = "demo_logs"
format = "json"
interval = 1

[sinks.es]
type = "elasticsearch"
inputs = ["dummy_logs"]
endpoints = [ "http://127.0.0.1:9200" ]
auth.strategy = "basic"
auth.user = "elastic"
auth.password = "changeme"
~/vector-demo/vector-bin/bin/vector -C ~/vector-demo/vector-bin/config-es/

Transformations de données

- Modifier avec VRL : https://vector.dev/docs/reference/vrl/

Langage avec de nombreuses fonctions, très bonne doc avec plein d'exemples
- Filtrer, réduire les champs, agréger plusieurs sources en une

- Rerouter vers des Sinks différents sur base de champs

- Support de lua

- Throttle, limiter le nombre de logs ingestés à la seconde

- Détecte les logs dupliqués pour éviter de l'ingestion doublon

Exemple 1 VRL

REPL (Read–eval–print loop) pour tester ses VRL

vector vrl

Shell pour tester sa configuration VRL sans les complications de debug en prod.

Surveiller ses logs

~/vector-demo/vector-bin/bin/vector top

1. Statistiques

~/vector-demo/vector-bin/bin/vector graph -C ~/vector-demo/vector-bin/config/

2. Graphique de la configuration

~/vector-demo/vector-bin/bin/vector tap

3. Voir en temps réel l'ingestion des logs

Gestion surplus de logs

Buffer :

- En mémoire

- Ou sur le disque

Que faire quand le buffer est full ?

- Bloquer tout nouveau log

- Drop les nouveaux logs

- Rediriger vers un autre buffer (mémoire ou disque)

Arrive lors de plusieurs cas :

- Sink ne répond plus

- Sink pas assez rapide pour ingester les logs

Contrôler Vector à distance

API pour contrôler Vector à distance, principalement pour récupérer des infos en lecture seule (metrics, metadata et topologie).

Dans le futur, reconfigurer complètement Vector depuis l'API.

Production in mind

Nombreux guides pour comment réussir une architecture d'agents Vector prêts pour la production :

- haute disponibilité

- architecture

- hardening

Vector

By Emilien Devos (c2c)