
Përshëndetje, emri im është Evgeni, unë jam lideri i ekipit për drejtimin B2B në Sitimobil. Një nga detyrat e ekipit tonë është të mbështesim integrimet për porositë e taksive nga partnerët, dhe për të siguruar një shërbim të qëndrueshëm, gjithmonë duhet të kuptojmë se çfarë ndodh në mikroshërbimet tona. Prandaj, duhet të ndjekim vazhdimisht logjet.
Në Sitimobil, për punën me logjet ne përdorim ELK-stack (ElasticSearch, Logstash, Kibana), dhe sasia e të dhënave që arrin atje është masive. Të gjejmë probleme në këtë masë kërkesash që mund të shfaqen pas implementimit të kodit të ri është mjaft e vështirë. Dhe për identifikimin vizual të tyre, në Kibana ka seksionin Dashboard.
Në Habr ka shumë artikuj me shembuj se si të konfigurohet ELK-stack për marrjen dhe ruajtjen e të dhënave, por nuk ka materiale të aktualizuara për krijimin e Dashboard-it. Prandaj, dua të tregoj se si të krijojmë një paraqitje vizuale të të dhënave në Kibana bazuar në logjet që vijnë.
Konfigurimi
Për ta bërë më të dukshme, krijova një imazh Docker me ELK dhe Filebeat. Dhe vendosa në konteiner një të vogël në Go, e cila për shembullin ton do të gjenerojë logjet testuese. Nuk do të përshkruaj në detaje konfigurimin e ELK, sepse është shkruar mjaft për këtë në Habr.
Klonojmë depozitën me konfigurimin docker-compose dhe cilësimet e ELK, dhe e nisim atë me komandën docker-compose up. Qëllimisht nuk po shtoj çelësin -d, për të parë procesin e funksionimit të ELK-stack.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Nëse gjithçka është konfiguruar në mënyrë korrekte, do të shohim një regjistrim në log (ndoshta jo menjëherë, procesi i nisjes së kontejnerit me të gjithë stekun mund të marrë disa minuta):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Në adresën localhost:5061 duhet të hapet Kibana.


E vetmja gjë që na duhen të konfigurojmë është të krijojmë një Index Pattern për Kibana me informacione se cilat të dhëna duhet të shfaqen. Për këtë, do të ekzekutojmë një kërkesë curl ose do të kryejmë një sërë veprimesh në ndërfaqen grafike.
$ 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"}}'
Krijimi i Index Pattern përmes ndërfaqes grafike
Për konfigurimin zgjedhim në menunë e majtë seksionin Discover, dhe hyjmë në faqen e krijimit të Index pattern.

Duke kliku mbi butonin «Krijo model indeksi», ne shkojmë në faqen e krijimit të indeksit. Në fushën «Emri i modelit të indeksi», shkruajmë «logstash-*». Nëse gjithçka është e vendosur siç duhet, poshtë Kibana do të tregojë indeksat që i përgjigjen rregullit.

Në faqen tjetër, zgjedhim fushën kyçe me vulën e kohës, në rastin tonë kjo është @timestamp.

Si rezultat, do të shfaqet faqja e konfigurimit të indeksit, por tani nuk nevojiten veprime të tjera nga ana jonë.

Tani mund të kthehemi përsëri në seksionin Discover, ku do të shohim të dhënat e log-ve.

Tabela e informacionit
Në menunë e majtë klikojmë mbi seksionin e krijimit të Tabelave dhe shkojmë në faqen përkatëse.

Klikojmë mbi «Krijo tabelë të re» dhe shkojmë në faqen e shtimit të objekteve në tabelën.

KlikojmĂ« mbi butonin «Krijo tĂ« re», dhe sistemi do tĂ« sugjerojĂ« tĂ« zgjedhim mĂ«nyrĂ«n e paraqitjes sĂ« tĂ« dhĂ«nave. NĂ« Kibana ka njĂ« numĂ«r tĂ« madh, por do tĂ« shqyrtojmĂ« krijimin e paraqitjes grafike «Vertical Bar» dhe tabelar «Data Table». Llojet e tjera tĂ« paraqitjes konfigurohen nĂ« mĂ«nyrĂ« tĂ« ngjashme.Â

Disa objekte tĂ« disponueshme kanĂ« etiketa B dhe E â kjo do tĂ« thotĂ« se formati Ă«shtĂ« eksperimental ose nĂ« fazĂ«n e beta-testimit. Me kalimin e kohĂ«s formati mund tĂ« ndryshojĂ« ose tĂ« zhduket plotĂ«sisht nga Kibana.
Vertical Bar
Si e mori për shembull «Vertical Bar», do të krijojmë një histrogram për raportin e statusit të suksesshëm dhe të pasuksesshëm të përgjigjes nga shërbimi ynë. Pas përfundimit të konfigurimeve, do të marrim grafikën e mëposhtme:

Statuset e suksesshme do të përfshijnë të gjitha kërkesat me status përgjigjeje = 400.
Për të krijuar grafikën «Vertical Bar», na nevojitet të zgjedhim burimin e të dhënave. Zgjidhni Index Pattern, që e kemi krijuar më parë.

Në mënyrë të paracaktuar, pas zgjedhjes së burimit të të dhënave do të shfaqet një grafik i vetëm i vazhdueshëm. Le ta konfigurojmë atë.

