Een loggingsetup die schaalbaar, veilig en logisch is in de 21e eeuw. Dat is ons doel met ons krachtige trio:

  • Fluentd: Het Zwitserse zakmes van logverzameling (oeps, ik bedoel het multitool van logverzameling – laten we de cliché-politie niet boos maken)
  • Vector: De nieuwkomer die Fluentd het vuur aan de schenen legt
  • Loki: Grafana's antwoord op "Wat als logs net zo cool waren als metrics?"

Stap 1: Afscheid nemen van Syslog (Niet huilen, het is voor het beste)

Allereerst moeten we de Syslog-pleister eraf trekken. Hier is een snelle checklist om ervoor te zorgen dat je klaar bent voor de grote overstap:

  • Inventariseer al je Syslog-bronnen
  • Identificeer eventuele aangepaste parsing- of routeringsregels
  • Maak een back-up van je huidige Syslog-configuratie (voor de zekerheid)
  • Informeer je team (en misschien wat pizza bestellen – veranderingen gaan beter met eten)

Stap 2: Fluentd instellen - De alleskunner van logs

Fluentd is onze eerste stop op dit logavontuur. Hier is waarom het geweldig is:

  • Ondersteunt een breed scala aan invoer- en uitvoerplug-ins
  • Behandelt gestructureerde en ongestructureerde data als een pro
  • Lichtgewicht en geschreven in C (met Ruby voor plug-ins)

Laten we Fluentd installeren en starten:


# Installeer Fluentd (ervan uitgaande dat je op een Debian-gebaseerd systeem zit)
curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-focal-td-agent4.sh | sh

# Start de Fluentd-service
sudo systemctl start td-agent

Nu gaan we Fluentd configureren om logs van onze voormalige Syslog-clients te accepteren:



  @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
  

Deze configuratie vertelt Fluentd om te luisteren naar Syslog-berichten op poort 5140 en ze door te sturen naar onze Loki-server. Simpel, toch?

Stap 3: Vector - De nieuwe sheriff in de stad

Hoewel Fluentd geweldig is, is Vector de coole nieuwkomer die de aandacht trekt. Het is razendsnel, gebruikt minder CPU en geheugen, en heeft een configuratie die je niet gek maakt. Laten we Vector aan onze mix toevoegen:


# Installeer Vector
curl --proto '=https' --tlsv1.2 -sSf https://sh.vector.dev | sh

# Start Vector
sudo systemctl start vector

Nu gaan we Vector configureren om samen te werken met 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"}

Deze configuratie vertelt Vector om Syslog-invoer te accepteren, te parseren en vervolgens naar Loki te verzenden. Het is als Fluentd, maar met een vleugje "Ik heb net vijf espresso's gedronken" energie.

Stap 4: Loki - Waar logs sterren worden

Loki is het laatste stuk van onze logpuzzel. Het is als Prometheus, maar voor logs, en het werkt geweldig samen met Grafana. Laten we het instellen:


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

Deze configuratie stelt Loki in staat om logs van zowel Fluentd als Vector te accepteren. Het is als de coole club waar alle logs samenkomen.

De Grote Finale: Alles Samenbrengen

Nu we alle stukken op hun plaats hebben, laten we eens kijken hoe deze prachtige loggingsymfonie werkt:

  1. Je applicaties sturen logs naar Fluentd of Vector (of beide, we oordelen niet)
  2. Fluentd en Vector parseren, transformeren en sturen de logs door naar Loki
  3. Loki slaat de logs efficiënt op en maakt ze beschikbaar voor query's
  4. Je gebruikt Grafana om prachtige dashboards en waarschuwingen te maken op basis van je logs

En zo ben je van het log-equivalent van een klaptelefoon naar een state-of-the-art smartphone gegaan. Je logs zijn nu gestructureerd, doorzoekbaar en echt nuttig. Plus, je kunt je collega's imponeren met zinnen als "logaggregatie" en "observability pipeline".

Conclusie: Loggen naar de Toekomst

Overstappen van Syslog naar een moderne, gecentraliseerde logoplossing met Fluentd, Vector en Loki lijkt misschien een ontmoedigende taak, maar de voordelen zijn het waard. Je krijgt betere prestaties, verbeterde schaalbaarheid en de mogelijkheid om die speld in de loghooiberg te vinden wanneer je hem nodig hebt.

Onthoud, de reis van duizend logs begint met een enkel configuratiebestand. Dus ga ervoor, dappere logger, en moge je logs altijd in je voordeel zijn!

"Het enige dat erger is dan geen logs hebben, is logs hebben die je niet kunt begrijpen." - Elke DevOps Engineer Ooit

Nu, als je me wilt excuseren, ik heb wat logs te parseren. Gelukkig loggen!