Nástroje pro práci s Elasticsearch

O Elasticsearch právě píši seriál, který určitě stojí za přečtení!

Elasticsearch je snadno škálovatelné úložiště umožňující pokročilé fulltextové vyhledávání, komunikace s ním probíhá skrz REST API. Komunikovat s ním pouze skrz terminál není úplně nejpřívětivější, existuje však několik nástrojů, které používání Elasticsearch zjednoduší. Toto je ucelený seznam všech nástrojů se kterými jsem se setkal.

Níže popisované nástroje jsou kompatibilní s Elasticsearch verze 2.x.x. U verze 5 a vyšší se některé věci změnily - Sense (a také Marvel) je součástí nástroje Kibana, Kopf není plugin, ale samostatná aplikace nazvaná Cerebro.

Management s grafickým rozhraním

Kopf

Kopf je webové rozhraní umožňující vizualizaci a správu Elasticsearch clusteru. Instalace je možná dvěma způsoby, buď jako plugin do Elasticsearch, nebo jako samostatná aplikace. Pokud máte Elasticsearch nainstalovaný lokálně, nejjednodušší je se přepnout do jeho složky a Kopf nainstalovat příkazem:

./bin/plugin install lmenezes/elasticsearch-kopf/2.1.1

Nyní by měl být Kopf přístupný zadáním adresy http://localhost:9200/_plugin/kopf do webového prohlížeče. Vidět je stav clusteru - zda je v pořádku (zelená/oranžová/červená lišta v záhlaví), jaké má nody (řádky tabulky), indexy (sloupce) a jak jsou rozmístěny shardy.

Kopf

Kromě vizalizace lze Elasticsearch spravovat - vytvářet indexy, měnit nastavení, spravovat percolatory, aliasy, snapshoty, templaty... K dispozici je i stránka pro posílání requestů, která napovídá názvy indexů a umožňuje procházet historii proběhlých requestů. Více informací včetně detailního návodu k instalaci je na githubu.

ElasticHQ

Webové rozhraní umožňující správu Elasticsearch clusteru, funkčně je dost podobný Kopfu. Jsou celkem tři způsoby jak jej spustit - může běžet jako samostatná aplikace, plugin v Elasticsearch nebo lze spustit rovnou bez instalace v prohlížeči po zadání adresy http://www.elastichq.org/app/index.php?url=http://localhost:9200. Je však nutné mít povolené CORS v elasticsearch.yml.

ElasticHQ

Marvel

Pokud chcete vidět přesně co se v clusteru děje, sledovat detailně jednotlivé metriky, umí to právě Marvel. Aktuálně je bohužel instalace trochu složitější než dřív, což je způsobeno tím, že Marvel není zdarma. Nyní je součástí x-packu, který je nabízen jako balíček několika nástrojů, mezi něž Marvel patří. Ke stažení je na webu Elasticu, kde naleznete i dokumentaci.

Marvel

Vizualizace

Kibana

Kibana je nástroj umožňující vizualizaci dat uložených v Elasticsearch ve webovém prohlížeči. Je to samostatná aplikace, kterou lze stáhnout z webu Elasticu. Po stažení a rozbalení archivu stačí v konzoli spustit příkazem ./bin/kibana ve složce s rozbaleným archivem. Dostupná pak bude v prohlížeči na adrese http://localhost:5601.

Kibana

V záhlaví jsou čtyři položky:

  • Discover: Vyhledávání a výběr sloupců v tabulce
  • Visualize: Vytvoření vizualizace (grafu/tabulky/mapy/...) z uloženého nebo nového vyhledávání
  • Dashboard: Několik uložených vizualizací nebo vyhledávání na jedné stránce
  • Settings: Nastavení (pattern pro výběr indexu, nastavení polí, import/export)

Sama o sobě je Kibana silný nástroj umožňující vytvořit vizualizace z dat několika kliknutími, ty je pak možné vložit jako iframe do jiné aplikace, nebo jen použít dotaz, který kibana vygenerovala. Rozšiřitelná je pomocí řady pluginů. Veškeré informace i Kibaně jsou pak dostupné v dokumentaci

Grafana

