
Ahoj, volám sa Evgenij, som tímový líder B2B divízie v Sitimobile. Jednou z úloh nášho tímu je podpora integrácií pre objednávanie taxíkov od partnerov, a pre zabezpečenie stabilného servisu musíme neustále rozumieť tomu, čo sa deje v našich mikroslužbách. A na to musíme neustále sledovať logy.
V Sitimobile na prácu s logmi používame ELK stack (ElasticSearch, Logstash, Kibana), a objem údajov prichádzajúcich tam je obrovský. Nájdenie problémov, ktoré sa môžu objaviť po nasadení nového kódu, je dosť ťažké v tejto masívnej dani. A na ich prehľadné zobrazenie má Kibana sekciu Dashboard.
Na Habre je pomerne veľa článkov s príkladmi, ako nastaviť ELK stack na získavanie a uchovávanie údajov, ale o vytváraní Dashboardu nie je dostatok aktuálnych materiálov. Preto chcem ukázať, ako v Kibane vytvárať vizuálne zobrazenie údajov na základe prichádzajúcich logov.
Nastavenie
Aby to bolo prehľadnejšie, vytvoril som Docker obraz s ELK a Filebeat. A umiestnil som do kontajnera malý program v Go, ktorý pre náš prípad bude generovať testovacie logy. Podrobne popisovať konfiguráciu ELK nebudem, na Habre je o tom dosť napísané.
Klonujeme repozitár s konfiguráciou docker-compose a nastaveniami ELK a spúšťame ho príkazom docker-compose up. Úmyselne nepridávam kľúč -d, aby som videl proces fungovania ELK stacku.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Ak je všetko nastavené správne, v logoch uvidíme záznam (možno nie hneď, proces spustenia kontajnera so všetkým stackom môže trvať niekoľko minút):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Na adrese localhost:5061 by sa mala otvoriť Kibana.


Jednou z vecí, ktoré potrebujeme nastaviť, je vytvorenie indexového vzoru pre Kibanu, s informáciami o tom, aké údaje treba zobrazovať. Na to vykonáme curl požiadavku alebo vykonáme sériu akcií v grafickom rozhraní.
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
Vytvorenie indexového vzoru cez grafické rozhranie
Na nastavenie vyberáme v ľavom menu sekciu Discover a dostávame sa na stránku na vytvorenie indexového vzoru.

Kliknutím na tlačidlo "Create index pattern" sa dostaneme na stránku pre vytvorenie indexu. Do poľa "Index pattern name" zadáme "logstash-*". Ak je všetko správne nastavené, nižšie Kibana zobrazí indexy, ktoré vyhovujú pravidlám.

Na nasledujúcej stránke vyberieme kľúčové pole s časovou pečiatkou, v našom prípade je to @timestamp.

Výsledkom bude stránka s nastaveniami indexu, ale v súčasnosti od nás nie sú potrebné žiadne ďalšie akcie.

Teraz sa môžeme opäť vrátiť do sekcie Discover, kde uvidíme záznamy logov.

Dashboard
V ľavom menu klikneme na sekciu vytvorenia Dashboard a dostaneme sa na zodpovedajúcu stránku.

Klikneme na „Create new dashboard“ a dostaneme sa na stránku pridávania objektov do Dashboard.

Klikneme na tlačidlo „Create new“ a systém nám navrhne vybrať spôsob zobrazenia údajov. V Kibane ich je veľmi veľa, ale budeme sa zaoberať vytvorením grafického zobrazenia „Vertical Bar“ a tabuľkového „Data Table“. Ostatné typy zobrazenia sa nastavujú podobným spôsobom.

Niektoré dostupné objekty majú štítky B a E — to znamená, že formát je experimentálny alebo v beta teste. Postupom času sa formát môže zmeniť alebo úplne zmiznúť z Kibany.
Vertikálny stĺpec
Pre príklad „Vertical Bar“ vytvoríme histogram pomeru úspešných a neúspešných stavov odpovede našej služby. Po skončení nastavení dostaneme nasledujúci graf:

K úspešným budeme počítať všetky požiadavky so stavom odpovede = 400.
Na vytvorenie grafu „Vertical Bar“ je potrebné vybrať zdroj údajov. Vyberieme Index Pattern, ktorý sme vytvorili skôr.

Predvolene, po výbere zdroja údajov, sa zobrazí jeden súvislý graf. Nastavíme ho.

