
Përshëndetje, unë jam Evgeni, lideri i ekipit B2B në Sitimobil. Një nga detyrat e ekipit tonë është përkrahja e integrimeve për kërkesat e taksive nga partnerët, dhe për të siguruar një shërbim të qëndrueshëm, ne gjithmonë duhet të kuptojmë çfarë ndodh në mikroservisët tanë. Dhe për këtë, duhet të ndjekim vazhdimisht logët.
Në Sitimobil për punën me logët përdorim ELK-stack (ElasticSearch, Logstash, Kibana), dhe volumi i të dhënave që arrijnë atje është i madh. Të gjesh në këtë masë kërkesash problemet që mund të shfaqen pas përhapjes së kodit të ri është mjaft e vështirë. Dhe për identifikimin e tyre të qartë, në Kibana ekziston seksioni i Dashboard.
NĂ« Habr ka shumĂ« artikuj me shembuj se si tĂ« konfigurohet ELK-stack pĂ«r marrjen dhe ruajtjen e tĂ« dhĂ«nave, por pĂ«r krijimin e Dashboard nuk ka materiale tĂ« аĐșŃŃale. Prandaj, dĂ«shiroj tĂ« tregoj se si tĂ« krijohet njĂ« pĂ«rfaqĂ«sim vizual i tĂ« dhĂ«nave nĂ« Kibana bazuar nĂ« logĂ«t qĂ« arrijnĂ«.
Configuration
Për ta bërë më të qartë, kam krijuar një imazh Docker me ELK dhe Filebeat. Dhe kam vendosur në kontejner një në Go, që për shembullin tonë do të gjenerojë logë provë. Nuk do të përshkruaj detajueshëm konfigurimin e ELK, është shkruar mjaft në Habr për këtë.
Klonojmë depozitat me konfigurimin docker-compose dhe cilësimet e ELK-së, dhe e ndezim atë me komandën docker-compose up. Qëllimisht nuk po shtoj çelësin -d, për të parë procesin e punës së ELK-stack.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Nëse gjithçka është konfiguruar siç duhet, në logë do të shohim një regjistrim (ndoshta jo menjëherë, procesi i ndezjes së kontejnerit me të gjithë stack-un 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ë duhet të konfigurojmë është të krijojmë një Index Pattern për Kibana me informacionin se cilat të dhëna duhet të shfaqen. Për këtë, do të kryejmë një kërkesë curl ose do të bëjmë 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 arrijmë në faqen e krijimit të Index pattern.

Duke klikuar në butonin "Krijo index pattern", arrijmë në faqen e krijimit të indeksit. Në fushën "Emri i index pattern" shkruajmë "logstash-*". Nëse gjithçka është konfiguruar siç duhet, më poshtë Kibana do të tregojë indeksat që bien nën rregullin.

Në faqen tjetër, zgjedhim fushën kyçe me shenjë temporale, në rastin tonë është @timestamp.

Si rezultat do të shfaqet faqja e konfigurimit të indeksit, por tani nuk kërkohet veprim nga ne.

Tani mund të kthehemi në seksionin Discover, ku do të shohim shënimet e logjeve.

Panair
Në menunë e majtë, klikoni në seksionin për krijimin e Dashboard-it dhe kaloni në faqen përkatëse.

Klikoni 'Create new dashboard' dhe kaloni në faqen e shtimit të objekteve në Dashboard.

Klikoni nĂ« butonin 'Create new', dhe sistemi do t'ju propozojĂ« tĂ« zgjidhni mĂ«nyrĂ«n e shfaqjes sĂ« tĂ« dhĂ«nave. NĂ« Kibana ka shumĂ« mundĂ«si, por ne do tĂ« shqyrtojmĂ« krijimin e njĂ« paraqitjeje grafike 'Vertical Bar' dhe tĂ« dhĂ«nave 'Data Table'. MĂ«nyrat e tjera tĂ« paraqitjes konfigurohen nĂ« mĂ«nyrĂ« tĂ« ngjashme.Â

Disa objekte të disponueshme kanë etiketat 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 krejtësisht nga Kibana.
Vertical Bar
Për shembull, për 'Vertical Bar' do të krijojmë një histogram të proporcioneve të statusit të suksesshëm dhe jo të suksesshëm të përgjigjeve të shërbimit tonë. Pas përfundimit të konfigurimeve, do të kemi grafikun e mëposhtëm:

Të suksesshmit do t'i japim përkufizimin të gjitha kërkesave me status përgjigjeje = 400.
Për të krijuar grafikën 'Vertical Bar', na nevojitet të zgjedhim burimin e të dhënave. Zgjedhim Index Pattern që kemi krijuar më parë.

Për default, 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 nĂ« butonin 'Add', zgjedhim 'X-axis' dhe konfigurojmĂ« aksin X. Do tĂ« vendosim sipas tij shenjat temporale tĂ« mbĂ«rritjes sĂ« shĂ«nimeve nĂ« log. NĂ« fushĂ«n 'Aggregation' zgjedhim 'Date Histogram', dhe nĂ« 'Field' zgjedhim '@timestamp', qĂ« tregon pĂ«r fushĂ«n temporale. 'Minimum interval' do ta lĂ«mĂ« nĂ« gjendje 'Auto', dhe ai do tĂ« pĂ«rshtatet automatikisht sipas shfaqjes sonĂ«.Â

Duke klikuar në butonin 'Update', do të shohim grafikun me numrin e kërkesave çdo 30 sekonda.

Tani le të konfigurojmë kolonat në aksin Y. Tani për tani po shfaqet shuma totale e kërkesave në intervalin e zgjedhur të kohës.

Do ta ndryshojmë vlerën 'Aggregation' në 'Sum Bucket', që do të na lejojë të kombinojmë të dhënat për kërkesat e suksesshme dhe ato me probleme. Në bllokun Bucket -> Aggregation zgjedhim aglomerimin për 'Filters' dhe vendosim filtrimin për 'statusCode >= 400'. Dhe në fushën 'Custom label' do të vendosim emrin tonë të indikatorit për një shfaqje më të kuptueshme në legjendë në grafik dhe në listën e përgjithshme.

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

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

Tani do të shtojmë në grafik të dhëna për kërkesat e sukcesshme. Në seksionin «Metrics» klikojmë butonin «Add» dhe zgjedhim «Y-axis».

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

Duke ndryshuar ngjyrën e kolonës së re, do të kemi një paraqitje të raportit midis kërkesave problematike dhe atyre të suksesit.

Duke klikuar në pjesën e sipërme të ekranit butonin «Save» dhe duke treguar emrin, do të shohim grafikun tonë të parë në Dashboard.

Tabela e Dhënave
Tani të shqyrtojmë paraqitjen tabelare «Data Table». Do të krijojmë një tabelë me listën e të gjithë URL-ve për të cilat janë bërë kërkesa dhe numrin e këtyre kërkesave. Ashtu si në shembullin me Vertical Bar, së pari zgjedhim burimin e të dhënave.

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

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

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

Duke shënuar në fushën «Custom label» vlerën «Url» dhe duke klikuar «Update», 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 sërish do të klikojmë butonin «Save» dhe do të tregojmë emrin e tabelës, për shembull Urls. Të kthehemi prapa në Dashboard dhe do të shohim të dyja paraqitjet e krijuara.

Puna me Dashboard
Kur krijojmĂ« Dashboard, nĂ« cilĂ«simet e objekteve tĂ« paraqitjes kemi vendosur vetĂ«m parametrat e zakonshĂ«m tĂ« pamjes. Nuk ka kuptim tĂ« specifikojmĂ« tĂ« dhĂ«nat pĂ«r filtĂ«r nĂ« objekte, pĂ«r shembull, «intervalin e datave», «filtrimin sipas useragent», «filtrimin sipas vendit tĂ« kĂ«rkesĂ«s» etj. ĂshtĂ« shumĂ« mĂ« e pĂ«rshtatshme tĂ« tregojmĂ« intervalin e dĂ«shiruar tĂ« kohĂ«s ose tĂ« vendosim filtrimin e nevojshĂ«m nĂ« panelin e kĂ«rkesave, i cili ndodhet mbi objektet.
![]()
Filtrat e shtuar në këtë panel do të zbatohen në të gjithë Dashboard-in, dhe të gjitha objektet e paraqitjes do të ristrukturohen në përputhje me të dhënat e filtruar aktuale.
Përfundim
Kibana â njĂ« mjet i fuqishĂ«m qĂ« lejon vizualizimin e çdo tĂ« dhĂ«ne nĂ« njĂ« format tĂ« pĂ«rshtatshĂ«m. Kam pĂ«rgatitur njĂ« udhĂ«zues pĂ«r konfigurimin e dy llojeve kryesore tĂ« shfaqjes. Por, edhe lloje tĂ« tjera janĂ« tĂ« konfiguruara nĂ« mĂ«nyrĂ« tĂ« ngjashme. Dhe numri i madh i konfigurimeve qĂ« kam lĂ«nĂ« "jashtĂ« skenĂ«s" do tâju lejojĂ« tĂ« pĂ«rshtatni grafikat nĂ« pĂ«rputhje me nevojat tuaja.
Burimi: habr.com
