
Tere, minu nimi on Jevgeni, ma olen Ситимобили B2B suuna tiimijuht. Üheks meie meeskonna ülesandeks on toeta taksitoomise integratsioone partneritelt, ja stabiilse teenuse tagamiseks peame alati mõistma, mis meie mikroteenustes toimub. Selleks tuleb pidevalt jälgida logisid.
Ситимобilis kasutame logide haldamiseks ELK-stakki (ElasticSearch, Logstash, Kibana), ja sinna tulev andmemaht on tohutu. Sellest hulgast päringutest probleemide leidmine, mis võivad tekkida uue koodi juurutamise järel, on üsna keeruline. Probleemide visuaalseks tuvastamiseks on Kibanas olemas Dashboardi osa.
Habr on piisavalt palju artikleid, mis näitavad, kuidas seadistada ELK-stakki andmete kogumiseks ja hoidmiseks, kuid Dashboardi loomise kohta pole asjakohaseid materjale. Seetõttu tahan näidata, kuidas Kibanas luua andmete visuaalset esitamist saabuvatest logidest.
Seadistamine
Selgust andmiseks lõin Docker-pildi ELK ja Filebeati jaoks. Ja panin konteinerisse väikese Go-s kribitud rakenduse, mis genereerib meie näite jaoks testlogisid. ELK seadistamise üksikasjalikku kirjeldust ma ei too, Habr on selle kohta piisavalt kirjutatud.
Kloonime konfiguratsiooniga repositooriumit docker-compose ja ELK seadistustega ning käivitame selle käsuga docker-compose up. Tahtlikult ei lisa ma võtit -d, et näha ELK stacki tööprotsessi.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Kui kõik on õigesti seadistatud, siis logides näeme järgmist kirjet (võib-olla mitte kohe, konteineri käivitamise protsess kogu stackiga võib võtta mitu minutit):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Aadressil localhost:5061 peaks avanema Kibana.


Ainus, mida peame seadistama, on luua Index Pattern Kibanas, mis sisaldab teavet, milliseid andmeid näidata. Selleks teeme curl-päringu või sooritame rea toiminguid graafilises liideses.
$ 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"}}'
Index Patterni loomine graafilise liidese kaudu
Seadistamiseks valime vasakpoolses menüüs jaotise Discover ning jõuame Index patterni loomise lehele.

Klõpsates nupule «Create index pattern», jõuame indeksi loomise lehele. Väljal «Index pattern name» sisestame «logstash-*». Kui kõik on õigesti seadistatud, näitab Kibana allpool sobivaid indekseid.

Järgmises lehes valime võtmevälja ajatempli jaoks, meie juhul on see @timestamp.

Tulemusena ilmub seadistuste indeksileht, kuid praegu pole meil täiendavaid tegevusi vaja.

Nüüd saame uuesti minna sektsiooni Discover, kus näeme logikirjeid.

Armatuurlauale
Vasakus menüüs klõpsame Dashboardi loomise sektsioonile ja jõuame vastavale lehele.

Klõpsame nupule «Create new dashboard» ja jõuame objektide lisamise lehele Dashboardis.

Klõpsame nupule «Create new», ja süsteem pakub valida andmete kuvamise viisi. Kibanas on neid palju, kuid vaatame, kuidas luua graafilist esitlemist «Vertical Bar» ja tabelit «Data Table». Ülejäänud kuvamisviisid seadistatakse sarnasel viisil.

Mõned saadaval olevad objektid on tähistatud B ja E - see tähendab, et formaat on katsetamisfaasis või beetaversioonis. Aja jooksul võib formaat muutuda või täielikult kaduda Kibana-st.
Vertikaalne baar
Näiteks «Vertical Bar» loome histogrammi meie teenuse eduka ja ebaõnnestunu vastuse staatuse suhte osas. Seadistuste lõppedes saame järgmise diagrammi:

Edukatena arvestame kõiki päringuid, mille vastuse staatus on = 400.
Vertikaalse baarigraafiku loomiseks peame valima andmeallika. Valime varem loodud indeksi mustri.

