Sobes.tech
Middle

Ako dobre poznáte Loki, natívneho zberača logov od Grafana?

sobes.tech AI

Odpoveď od AI

Loki je dobrej známy. Je to horizontálne škálovateľný, vysoko dostupný systém na agregáciu logov, ktorý vyvíja Grafana Labs. Kľúčovou vlastnosťou je indexovanie nie celého obsahu logov, ale iba metadát (štítkov), čo výrazne znižuje náklady na ukladanie a indexovanie.

Architektúra Loki zahŕňa niekoľko hlavných komponentov:

  • Distributor: Prijíma prichádzajúce logy, validuje ich, sharduje ich a presmerováva do Ingesteru.
  • Ingester: Zodpovedá za zápis logov do dlhodobého úložiska (napríklad S3, GCS, MinIO alebo lokálne úložisko) a cache posledných dát v pamäti pre zrýchlenie dopytov.
  • Querier/Query-Frontend: Spracováva požiadavky na čítanie logov. Querier môže dopytovať dáta ako od Ingesters (pre nedávne logy), tak aj z dlhodobého úložiska. Query-Frontend môže cacheovať výsledky a rozdeľovať zložité dopyty na menšie časti.
  • Compactor: Pre úložiská ako Parquet, zhutňuje malé časti logov do väčších pre optimalizáciu čítania.

Loki používa systém štítkov podobný Prometheus na indexovanie logov. Dopyty sa vykonávajú v jazyku LogQL, ktorý je syntakticky podobný PromQL a umožňuje filtrovať logy podľa štítkov a obsahu, ako aj vykonávať agregácie.

Integrácia s Grafana je veľmi tesná, Loki funguje ako datasource. Logy sú ľahko spájané s metrikami z Prometheus pomocou tých istých štítkov.

Príklady použitia LogQL:

// Vybrať všetky logy z namespace "production"
{namespace="production"}

// Vybrať logy z namespace "production", obsahujúce slovo "error"
{namespace="production"} |= "error"

// Spočítať počet logových záznamov za poslednú hodinu, skupinované podľa kontajnera
sum by (container) (count_over_time({namespace="production"}[1h]))

Loki používame v Kubernetes klastroch s agentmi typu Promtail (daemonset) alebo Fluentd/Fluent Bit output pluginom na zber logov a ich odoslanie do Loki. S3-kompatibilné úložisko sa používa ako backend.

Výhody Loki:

  • Úspornosť vďaka indexovaniu iba metadát.
  • Vysoká škálovateľnosť.
  • Jednoduchosť nasadenia a prevádzky v porovnaní s ťažšími systémami (napríklad ELK).
  • Tenká integrácia s ekosystémom Grafana/Prometheus.

Nevýhody:

  • Vyhľadávanie iba podľa plnotextového zhodu vo vnútri logov bez pokročilých vyhľadávacích možností (ako Elasticsearch).
  • Závislosť od kvality a konzistencie štítkov pre efektívnu indexáciu a vyhľadávanie.

Celkovo je Loki skvelým riešením pre centralizované zber logov, keď je potrebná škálovateľnosť a integrácia s Grafana, a plnotextové vyhľadávanie v každom poli logu nie je kritickým požiadavkom.