Jak dobrze znasz Loki, natywny zbieracz logów od Grafana?
sobes.tech AI
Odpowiedź od AI
Dobrze znam Loki. Jest to skalowalny poziomo, wysoce dostępny, wielodzierżawczy system agregacji logów, opracowany przez Grafana Labs. Kluczową cechą jest indeksowanie tylko metadanych (etykiet), a nie całej zawartości logów, co znacznie obniża koszty przechowywania i indeksowania.
Architektura Loki obejmuje kilka głównych komponentów:
- Distributor: Przyjmuje nadchodzące logi, weryfikuje je, dzieli na shard i przekierowuje do Ingester.
- Ingester: Odpowiada za zapis logów na dłuższy czas (np. S3, GCS, MinIO lub lokalne przechowywanie) oraz cache’uje najnowsze dane w pamięci, aby przyspieszyć zapytania.
- Querier/Query-Frontend: Obsługuje zapytania o odczyt logów. Querier może żądać danych zarówno od Ingesters (dla nowych logów), jak i z długoterminowego magazynu. Query-Frontend może cache’ować wyniki i dzielić złożone zapytania na mniejsze.
- Compactor: Dla magazynów typu Parquet, zagęszcza małe fragmenty logów w większe bloki, aby zoptymalizować odczyt.
Loki używa systemu etykiet podobnego do Prometheus do indeksowania logów. Zapytania są wykonywane w LogQL, który ma składnię podobną do PromQL i pozwala na filtrowanie logów po etykietach i zawartości, a także wykonywanie agregacji.
Integracja z Grafana jest bardzo ścisła, Loki działa jako źródło danych. Logi można łatwo powiązać z metrykami Prometheus za pomocą tych samych etykiet.
Przykłady użycia LogQL:
// Wybierz wszystkie logi z namespace "production"
{namespace="production"}
// Wybierz logi z namespace "production", zawierające słowo "error"
{namespace="production"} |= "error"
// Policz liczbę wpisów logów z ostatniej godziny, pogrupowanych według kontenera
sum by (container) (count_over_time({namespace="production"}[1h]))
Loki jest używany w klastrach Kubernetes z agentami typu Promtail (daemonset) lub wtyczkami wyjściowymi Fluentd/Fluent Bit do zbierania logów i wysyłania ich do Loki. Używany jest kompatybilny z S3 backend.
Zalety Loki:
- Oszczędność dzięki indeksowaniu tylko metadanych.
- Wysoka skalowalność.
- Łatwość wdrożenia i obsługi w porównaniu do cięższych systemów (np. ELK).
- Ścisła integracja z ekosystemem Grafana/Prometheus.
Wady:
- Wyszukiwanie tylko na podstawie pełnotekstowego dopasowania w logach, bez zaawansowanych możliwości wyszukiwania (np. Elasticsearch).
- Zależność od jakości i spójności etykiet dla skutecznego indeksowania i wyszukiwania.
Ogólnie Loki to doskonałe rozwiązanie do scentralizowanego zbierania logów, gdy potrzebna jest skalowalność i integracja z Grafana, a pełnotekstowe wyszukiwanie po każdym polu logu nie jest krytycznym wymogiem.