Sobes.tech
Middle

Hoe bekend ben je met Loki, de native log-verzamelaar van Grafana?

sobes.tech AI

Antwoord van AI

Ik ben goed bekend met Loki. Het is een horizontaal schaalbaar, hoog beschikbaar, multi-tenant log aggregatiesysteem ontwikkeld door Grafana Labs. De belangrijkste eigenschap is dat het alleen de metadata (labels) indexeert, niet de volledige inhoud van de logs, wat de opslag- en indexeringskosten aanzienlijk verlaagt.

De architectuur van Loki omvat verschillende hoofdcomponenten:

  • Distributor: Ontvangt inkomende logs, valideert ze, verdeelt ze in shards en stuurt ze door naar de Ingester.
  • Ingester: Verantwoordelijk voor het langdurig opslaan van logs (bijvoorbeeld S3, GCS, MinIO of lokale opslag) en het cachen van de laatste gegevens in het geheugen om de query's te versnellen.
  • Querier/Query-Frontend: Verwerkt leesverzoeken voor logs. De Querier kan gegevens opvragen bij zowel Ingesters (voor recente logs) als bij de langdurige opslag. Query-Frontend kan resultaten cachen en complexe query's opsplitsen in kleinere delen.
  • Compactor: Voor opslag zoals Parquet, comprimeert kleine log-chunks tot grotere blokken voor snellere leesprestaties.

Loki gebruikt een labelsysteem vergelijkbaar met Prometheus voor het indexeren van logs. Query's worden uitgevoerd in LogQL, dat een syntaxis heeft die vergelijkbaar is met PromQL en het filteren van logs op labels en inhoud mogelijk maakt, evenals aggregaties.

De integratie met Grafana is zeer nauw, Loki fungeert als datasoure. Logs kunnen gemakkelijk worden gekoppeld aan Prometheus-metrics met behulp van dezelfde labels.

Voorbeelden van LogQL:

// Selecteer alle logs uit de namespace "production"
{namespace="production"}

// Selecteer logs uit de namespace "production" die het woord "error" bevatten
{namespace="production"} |= "error"

// Tel het aantal log entries van het afgelopen uur, gegroepeerd per container
sum by (container) (count_over_time({namespace="production"}[1h]))

Loki wordt gebruikt in Kubernetes-clusters met agents zoals Promtail (daemonset) of Fluentd/Fluent Bit output-plugins voor het verzamelen van logs en het verzenden naar Loki. S3-compatibele opslag wordt gebruikt als backend.

Voordelen van Loki:

  • Kostenbesparend doordat alleen metadata wordt geïndexeerd.
  • Hoge schaalbaarheid.
  • Eenvoudig te implementeren en te beheren in vergelijking met zwaardere systemen (bijvoorbeeld ELK).
  • Nauw geïntegreerd met het Grafana/Prometheus-ecosysteem.

Nadelen:

  • Alleen zoeken op volledige tekst binnen logs, zonder geavanceerde zoekmogelijkheden (zoals Elasticsearch).
  • Afhankelijkheid van de kwaliteit en consistentie van labels voor effectieve indexering en zoeken.

Over het algemeen is Loki een uitstekende oplossing voor gecentraliseerde logverzameling, wanneer schaalbaarheid en integratie met Grafana vereist zijn, en volledige tekstzoekopdrachten per veld niet kritisch zijn.