Sobes.tech
Middle

Quanto conosci Loki, il raccoglitore di log nativo di Grafana?

sobes.tech AI

Risposta dell'AI

Conosco bene Loki. È un sistema di aggregazione dei log scalabile orizzontalmente, altamente disponibile e multi-tenant, sviluppato da Grafana Labs. La caratteristica principale è che indicizza solo i metadati (etichette), anziché tutto il contenuto dei log, riducendo significativamente i costi di archiviazione e indicizzazione.

L’architettura di Loki include diversi componenti principali:

  • Distributor: Riceve i log in ingresso, li valida, li sharda e li indirizza a Ingester.
  • Ingester: Si occupa di registrare i log a lungo termine (tipo S3, GCS, MinIO o storage locale) e di mettere in cache i dati recenti in memoria per accelerare le query.
  • Querier/Query-Frontend: Gestisce le richieste di lettura dei log. Il Querier può richiedere dati sia agli Ingesters (per log recenti) sia allo storage a lungo termine. Query-Frontend può mettere in cache i risultati e suddividere query complesse in parti più piccole.
  • Compactor: Per gli storage come Parquet, compattizza piccoli frammenti di log in blocchi più grandi per ottimizzare la lettura.

Loki utilizza un sistema di etichette simile a Prometheus per indicizzare i log. Le query vengono eseguite in LogQL, che ha una sintassi simile a PromQL e permette di filtrare i log per etichette e contenuto, oltre a eseguire aggregazioni.

L’integrazione con Grafana è molto stretta, Loki funge da fonte dati. I log possono essere facilmente collegati alle metriche di Prometheus usando le stesse etichette.

Esempi di utilizzo di LogQL:

// Seleziona tutti i log dal namespace "production"
{namespace="production"}

// Seleziona i log dal namespace "production" che contengono la parola "error"
{namespace="production"} |= "error"

// Conta il numero di voci di log nell’ultima ora, raggruppate per container
sum by (container) (count_over_time({namespace="production"}[1h]))

Loki viene utilizzato nei cluster Kubernetes con agenti come Promtail (daemonset) o plugin di output di Fluentd/Fluent Bit per raccogliere i log e inviarli a Loki. Lo storage compatibile S3 viene usato come backend.

Vantaggi di Loki:

  • Risparmio economico grazie all’indicizzazione solo dei metadati.
  • Alta scalabilità.
  • Facile da distribuire e gestire rispetto a sistemi più pesanti (ad esempio ELK).
  • Integrazione stretta con l’ecosistema Grafana/Prometheus.

Svantaggi:

  • Ricerca solo per corrispondenza di testo completo all’interno dei log, senza funzionalità di ricerca avanzate (come Elasticsearch).
  • Dipendenza dalla qualità e coerenza delle etichette per un’indicizzazione e una ricerca efficaci.

In generale, Loki è una soluzione eccellente per la raccolta centralizzata dei log, quando si necessita di scalabilità e integrazione con Grafana, e la ricerca full-text su ogni campo del log non è una esigenza critica.