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 :

  1. Vos applications envoient des journaux à Fluentd ou Vector (ou les deux, nous ne jugeons pas)
  2. Fluentd et Vector analysent, transforment et transfèrent les journaux à Loki
  3. Loki stocke les journaux efficacement et les rend disponibles pour les requêtes
  4. 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 !