V bloku „Buckets“ klikneme na tlačidlo „Add“, vyberieme „X-axis“ a nastavíme os X. Na os X odložíme časové pečiatky príchodu záznamov do logu. V poli „Aggregation“ vyberieme „Date Histogram“, a v poli „Field“ vyberieme „@timestamp“, ktoré označuje časové pole. „Minimum interval“ necháme v stave „Auto“, ktorý sa automaticky prispôsobí nášmu zobrazeniu.

Po kliknutí na tlačidlo „Update“ uvidíme graf s počtom požiadaviek každých 30 sekúnd.

Teraz nastavíme stĺpce po osi Y. Momentálne sa zobrazuje celkový počet požiadaviek v zvolených časových intervaloch.

Zmeníme hodnotu „Aggregation“ na „Sum Bucket“, ktorá nám umožní skombinovať údaje o úspešných a neúspešných požiadavkách. V bloku Bucket -> Aggregation vyberáme agregáciu podľa „Filters“ a nastavujeme filtrovanie podľa „statusCode >= 400“. A v poli „Custom label“ uvedieme našu označenie pre lepšie zrozumiteľné zobrazenie v legendách na grafe a v celkovom zozname.

Po kliknutí na tlačidlo „Update“ pod blokom nastavení dostaneme graf s problémovými požiadavkami.

Ak kliknete na kruh vedľa legendy, otvorí sa okno, v ktorom môžete zmeniť farbu stĺpcov.

Teraz pridáme na graf údaje o úspešných požiadavkách. V sekcii „Metrics“ stlačte tlačidlo „Add“ a vyberte „Y-axis“.

V vytvorenej metrike nastavíme rovnaké parametre ako pre neúspešné požiadavky. Len vo filtri uvedieme „statusCode < 400“.

Zmenou farby nového stĺpca získame zobrazenie pomeru problematických a úspešných požiadaviek.

Stlačením tlačidla „Save“ v hornej časti obrazovky a uvedením názvu uvidíme na Dashboarde prvý graf.

Tabuľka údajov
Teraz zvážime tabuľkové zobrazenie „Data Table“. Vytvoríme tabuľku so zoznamom všetkých URL, na ktoré boli požiadavky, a počtom týchto požiadaviek. Rovnako ako v príklade s Vertical Bar, najprv vyberieme zdroj dát.

Potom sa na obrazovke zobrazí tabuľka s jedným stĺpcom, ktorý ukazuje celkový počet požiadaviek za zvolený časový interval.

Budeme meniť iba blok „Buckets“. Stlačte tlačidlo „Add“ a vyberte „Split rows“.

V poli „Aggregation“ vyberte „Terms“. A v objavenej položke „Field“ vyberte „url.keyword“.

Uvedením hodnoty „Url“ do poľa „Custom label“ a stlačením „Update“ získame požadovanú tabuľku s počtom požiadaviek pre každé URL za zvolený časový interval.

V hornej časti obrazovky znova stlačte tlačidlo „Save“ a uveďte názov tabuľky, napríklad Urls. Vrátime sa späť na Dashboard a uvidíme oba vytvorené výstupy.

Práca s Dashboardom
Pri vytváraní Dashboardu sme v nastaveniach objektov zobrazenia nastavili iba základné parametre zobrazenia. Nemá zmysel uvádzať v objektoch dáta pre filtre, napríklad „rozsah dát“, „filtrovanie podľa useragent“, „filtrovanie podľa krajiny požiadavky“ atď. oveľa pohodlnejšie je uviesť požadovaný časový úsek alebo nastaviť potrebné filtrovanie na paneli požiadaviek, ktorá sa nachádza nad objektmi.
![]()
Pridané filtre na tomto paneli sa uplatnia na celý Dashboard, a všetky objekty zobrazenia sa prestavajú podľa aktuálnych vyfiltrovaných dát.
Záver
Kibana je mocný nástroj, ktorý umožňuje vizualizovať akékoľvek dáta pohodlným spôsobom. Snažil som sa predviesť nastavenie dvoch základných typov zobrazenia. Ale aj iné typy sa nastavujú podobným spôsobom. A množstvo nastavení, ktoré som nechal „za oponou“, vám umožní veľmi flexibilne prispôsobovať grafy podľa vašich potrieb.
Zdroj: habr.com