Vaikimisi ilmub andmeallika valimisel üks pidev graafik. Kohandame seda.

Punktis 'Buckets' klõpsake nuppu 'Add', valige 'X-asis' ja seadistage X-telg. Rikkeme märkide ajamisi tähistame ajamiste logi. 'Aggregation' väljale valime 'Date Histogram' ja 'Field' väljale valime '@timestamp', mis osutab ajaväljadele. 'Minimum interval' jätame olekusse 'Auto', mis kohandub meie kuvamisega automaatselt.

Nuppu 'Update' vajutades näeme graafikut, kus on näidatud päringute arv iga 30 sekundi järel.

Nüüd seadistame Y-telje veerud. Hetkel kuvatakse meil valitud ajavahemikus kõigi päringute koguarv.

Muudame 'Aggregation' väärtuse 'Sum Bucket' peale, mis võimaldab meil kombineerida edukaid ja ebaedukaid päringute andmeid. Bucketi jaotises -> Aggregation valime aggregatsiooni 'Filters' ja määrame filtreerimise 'statusCode >= 400'. Ja 'Custom label' väljale märkige meie näitaja nimi, et see oleks graafikul ja üldnimekirjas arusaadavamalt kuvatud.

Klõpsates nuppu „Update” seadeploki all, saame graafiku probleemsete päringutega.

Kui klõpsate legendi ümber oleva ringi peal, avatakse aken, kus saab muuta tulpade värvi.

Nüüd lisame graafikule edukaid päringute andmeid. Jaotises „Metrics” vajutame nuppu „Add” ja valime „Y-axis”.

Loome loodud mõõtmes samad seaded kui vigadega päringute puhul. Ainult filtris määrame „statusCode < 400”.

Muutes uue tulba värvi, saame kuvada probleemsete ja edukaid päringute suhet.

Klõpsates ekraani ülaosas nuppu „Save” ja määrates nime, näeme Dashboardil esimest graafikut.

Andmete tabel
Nüüd vaatame „Data Table” tabelivaatet. Loome tabeli, mis sisaldab kõiki URL-e, millele on päringud tehtud, ja nende päringute arvu. Nagu näites Vertical Bar, valime kõigepealt andmeallika.

Pärast seda kuvatakse ekraanil tabel, kus on üks veerg, mis näitab valitud ajavahemiku jooksul tehtud päringute koguarvu.

Muudame ainult bloki „Buckets”. Klõpsame nuppu „Add” ja valime „Split rows”.

Väljas „Aggregation” valime „Terms”. Ja avanevas väljas „Field” valime „url.keyword”.

Sisestades väljale „Custom label“ väärtuse „Url“ ja vajutades „Update“, saame soovitud tabeli URL-ide järgi esitatud päringute arvuga valitud ajavahemiku jooksul.

Ekraani ülaosas vajutame taas nuppu „Save“ ja anname tabelile nime, näiteks Urls. Naaseme tagasi Dashboardile ja näeme kahte loodud kuvandit.

Töö Dashboardiga
Dashboardi loomisel seadistame kuvandite objektide seadetes ainult põhijooned. Pole mõtet näidata objektides andmeid filtrite jaoks, näiteks „kuupäevavahemik“, „filtreerimine useragent'i järgi“, „filtreerimine päringu riigi järgi“ jne. Olulisem on määrata soovitud ajavahemik või teha vajalik filtreerimine päringute paneelis, mis asub objektide kohal.
![]()
Sellel paneelil lisatud filtrid rakenduvad kogu Dashboardile ning kõik kuvamisobjektid kohanduvad vastavalt kehtivatele filtreeritud andmetele.
Kokkuvõte
Kibana — võimas tööriist, mis võimaldab visualiseerida igasuguseid andmeid mugaval viisil. Olen püüdnud näidata kahte peamist kuvamistüüpi. Kuid ka teised tüübid on sarnase seadistamisega. Ja hulgaliselt seadistusi, mille jätsin „kaadrivälistesse“, võimaldavad teil graafikuid väga paindlikult oma vajaduste järgi kohandada.
Allikas: habr.com
