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.