Grafana je primárně určena pro vizualizaci dat z InfluxDB, nicméně se umí napojit i na Elasticsearch. Vizuálně je dost podobná starší Kibaně. Pokud máte data uložená ve více databázích, může pro vás být Grafana tou pravou volbou. Více na grafana.org.

Grafana

Dotazování

Sense

Sense byl dříve samostatnou aplikací, nyní je dostupný jako plugin do Kibany. Je to konzole umožňující komunikovat s Elasticsearchem - vytvářet requesty, číst odpovědi. Přestože už je obdobná funkčnost v Kopfu, Sense má jednu důležitou výhodu - našeptávání.

Sense

Je to asi nejpohodlnější způsob, jak psát dotazy na elasticsearch. Všechny jeho možnosti jsou pak popsané v dokumentaci.

Postman

Postman není určen primárně pro použití s Elasticsearch, je to nástroj umožňující komunikovat obecně s jakýmkoli API. Dostupný je jako rozšíření pro Google Chrome nebo jako samostatná aplikace pro OS X. Výhodou je možnost si requesty ukládat pro budoucí použití, případně automatizovat jejich spouštění.

Postman

Adminer

Nesmím zapomenout zmínit také český nástroj Adminer Jakuba Vrány. Ten od verze 4 podporuje také NoSQL databáze, mezi něž Elasticsearch spadá. Adminer jsem zkoušel, ale měl problém s zobrazením složitějších dat v tabulce. Od té doby jsem jej nezkoušel, takže je možné, že v současné verzi už budou tyto problémy odladěny. Stažení je možné na webu adminer.org.

Management - konzolové nástroje

ElasticDump

Elasticdump je konzolový nástroj umožňující import a export dat z/do Elasticsearch. Je to vpodstatě taková obdoba Mysqldumpu. Nevýhodou je, že vyžaduje npm. Pokud ale chcete rychle zálohovat menší množství dat, nebo dostat data z produkce na lokál, může elasticdump dobře posloužit. Více na npmjs.com.

# instalace
npm install elasticdump -g

# dump indexu do souboru (vytvoreni zalohy)
elasticdump \  
  --input=http://production.es.com:9200/my_index \
  --output=/data/my_index_mapping.json \
  --type=mapping
elasticdump \  
  --input=http://production.es.com:9200/my_index \
  --output=/data/my_index.json \
  --type=data

# stazeni dat z produkce na lokal
elasticdump \  
  --input=http://production.es.com:9200/my_index \
  --output=http://localhost:9200/my_index \
  --type=mapping
elasticdump \  
  --input=http://production.es.com:9200/my_index \
  --output=http://localhost:9200/my_index \
  --type=data

Alternativou by mohl být elasticsearch-tools. Nabízí podobnou funkčnost jako elasticdump, nemám s ním ale zkušenosti.

Curator

Pokud vytváříte denní indexy (logstash-2016-05-01, logstash-2016-05-02, ...), pravděpodobně budete chtít ty staré uzavírat nebo rovnou mazat. Nástroj který to umí automaticky se jmenuje Curator a je přímo od Elasticu. Více informací o tom jak ho použít naleznete v oficiální dokumentaci, případně na GitHubu.

Notifikace

Předposlední kategorií jsou nástroje umožňující zasílat notifikace na základě událostí uložených v Elasticsearch. Příkladem může být například zaslání e-mailu, pokud počet chyb aplikace (které si ukládáte do ES) vzroste nad určitou hodnotu. Nástroje, které toto umožňují jsou dva a liší se tím, že jeden je přímo od Elasticu a je placený (Watcher), zatímco druhý je opensource (ElastAlert).

Elastic Watcher

ElastAlert

Zabezpečení

Pokud chcete data v Elasticsearch někomu zpřístupnit, ale nechcete mu dát plný přístup k clusteru, je třeba použít některý z nástrojů, který jej zabezpečí. Například lze po zadání hesla umožnit přístup pouze k určitému indexu a to pouze pro čtení. Situace je podobná jako v případě nástrojů pro notifikace - jsou dva, z toho jeden oficiální ale placení a druhý opensource.

Elastic Shield

SearchGuard


To jsou nástroje, které vám mohou zpříjemnit soužití s Elasticsearch. Víte o nějakém zajímavém nástroji, který zde chybí? Podělte se o něj v diskuzi!

Luděk Veselý

PHP Developer