Last Updated on 02/01/2024 by administrator
Instalace Ubuntu Elasticsearch Kibana Logstash Filebeat (Elastic Stack)
Instalace Ubuntu Elasticsearch Kibana
Motivace:
Elastic Stack je sada open-source nástrojů vyvíjená společností Elastic. Tato sada nástrojů se skládá z několika komponent, včetně Elasticsearch, Logstash, Kibana a Beats, které spolupracují a poskytují robustní řešení pro sběr, ukládání, analýzu a vizualizaci dat.
OS:
Instalace byla prováděna na Ubuntu 22.04 LTS. Konkrétně otestováno přes VirtualBox.
Minimální hardwarové požadavky [4]:
- Procesor: 2 nebo více jáder s rychlostí 2 GHz nebo vyšší.
- Operační paměť (RAM): Nejméně 8 GB RAM (doporučeno je více).
- Diskový prostor: Doporučuje se minimálně 50 GB volného místa pro data Elasticsearch.
Implementace:
Níže bude postupováno a bude tak provedena Instalace na Ubuntu pro Elasticsearch, Kibana, Logstash a Filebeat.
Přidání repozitáře Elastic:
Provést import GPG klíče Elastic:
Příkaz níže přidá soubor elastic-8.x.list pro Elastic source list do složky /etc/apt/sources.list.d/
Pozn. Aktuální verze Elasticsearch je 8.8.1 (ke dni 16.6.2023) při psaní tohoto článku, nicméně návod byl také odzkoušen na Elasticsearch 8.10.4 (ke dni 23.10.2023) a postup níže je stejný.
Příkazem apt update se provede aktualizace seznamu balíčků z repozitářů:
Instalace a konfigurace Elasticsearch:
Elasticsearch je open-source vyhledávací a analytická platforma. Je často používána pro fulltextové vyhledávání, logování, analýzu dat a tvorbu personalizovaných doporučení. Defaultně naslouchá na portu TCP/9200.
Díky přidání source listu je možné provést instalaci Elasticsearch:
Výstup příkazu sudo apt install elasticsearch bude vypada podobně. Je duležité si poznamenat heslo pro superusera označené níže:
Otevřít elasticsearch.yml soubor ve složce /etc/elasticsearch/:
a přepsat parametr network.host na localhost
Pozn. Defaultně Elasticsearch naslouchá na portu TCP/9200 a je přístupný pro vzdálený přístup. Parametrem localhost, se definuje, že bude dostupný pouze z tohoto nainstalovaného serveru, tímto se zvýší jeho bezpečnost (zabrání se vzdálenému čtení dat nebo vypnutí clusteru).
Nepovinné nastavení – Jak nastavit zasílání Elastic dat na jiný HDD:
Pozor – pokud se rozhodnote zasílat logy na jiný HDD, je potřeba toto provést předtím, než se bude pokračovat z instalaci Kibana. Pokud se toto provede až později, je nutné celý elasticsearch a kibana odinstalovat viz. níže – Odinstalace.
Např. pokud je k tomu připraven oddíl (partition) v lokaci /elasticdata, upraví se cesta do této složky následovně v souboru elasticsearch.yml.
Přepsat parametr path.data na /elasticdata:
Změnit vlastníka složky a podsložek /elasticdata:
Spuštění Elasticsearch:
Nastartování Elasticsearch služby:
Aby se Elasticsearch služba aktivovala po rebootu Ubuntu aplikovat příkaz níže:
Příkaz níže otestuje, zda služba Elasticsearach běží:
[3] Výstup příkazu curl -X GET by měl vypadat podobně jakož je to viděno níže. Příkaz bude žádat heslo pro uživatele elastic, v tomto případě se jedná o vygenerované výše, čím bylo tG5zeZcxdfqqQqpCaIKJ.
Instalace Kibana:
Kibana je open-source nástroj pro vizualizaci a analýzu dat, který je součástí Elastic Stack (ELK Stack). Je navržen tak, aby poskytoval uživatelům možnost interaktivně prozkoumávat, analyzovat a vizualizovat data uložená v Elasticsearch. Defaultně naslouchá na portu TCP/5601.
Provést instalaci Kibana:
Spuštění Kibana:
Aby se Elasticsearch služba aktivovala po rebootu Ubuntu aplikovat příkaz níže:
Provést spuštění Elasticsearch služby:
Instalace a konfigurace webového serveru Nginx:
Instalace webového serveru Nginx:
Otevřít soubor default ve složce /etc/nginx/sites-enabled/:
zakomentovat řádek níže:
a přidat řádek pro proxy pass:
Částečný výpis configu v souboru /etc/nginx/sites-enabled/default bude vypadat následovně:
Pro kontrolování Nginx syntaxe použít:
Provést restart služby Nginx:
Povolit automatické spuštění Nginx služby při startu systému:
Pozn. Pro využití HTTPS a automatickou obnovu certifikátu přes Let’s Encrypt je možně využít Nginx Certbota.
Test připojení na Elastic:
Nyní je možné se připojit vzdáleně na Elastic server přes webový prohlížeč. V tomto případě běží pod http://192.168.0.162.
Je nutné vygenerovat Enrollment token. To se provede příkazem níže. Parametr „s“ definuje login, pro přihlášení k webovému rozhraní:
Ten zkopírovat do okna, jak ukazuje obrázek níže a kliknout na Configure Elastic:
Zobrazí okno, kde je nutné zadat kód pro ověření Kibana serveru. Tento kód se vygeneruje příkazem níže:
Následně se automaticky provede dokončení instalace Elastic:
Nyní je možné se přihlásit pod uživatelem elastic. Heslo se použije to, co se vygenerovalo po instalaci Elasticsearch výše (The generated password for the elastic built-in superuser):
Pozn. Při ztracení hesla je možné heslo vygenerovat znovu pro uživatele elastic pomocí příkazu níže:
Instalace a konfigurace Logstash:
Logstash je open-source nástroj pro sběr, zpracování a načítání dat z různých zdrojů do různých cílů. Slouží pro lepší flexibilitu shromažďování dat z různých zdrojů. Defaultně naslouchá na portu TCP/5044.
Logstash bude nakonfigurován na stejném serveru jako Elasticsearch.
Logstash přijímá data na vstupu (INPUTS), což mužou být logové soubory, události z různých protokolů (např. syslog, HTTP, MQTT), relační databáze.
Dále tyto data zpracuje (FILTERS), zde provádějí transformaci a normalizaci dat získaných z input pluginů. Tyto pluginy mohou provádět různé úpravy, jako například parsování logových záznamů, extrahování polí, úpravy časových údajů, filtrování událostí podle určitých kritérií, přidávání metadata atd.
A pošle je na výstup (OUTPUTS), kde cílem je Elasticsearch, ale může to být i relační databáze různé služby pro vizualizaci dat (např. Kibana), cloudové úložiště atd.
Nejdřív tedy bude vytvořen INPUT soubor 02-beats-input.conf, kde se nastaví Filebeat input:
a vložit do souboru 02-beats-input.conf konfiguraci níže. Touto konfiguraci bude následně poslouchat Logstash na portu TCP/5044:
Zkopírovat certifikát http_ca.crt ze složky /etc/elasticsearch/certs/ do složky /etc/logstash/, jelikož logstash nemá práva pro čtení ve složce /etc/elasticsearch/certs/:
Povolit read práva pro others aby logstash mohl přečíst http_ca.crt certifikát:
Dále bude vytvořen OUTPUT soubor 30-elasticsearch-output.conf:
a vložit do souboru 30-elasticsearch-output.conf konfiguraci níže. To nakonfiguruje Logstash aby ukládal data v Elasticsearch který běží na stejném serveru a portu TCP/9200, čili v tomto případě je to localhost:9200:
Výše vygenerované údaje pro přihlášení byly elastic/tG5zeZcxdfqqQqpCaIKJ
Otestování Logstash konfigurace se provede příkazem níže:
Pokud nenastala žádná chyba, výstup příkazu sudo -u logstash /usr/share/logstash/bin/logstash –path.settings /etc/logstash -t by měl ukázat Config Validation Result: OK. Exiting Logstash hlášku:
Pozn. Hlášky warnings z Open JDK by problémy způsobovat neměly a můžou být ignorovány.
Spuštění Logstash:
Provést spuštění Logstash služby:
Aby se Logstash služba aktivovala po rebootu Ubuntu aplikovat příkaz níže:
Instalace a konfigurace Filebeat:
Filebeat se používá pro sběr, analýzu a odesílání logovacích souborů nebo jiných strukturovaných dat z různých zdrojů do systému pro zpracování a analýzu logů. Jeho hlavním úkolem je poskytovat jednoduchý a efektivní způsob přenosu logovacích dat do centrálního úložiště Elasticsearch.
Filebeat bude nainstalován na stejném serveru jako Elasticsearch a Logstash:
Defaultně odesílá Filebeat přímo zprávy do Elasticsearch a to na portu TCP/9200. Nicméně v tomto návodu se budou zprávy posílat do Logstash sloužící jako centrální bod pro zpracování všech logů a to na portu TCP/5044.
Otevřít konfigurační soubor filebeat.yml:
Zakomentovat následující řádky níže:
a odkomentovat řádky níže:
Filebeat obsahuje mnoho modulů, nicméně v tomto případě bude použitý jen modul system, který sbírá a zpracovává (parsuje) a to díky službě logování, která je běžnou součástí Linuxových distribucí. Pro povolení modulu system použít příkaz níže:
Seznam všech dostupných modulů lze vidět příkazem:
Částečný výstup příkazu sudo filebeat modules list ukazuje, že byl povolený modul system:
Příkaz níže spustí příkaz pro nastavení Filebeat a –pipelines povolí vytvoření předdefinovaných konfiguračních pipelines pro zpracování logů, přepínač –module systems aktivuje systémový modul pro konfiguraci a sběr systémových logů. Spuštění tohoto příkazu inicializuje Filebeat a nakonfiguruje ho tak, aby sbíral systémové logy pomocí předdefinovaného modulu pro systémové logy:
Výstup příkazu sudo filebeat setup –pipelines –modules system vypadá následovně:
Otevřít soubor system.yml ve složce /etc/filebeat/modules.d/:
a změnit parametr pro syslog enabled na true:
Otevřít soubor filebeat.yml ve složce /etc/filebeat/:
a změnit parametr enabled na true:
Příkaz filebeat setup automaticky nastaví indexy a šablony pro Filebeat v Elasticsearch, –index-management provede vytvoření potřebných indexů a šablon v Elasticsearch, -E output.logstash.enabled=false vypne výstup do Logstash a přímo posílá události do Elasticsearch, -E output.elasticsearch.hosts=[„localhost:9200“] definuje adresu a port Elasticsearch, kam bude Filebeat odesílat události, -E output.elasticsearch.protocol=https nastavuje komunikaci HTTPS, místo HTTP, output.elasticsearch.ssl.certificate_authorities definuje cestu k souboru certifikátu, -E output.elasticsearch.username a -E output.elasticsearch.password definuje login a heslo pro přihlášení k Elasticsearch běžící na localhostu TCP/9200:
Výstup příkazu sudo filebeat setup –index-management … bude vypadat následovně:
Příkaz níže je podobný jako tento výše nicméně definuje se zde parametr -E setup.kibana.host=localhost:5601:čímž se specifuje adresa a port Kibana serveru, se kterým bude Filebeat komunikovat pro nastavení Kibana dashboards a vizualizací.
Výstup příkazu sudo filebeat setup -E output.logstash.enabled=false ... bude vypadat následovně:
Povolit automatické spuštění Filebeat služby při startu systému:
Provést restart služby Filebeat:
Pomocí query níže se ověří, zda Elasticsearch přijímá data:
Výstup příkazu curl -X GET by měl vypadat podobně jakož je to viděno níže. Příkaz bude žádat heslo pro uživatele elastic, v tomto případě se jedná o vygenerované výše, čím bylo tG5zeZcxdfqqQqpCaIKJ.
Položka Filebeat a také přijaté logy by měly být viděny přes web v Analytics > Discover:
Tímto proběhla Instalace na Ubuntu Elasticsearch Kibana Logstash a Filebeat.
Jak zjistit verzi jednotlivých komponent:
Výpis příkazu dpkg -l | grep -E ‚elasticsearch|logstash|filebeat|kibana‘ zobrazuje verze komponent:
Odinstalace:
Zde je postup jak odinstalovat řádně Elasticsearch a Kibanu – odzkoušeno v praxi. Např. v mé praci bylo důvodem, že bylo potřeba zasílat elastic data na jiny HDD. Tento postup se mi osvědčil.
a nyní je možné provést reinstalaci znovu od příkazu sudo apt install elasticsearch a podle návodu postupovat.
Řešení problémů:
1. FATAL Error: EACCES: permission denied, open ‚/etc/kibana/certs/kibana.key‘
Problém může být i s ostatními soubory:
Přejít do /etc/kibana/certs složky:
Příkaz níže ukáže oprávnění souborů:
Výpis příkazu ls -la ukazuje, že opravnění pro soubory ca.pem, kibana.crt a kibana.key je root:kibana
Řešení problemů:
Je potřeba přepsat opravnění z root na kibana:
Provést restart služby kibana:
Zdroje:
[2] https://www.youtube.com/watch?v=Ts-ofIVRMo4
[4] https://opster.com/guides/elasticsearch/capacity-planning/elasticsearch-minimum-requirements/