ELK Stack: Cztery komponenty: Elasticsearch (silnik wyszukiwania/indeksowania), Logstash (pipeline przetwarzania), Kibana (wizualizacja/dashboards), Beats (lekkie kolektory danych). Rozwiązanie enterprise z pełnotekstowym wyszukiwaniem.
ELK to dojrzały enterprise: pełny tekst, setki funkcji i JVM w cenie. Dopiero obok Lokiego widać kompromisy.
- Architektura ELK – uznany stos analityczny składający się z silnika Elasticsearch, narzędzia Logstash oraz wizualnego interfejsu Kibana.
- Lekkie agenty Beats – rodzina dedykowanych programów w języku Go, które gromadzą logi i metryki z maszyn i przesyłają je do bazy.
- Wyszukiwanie pełnotekstowe – Elasticsearch buduje indeks odwrócony, co zapewnia błyskawiczne odnajdywanie dowolnych słów w terabajtach danych.
- Transformacja w Logstashu – rozbudowane filtry potrafią normalizować dane, wzbogacać wpisy o geolokalizację i usuwać poufne atrybuty.
- Analityka w Kibanic – środowisko oferuje zaawansowane możliwości wizualizacji, budowy pulpitów oraz narzędzia uczenia maszynowego.
Beats: Lekkie kolektory danych w ELK Stack (obok Elasticsearch do indeksowania, Logstasha do przetwarzania i Kibany do wizualizacji); rozwiązanie enterprise z pełnotekstowym wyszukiwaniem.
Podstawy składni LogQL: Składnia LogQL składa się z dwóch głównych części. Pierwsza to selektor strumienia w nawiasach klamrowych, np. {app="frontend", env="prod"}, który szybko odnajduje odpowiednie strumienie logów dzięki etykietom. Druga część to potok filtrów rozdzielanych znakiem potoku |, np. |= "error" | json | status_code >= 500, który przetwarza wiersze w locie w pamięci bez konieczności ich uprzedniego indeksowania.
ELK Stack to dojrzałe, bogate w funkcje rozwiązanie enterprise do logowania i analityki o czterech komponentach: Elasticsearch (rozproszony silnik wyszukiwania i analityki), Logstash (potok przetwarzania danych), Kibana (wizualizacja i dashboardy) i Beats (lekkie narzędzia do wysyłki danych). To fundament budowania stacku logowania w skali enterprise, gdzie wymagane są pełnotekstowe wyszukiwanie, zaawansowana analityka, SIEM i uczenie maszynowe (inverted index, pipeline, shipper).
Elasticsearch: Rozproszony silnik wyszukiwania i analityki. Inverted index (pełnotekstowe wyszukiwanie, wyszukiwanie terminów O(1)), dokumentowo zorientowany (JSON), REST API, skalowanie horyzontalne (shards, repliki), wyszukiwanie w niemal czasie rzeczywistym (odświeżanie 1s). Zastosowania: analityka logów, wyszukiwanie pełnotekstowe, analityka bezpieczeństwa (SIEM), APM. Architektura klastra: master nodes (stan klastra), data nodes (shards), coordinating nodes (routing zapytań), ingest nodes (przetwarzanie wstępne). Oparty na JVM = wymaga tuningu heap, GC.
Logstash: Potok przetwarzania danych (inputs → filters → outputs). Inputs: beats, syslog, tcp, http, file, kafka, jdbc. Filters: grok (parsowanie regex - 120+ wzorców), mutate (transformacje pól), date (parsowanie timestampów), geoip, dns, json, kv, split. Outputs: Elasticsearch, stdout, file, kafka, pagerduty. Pipeline = input → filter → output. Wtyczki = rozszerzalność (200+ wtyczek). JRuby = wymagający pamięci, wolniejszy niż agenty w Go.
Kibana: UI wizualizacji i dashboardów. Discover (wyszukiwanie ad-hoc, składnia Lucene), Visualize (wykresy, mapy, tabele, Vega), Dashboard (złożone panele), Canvas (raporty pixel-perfect), Lens (interfejs drag-drop), Maps (przestrzenne). Alerting (threshold, anomaly, ML), Reporting (eksport PDF/CSV), Spaces (multi-tenancy). UI dla analityków, menedżerów i zespołów security. Ekosystem wtyczek (Security, Observability, Maps).
Beats: Lekkie shippery (Go, pojedyncza binarka, bez JVM). Filebeat (pliki logów, multi-line, moduły), Metricbeat (metryki systemu/usług), Packetbeat (protokoły sieciowe), Heartbeat (monitorowanie dostępności), Auditbeat (audyt Linuksa), Functionbeat (serverless). Moduły (nginx, mysql, apache, kubernetes) = gotowe dashboardy, pipeline'y i szablony indeksów. Lekkie = przyjazne dla edge/IoT, wzór sidecar w Kubernetes.
Podsumowanie: ELK = dojrzały (10+ lat), bogaty w funkcje (full-text, ML, SIEM, APM), zasobożerny (JVM, RAM, CPU, dysk), skomplikowany operacyjnie. Loki = lekki, oparty na etykietach, natywny dla Grafany, skuteczny kosztowo. Wybór = skala vs funkcje vs koszt vs wiedza zespołu. Hybryda = Loki (recent/hot) + Elasticsearch (cold/archive) = najlepsze z obu światów.
Drugim wielkim podejściem do logowania w produkcji jest ELK Stack, dojrzałe rozwiązanie klasy enterprise. Warto je poznać nie tylko po to, by umieć się nim posługiwać, lecz także dlatego, że dopiero zestawienie z Lokim ostro rysuje kompromisy całej dziedziny. ELK reprezentuje filozofię wyszukiwania pełnotekstowego: skoro treść logu jest najcenniejsza, to właśnie ją indeksujemy i przeszukujemy w dowolny sposób, płacąc za tę swobodę większymi zasobami obliczeniowymi.
Stack składa się z czterech komponentów. Elasticsearch to rozproszony silnik wyszukiwania z indeksem odwróconym i interfejsem REST; Logstash to potok przetwarzania o układzie wejście-filtry-wyjście, w którym wzorce Grok z setką gotowych szablonów rozbierają dowolny tekst; Kibana daje interfejs grafika, wyszukiwarkę, wizualizacje oraz funkcje alertingu i uczenia maszynowego; wreszcie lekkie Beats, czyli Filebeat, Metricbeat i Packetbeat, odpowiadają za wysyłkę danych z hostów. Uzupełniają je gotowe moduły dla popularnych usług.
Wyjaśnienie skrótów użytych na slajdzie:
ELK – Elasticsearch, Logstash, Kibana – stos technologiczny ELK; Klasyczny pakiet oprogramowania do centralnego zarządzania i przeszukiwania logów.
Lucene – Apache Lucene – silnik indeksowania Apache Lucene; Biblioteka wyszukiwania pełnotekstowego leżąca u podstaw działania bazy Elasticsearch.
JVM – Java Virtual Machine – maszyna wirtualna Java; Środowisko uruchomieniowe silników Elasticsearch i Logstash wymagające starannej optymalizacji pamięci heap.
REST – Representational State Transfer – architektura interfejsu REST; Styl architektury API wykorzystywany przez Elasticsearch do indeksowania i wyszukiwania dokumentów.
JSON – JavaScript Object Notation – notacja obiektowa JavaScript; Podstawowy format dokumentów indeksowanych w węzłach klastra Elasticsearch.