Configurer un système de journalisation évolutif, sécurisé et pertinent pour le 21ème siècle. C'est notre objectif avec notre trio de choc :
- Fluentd : Le couteau suisse de la collecte de journaux (oups, je voulais dire l'outil multifonction de la collecte de journaux – ne fâchons pas la police des clichés)
- Vector : Le petit nouveau qui donne du fil à retordre à Fluentd
- Loki : La réponse de Grafana à "Et si les journaux étaient aussi cool que les métriques ?"
Étape 1 : Dire adieu à Syslog (Ne pleurez pas, c'est pour le mieux)
Pour commencer, nous devons nous débarrasser de Syslog. Voici une liste rapide pour vous assurer que vous êtes prêt pour le grand changement :
- Inventoriez toutes vos sources Syslog
- Identifiez les règles de parsing ou de routage personnalisées
- Sauvegardez votre configuration Syslog actuelle (au cas où)
- Informez votre équipe (et peut-être commandez des pizzas – les changements passent mieux avec de la nourriture)
Étape 2 : Configurer Fluentd - Le maître de tous les journaux
Fluentd est notre premier arrêt dans cette aventure de journalisation. Voici pourquoi il est génial :
- Prend en charge une grande variété de plugins d'entrée et de sortie
- Gère les données structurées et non structurées comme un pro
- Léger et écrit en C (avec Ruby pour les plugins)
Mettons Fluentd en marche :
# Installer Fluentd (en supposant que vous êtes sur un système basé sur Debian)
curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-focal-td-agent4.sh | sh
# Démarrer le service Fluentd
sudo systemctl start td-agent
Maintenant, configurons Fluentd pour accepter les journaux de nos anciens clients Syslog :
@type syslog
port 5140
tag system
@type forward
send_timeout 60s
recover_wait 10s
hard_timeout 60s
name loki_server
host 10.0.0.1
port 24224
Cette configuration indique à Fluentd d'écouter les messages Syslog sur le port 5140 et de les transférer à notre serveur Loki. Simple, non ?
Étape 3 : Vector - Le nouveau shérif en ville
Bien que Fluentd soit excellent, Vector est le petit nouveau qui attire l'attention. Il est ultra-rapide, utilise moins de CPU et de mémoire, et sa configuration ne vous donnera pas envie de vous arracher les cheveux. Ajoutons Vector à notre mélange :
# Installer Vector
curl --proto '=https' --tlsv1.2 -sSf https://sh.vector.dev | sh
# Démarrer Vector
sudo systemctl start vector
Maintenant, configurons Vector pour fonctionner avec Fluentd :
[sources.syslog]
type = "syslog"
address = "0.0.0.0:514"
mode = "tcp"
[transforms.parse_syslog]
type = "remap"
inputs = ["syslog"]
source = '''
. = parse_syslog!(.message)
'''
[sinks.loki]
type = "loki"
inputs = ["parse_syslog"]
endpoint = "http://10.0.0.1:3100"
encoding.codec = "json"
labels = {job = "vector_logs"}
Cette configuration indique à Vector d'accepter l'entrée Syslog, de la parser, puis de l'envoyer à Loki. C'est comme Fluentd, mais avec une énergie de "j'ai bu cinq expressos".
Étape 4 : Loki - Là où les journaux deviennent des stars
Loki est la dernière pièce de notre puzzle de journalisation. C'est comme Prometheus, mais pour les journaux, et il fonctionne incroyablement bien avec Grafana. Configurons-le :
auth_enabled: false
server:
http_listen_port: 3100
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s
schema_config:
configs:
- from: 2020-05-15
store: boltdb
object_store: filesystem
schema: v11
index:
prefix: index_
period: 168h
storage_config:
boltdb:
directory: /tmp/loki/index
filesystem:
directory: /tmp/loki/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
Cette configuration permet à Loki d'accepter les journaux de Fluentd et Vector. C'est comme le club cool où tous les journaux se retrouvent.
Le Grand Final : Tout assembler
Maintenant que nous avons toutes les pièces en place, voyons comment fonctionne cette belle symphonie de journalisation :
- Vos applications envoient des journaux à Fluentd ou Vector (ou les deux, nous ne jugeons pas)
- Fluentd et Vector analysent, transforment et transfèrent les journaux à Loki
- Loki stocke les journaux efficacement et les rend disponibles pour les requêtes
- Vous utilisez Grafana pour créer de beaux tableaux de bord et alertes basés sur vos journaux
Et voilà, vous êtes passé de l'équivalent journal d'un téléphone à clapet à un smartphone dernier cri. Vos journaux sont maintenant structurés, consultables et vraiment utiles. De plus, vous pouvez impressionner vos collègues avec des phrases comme "agrégation de journaux" et "pipeline d'observabilité".
Conclusion : Se connecter au futur
Migrer de Syslog vers une solution de journalisation moderne et centralisée avec Fluentd, Vector et Loki peut sembler une tâche ardue, mais les avantages en valent la peine. Vous aurez de meilleures performances, une évolutivité améliorée et la capacité de réellement trouver cette aiguille dans la botte de foin des journaux quand vous en aurez besoin.
Rappelez-vous, le voyage de mille journaux commence par un seul fichier de configuration. Alors allez-y, courageux journaliseur, et que vos journaux soient toujours en votre faveur !
"La seule chose pire que de ne pas avoir de journaux, c'est d'avoir des journaux que vous ne pouvez pas comprendre." - Tout ingénieur DevOps jamais
Maintenant, si vous voulez bien m'excuser, j'ai des journaux à analyser. Bonne journalisation !