NĂ« bllokun «Buckets», klikoni butonin «Add», zgjidhni «X-axis» dhe konfiguroni boshtin X. Ne do tĂ« shfaqim filtrat e kohĂ«s sĂ« regjistrimit tĂ« tĂ« dhĂ«nave nĂ« log. NĂ« fushĂ«n «Aggregation» zgjidhni «Date Histogram» dhe nĂ« «Field» zgjidhni «@timestamp», qĂ« tregon fushĂ«n e kohĂ«s. «Minimum interval» do ta lĂ«mĂ« nĂ« gjendjen «Auto», dhe ai do tĂ« rregullohet automatikisht sipas shfaqjes tonĂ«.Â

Duke klikuar në butonin «Update», ne do të shohim grafikën me numrin e kërkesave çdo 30 sekonda.

Tani le të konfigurojmë kolonat në boshtin Y. Tani për tani, ne po shfaqim numrin total të kërkesave në intervalin e zgjedhur.

Do ta ndërroni vlerën «Aggregation» në «Sum Bucket», e cila do të na lejojë të bashkojmë të dhënat për kërkesat e suksesshme dhe ato të dështuara. Në bllokun Bucket -> Aggregation, zgjidhni agregimin sipas «Filters» dhe vendosni filtrimin për «statusCode >= 400». Në fushën «Custom label» shënoni emrin tonë për një shfaqje më të qartë në legjendë në grafik dhe në listën e përgjithshme.

Duke klikuar butonin «Update» nën bllokun e cilësimeve, do të marrim grafikun me kërkesat problematike.

Nëse klikoni në rrethin afër legjendës, do të shfaqet një dritare ku mund të ndryshoni ngjyrën e kolonave.

Tani do të shtojmë në grafik të dhënat për kërkesat e suksesshme. Në seksionin «Metrics» klikoni butonin «Add» dhe zgjidhni «Y-axis».

Në metrikën e krijuar bëni të njëjtat cilësime si për kërkesat me gabime. Vetëm në filtrin tregoni «statusCode < 400».

Duke ndryshuar ngjyrën e kolonës së re, do të marrim një shfaqje të raportit midis kërkesave problematike dhe atyre të suksesshme.

Duke klikuar në pjesën e sipërme të ekranit butonin «Save» dhe duke shënuar emrin, ne do të shohim grafikën e parë në Dashboard.

Tabelë të Dhënash
Tani do të shqyrtojmë paraqitjen tabelare të «Data Table». Do të krijojmë një tabelë me një listë të të gjithë URL-ve që kanë pasur kërkesa dhe numrin e këtyre kërkesave. Si në shembullin me Vertical Bar, fillimisht zgjidhim burimin e të dhënave.

Pas kësaj, do të shfaqet një tabelë në ekran me një kolonë që tregon numrin total të kërkesave për intervalin e përzgjedhur të kohës.

Ne do të ndryshojmë vetëm bllokun «Buckets». Klikojmë butonin «Add» dhe përzgjedhim «Split rows».

Në fushën «Aggregation» zgjedhim «Terms». Ndërsa në fushën që shfaqet «Field» zgjedhim «url.keyword».

Duke vendosur në fushën «Custom label» vlerën «Url» dhe duke klikuar «Update», ne do të marrim tabelën e dëshiruar me numrin e kërkesave për çdo URL për intervalin e zgjedhur të kohës.

Në pjesën e sipërme të ekranit, përsëri do të klikojmë butonin «Save» dhe do të vendosim emrin e tabelës, për shembull Urls. Do të kthehemi prapa në Dashboard dhe do të shohim të dyja pamjet e krijuara.

Puna me Dashboard
Duke krijoni Dashboard, nĂ« cilĂ«simet e objekteve tĂ« shfaqjes kemi vendosur vetĂ«m parametrat kryesorĂ« tĂ« pamjes. Nuk ka kuptim tĂ« specifikoni tĂ« dhĂ«nat pĂ«r filtrat nĂ« objekte, siç janĂ« "intervali i datave", "filtrimi sipas useragent", "filtrimi sipas vendit tĂ« kĂ«rkesĂ«s" etj. ĂshtĂ« shumĂ« mĂ« e pĂ«rshtatshme tĂ« specifikoni intervalin e dĂ«shiruar tĂ« kohĂ«s ose tĂ« vendosni filtrimin e nevojshĂ«m nĂ« panelin e kĂ«rkesave, i cili ndodhet mbi objektet.
![]()
Filtrat e shtuar në këtë panel do të aplikohen në të gjithë Dashboard-in, dhe të gjitha objektet e shfaqjes do të riformatizohen sipas të dhënave të eflektuara aktuale.
Përfundimi
Kibana është një mjet i fuqishëm që lejon vizualizimin e çdo të dhëne në një përfaqësim të përshtatshëm. Kam përpjekur të tregoj konfigurimin e dy llojeve kryesore të shfaqjes. Por edhe lloje të tjera konfigurohen në mënyrë të ngjashme. Dhe shumica e cilësimeve që kam lënë "jashtë kamerës" do t'ju lejojnë të konfiguroni grafiket shumë fleksibël sipas nevojave tuaja.
Burimi: habr.com
