Sobes.tech
Middle

Mennyire ismered a Loki-t, a Grafana natív loggyűjtőjét?

sobes.tech MI

Válasz az MI-től

Jól ismerem a Loki-t. Ez egy horizontálisan skálázható, magas rendelkezésre állású, többbérlős loggyűjtő rendszer, amelyet a Grafana Labs fejlesztett ki. A fő jellemzője, hogy csak a metaadatokat (címkéket) indexeli, nem pedig az összes log tartalmát, ami jelentősen csökkenti a tárolási és indexelési költségeket.

A Loki architektúrája több fő összetevőt tartalmaz:

  • Distributor: Fogadja a bejövő logokat, érvényesíti azokat, shardokra bontja és az Ingesterhez irányítja.
  • Ingester: Feladata a logok hosszú távú tárolása (pl. S3, GCS, MinIO vagy helyi tároló) és a legújabb adatok gyorsítótárazása a memóriában a lekérdezések gyorsítása érdekében.
  • Querier/Query-Frontend: Olvasási kéréseket kezel. A Querier kérhet adatokat mind az Ingesters-től (az új logokhoz), mind a hosszú távú tárolóból. A Query-Frontend cache-elheti az eredményeket és kisebb részekre oszthatja a komplex lekérdezéseket.
  • Compactor: Parquet típusú tárolóknál kicsi log darabokat nagyobb blokkokká tömörít, az olvasás hatékonyságának növelése érdekében.

A Loki egy Prometheus-szerű címkézési rendszert használ a logok indexeléséhez. A lekérdezések LogQL nyelven történnek, amely szintaktikailag hasonló a PromQL-hoz, és lehetővé teszi a logok címkék és tartalom szerinti szűrését, valamint aggregációk végrehajtását.

A Grafana-val való szoros integráció miatt Loki adatforrásként működik. A logokat könnyen összekapcsolhatjuk a Prometheus metrikákkal ugyanazokkal a címkékkel.

LogQL példák:

// Válassza ki az összes logot a "production" namespace-ből
{namespace="production"}

// Válassza ki a "production" namespace-ből azokat a logokat, amelyek tartalmazzák az "error" szót
{namespace="production"} |= "error"

// Számolja meg az utolsó egy órában bejegyzett logokat, csoportosítva konténer szerint
sum by (container) (count_over_time({namespace="production"}[1h]))

A Loki Kubernetes klaszterekben használható Promtail (daemonset) agentekkel vagy Fluentd/Fluent Bit kimeneti pluginokkal a loggyűjtéshez és a Loki-hez való küldéshez. Az S3-kompatibilis tárolás backendként használható.

A Loki előnyei:

  • Csak a metaadatok indexelése miatt költséghatékony.
  • Magas skálázhatóság.
  • Egyszerű telepítés és üzemeltetés a nehezebb rendszerekhez képest (pl. ELK).
  • Szoros integráció a Grafana/Prometheus ökoszisztémával.

Hátrányai:

  • Csak teljes szöveges keresés a logokon belül, fejlett keresési funkciók nélkül (pl. Elasticsearch).
  • A címkék minősége és konzisztenciája befolyásolja a hatékony indexelést és keresést.

Összességében a Loki kiváló megoldás a központosított loggyűjtéshez, ha skálázhatóságra és Grafana integrációra van szükség, és a teljes szöveges keresés minden log mezőben nem kritikus követelmény.