Elasticsearch je distribuovaný vyhľadávací a analytický nástroj postavený na Apache Lucene. Je to open-source softvér, ktorý umožňuje efektívne vyhľadávanie, filtrovanie a analyzovanie veľkého množstva štruktúrovaných alebo neštruktúrovaných dát. Elasticsearch je často využívaný na spracovanie a indexovanie obrovských objemov údajov a je známy svojou schopnosťou rýchlo vyhľadávať informácie.
Hlavnými charakteristikami Elasticsearch sú:
- Full-textové vyhľadávanie: Elasticsearch umožňuje efektívne vyhľadávať text v rámci veľkého množstva dokumentov. Dokáže pracovať s rôznymi typmi dát, od textových dokumentov po štruktúrované dáta.
- Distribuovaný systém: Elasticsearch je navrhnutý tak, aby bol schopný škálovať horizontálne. To znamená, že môže byť nasadený na viacerých serveroch, čím zvyšuje svoju výkonnosť a odolnosť voči chybám.
- Indexovanie: Dáta v Elasticsearch sú uložené v indexoch, ktoré umožňujú rýchle a efektívne vyhľadávanie. Indexy obsahujú analyzované a tokenizované dáta, čo zvyšuje presnosť vyhľadávania.
- RESTful API: Elasticsearch poskytuje jednoduché RESTful API, čo umožňuje jednoduchú integráciu s rôznymi aplikáciami a programovacími jazykmi.
Elasticsearch sa často využíva v rôznych oblastiach, vrátane:
- Logovanie: Zbieranie, ukladanie a analyzovanie logov z aplikácií a systémov.
- Monitoring a analýza: Sledovanie výkonu systémov a analýza dát na podporu rozhodovania.
- Vyhľadávanie: Rýchle a efektívne vyhľadávanie v obsahu dokumentov.
- Business Intelligence: Analýza dát pre podporu obchodných rozhodnutí.
Celkovo lze říci, že Elasticsearch je mocný nástroj pre vyhledávání a analýzu údajov, ktorý nachádza uplatnenie v rôznych odvetviach a aplikáciách.
Logovanie pomocou Elasticsearch databázy sa často využíva na sledovanie, ukladanie a analýzu logov z rôznych systémov a aplikácií. Tu sú niektoré z možností a výhod tohto typu logovania:
Možnosti logovania pomocou Elasticsearch:
- Centralizované ukladanie logov:
- Elasticsearch umožňuje centralizované ukladanie logov z rôznych zdrojov do jedného distribuovaného úložiska. Tým sa uľahčuje sledovanie a analýza logov na jednom mieste.
- Rýchle a efektívne vyhľadávanie:
- Elasticsearch ponúka silné full-textové vyhľadávanie, čo znamená, že môžete rýchlo a efektívne vyhľadávať v logoch. To je užitočné pri identifikácii a riešení problémov, monitorovaní výkonu alebo hľadaní dôležitých informácií.
- Indexovanie a štruktúrované logy:
- Dáta v Elasticsearch sú uložené v indexoch, ktoré umožňujú rýchle indexovanie a vyhľadávanie. Logy môžu byť štruktúrované, aby bolo jednoduchšie identifikovať a analyzovať konkrétne informácie.
- Rozsiahle možnosti filtrovania:
- Elasticsearch umožňuje používanie rôznych filtrov na vyhľadávanie konkrétnych typov logov alebo podmienok. To je užitočné pri hľadaní špecifických udalostí alebo sledovaní konkrétnych aspektov systému.
- Distribuovaný systém:
- Vďaka distribuovanému charakteru Elasticsearch je možné ho škálovať horizontálne, čo znamená, že je možné pridávať ďalšie uzly pre zvýšenie kapacity a odolnosti voči chybám.
Výhody logovania pomocou Elasticsearch:
- Sledovanie výkonu:
- Logovanie umožňuje sledovať výkon systému, identifikovať potenciálne problémy a optimalizovať konfigurácie.
- Rýchle identifikovanie problémov:
- Centralizované logovanie umožňuje rýchle identifikovanie a riešenie problémov v systéme.
- Bezpečnostné sledovanie:
- Logy môžu byť využívané na sledovanie bezpečnostných incidentov a detekciu neoprávnených prístupov.
- Auditovanie a zhodnotenie:
- Logy slúžia na auditovanie a zhodnocovanie činností, čo je dôležité z hľadiska dodržiavania predpisov a normatívov.
- Historické dáta a analýza:
- Logy umožňujú ukladanie historických dát, čo umožňuje analýzu správania systému v priebehu času a podporuje dlhodobé plánovanie a strategické rozhodovanie.
Využitie Elasticsearch pre logovanie pomáha organizáciám lepšie porozumieť ich systémom, zvyšovať bezpečnosť a rýchlo reagovať na potenciálne problémy.
Inštalácia Elasticsearch ako docker kontainer
Pri inštalácii Elasticsearch v Docker kontajneroch, klaster tvoria jednotlivé kontajnery, ktoré môžu byť spravované a orchesterované pomocou nástrojov ako Docker Compose alebo Kubernetes. Tu sú hlavné komponenty klastera Elasticsearch pri inštalácii v Docker kontajneroch:
1. Elasticsearch Kontajnery:
Každý kontajner predstavuje jednu inštanciu Elasticsearch. Tieto kontajnery tvoria jadro klastera. V každom kontajneri beží samostatná inštancia Elasticsearch s vlastným konfiguračným súborom, pamäťou a diskovým priestorom. Viacero týchto kontajnerov môže byť spustených na jednom fyzickom alebo virtuálnom stroji alebo na rôznych serveroch v závislosti od požiadaviek na škálovanie a dostupnosť.
2. Docker Network:
Docker kontajnery v klasteri komunikujú cez sieť Dockeru. Vytvorenie Docker siete umožňuje kontajnerom v rôznych fyzických alebo virtuálnych strojoch komunikovať medzi sebou a tvoriť tak distribuovaný klaster. Sieťové nastavenia sú dôležité pre komunikáciu medzi uzlami klastera.
4. Elasticsearch Konfiguračné Súbory:
Každý kontajner má svoj vlastný konfiguračný súbor, ktorý obsahuje nastavenia pre daný uzol v klasteri. Tieto konfiguračné súbory môžu obsahovať informácie o identifikátore uzla, nastaveniach uzla, alokácii pamäte, sieťových nastaveniach a ďalších konfiguračných parametroch.
5. Discovery Mechanism:
Na to, aby sa uzly v klasteri mohli nájsť a dynamicky sa pridávať alebo odoberať, Elasticsearch v Docker klasteri používa discovery mechanizmus. Typicky sa používa Elasticsearch plugin nazvaný “discovery-zen,” ktorý umožňuje uzlom dynamicky objavovať a pripájať sa k iným uzlom v klasteri.
6. Volume Mounting:
Pre ukladanie dát persistovaných v kontajneroch sa často využíva pripájanie zdieľaného diskového priestoru pomocou volume mountovania. To umožňuje udržať dáta aj po reštartovaní alebo odstránení kontajnera.
Výhody a Nevyhody:
Výhody:
- Flexibilita: Kontajnerizácia umožňuje rýchlu nasadzovanie, škálovanie a správu Elasticsearch uzlov.
- Izolácia: Každý kontajner má vlastnú izolovanú inštanciu Elasticsearch, čo zvyšuje bezpečnosť a stabilitu.
- Jednoduchá Správa: Docker Compose uľahčuje definovanie a správu celého klastera.
Nevýhody:
- Náročnejšia Konfigurácia: Nastavenie kontajnerov môže byť trochu komplikovanejšie v porovnaní s tradičnou inštaláciou.
- Časová náročnosť pri Veľkých Klastroch: Pre veľké klastery môže byť konfigurácia a správa kontajnerov náročnejšia.
Celkovo môže byť implementácia Elasticsearch v Docker kontajneroch výhodná, pokiaľ máte potrebu ľahko spravovať, škálovať a distribuovať vaše Elasticsearch inštancie.
Inštalácia pomocou docker kontainera:
# Create network:
docker network create elastic
# install container for elasticsearch.
# Local directory:
# - /data/es_data/data - directory where is store cluster data
# - /data/es_data/logs - directory where is store the logs files
docker run -d --name es01 --net elastic -p 9200:9200 -p 9300:9300 -it -e ELASTIC_PASSWORD=secrretpasswordforuserelastic -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e cluster.name=logs -e discovery.type=single-node -v /data/es_data/data:/usr/share/elasticsearch/data -v /data/es_data/logs:/usr/share/elasticsearch/logs -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.12.0
Zobrazenie logov elasticsearch kontajnera:
docker logs -f es01
Zobrazenie enrolment tokenu pre kibanu:
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token --scope kibana
Inštalácia nástroja kibana pre zobrazenie Logov:
docker run -d --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.12.0
Nastavnie kibany pomocou web rozhrania kde je potrebné pridat enrolment token
Odborník na kybernetickú bezpečnosť, správu Azure Cloud a VMware onprem. Využíva technológie, ako Checkmk a MRTG, na monitorovanie siete a zvyšovanie efektívnosti a bezpečnosti IT infraštruktúry. Kontakt: hasin(at)mhite.sk