Zdravo, moje ime je Eugene, ja sam vođa B2B tima u Citymobilu. Jedan od zadataka našeg tima je podrška integracijama za naručivanje taksija od partnera, a kako bismo osigurali stabilnu uslugu, uvijek moramo razumjeti šta se dešava u našim mikroservisima. A za to morate stalno pratiti dnevnike.
U Citymobilu koristimo ELK stack (ElasticSearch, Logstash, Kibana) za rad sa logovima, a količina podataka koja tamo dolazi je ogromna. Pronalaženje problema u ovoj masi zahtjeva koji se mogu pojaviti nakon implementacije novog koda je prilično teško. A za njihovu vizuelnu identifikaciju, Kibana ima odjeljak Dashboard.
Na Habré-u postoji dosta članaka s primjerima kako postaviti ELK stek za primanje i pohranjivanje podataka, ali nema relevantnih materijala o kreiranju Dashboarda. Stoga želim pokazati kako napraviti vizualni prikaz podataka na osnovu ulaznih dnevnika u Kibani.
podešavanje
Da bi bilo jasnije, napravio sam Docker sliku sa ELK-om i Filebeatom. I stavljen u kontejner mali
Klonirajte konfiguracijsko spremište docker-compose
i ELK postavke i pokrenite ga naredbom docker-compose up
. Namjerno ne dodaje ključ -d
da vidite napredak ELK steka.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Ako je sve ispravno konfigurirano, tada ćemo vidjeti unos u zapisnicima (možda ne odmah, proces pokretanja spremnika s cijelim stekom može potrajati nekoliko minuta):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Po adresi localhost:5061
Kibana bi trebalo da se otvori.
Jedina stvar koju trebamo konfigurirati je kreiranje Index Patterna za Kibana sa informacijama o tome koje podatke prikazati. Da bismo to učinili, izvršit ćemo curl zahtjev ili izvršiti niz radnji u grafičkom sučelju.
$ 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"}}'
Kreiranje indeksnog uzorka preko GUI
Da biste konfigurirali, odaberite odjeljak Otkrij u lijevom izborniku i idite na stranicu za kreiranje indeksnog uzorka.
Klikom na dugme "Kreiraj obrazac indeksa" dolazimo do stranice za kreiranje indeksa. U polje "Index pattern name" unesite "logstash-*". Ako je sve ispravno konfigurirano, ispod Kibana će se prikazati indeksi koji potpadaju pod pravilo.
Na sljedećoj stranici odaberite ključno polje sa vremenskom oznakom, u našem slučaju jeste @timestamp
.
Ovo će otvoriti stranicu sa postavkama indeksa, ali u ovom trenutku od nas nisu potrebne nikakve daljnje radnje.
Sada možemo ponovo otići u odjeljak Discover, gdje ćemo vidjeti unose dnevnika.
Komandna tabla
U lijevom meniju kliknite na odjeljak Kreiranje kontrolne ploče i idite na odgovarajuću stranicu.
Kliknite na "Kreiraj novu kontrolnu tablu" i idite na stranicu za dodavanje objekata na Dashboard.
Kliknite na dugme "Kreiraj novo" i sistem će od vas tražiti da odaberete vrstu prikaza podataka. Kibana ih ima veliki broj, ali ćemo se osvrnuti na kreiranje grafičkog prikaza "Vertikalne trake" i tabelarne "Tabele podataka". Druge vrste prezentacije su konfigurisane na sličan način.
Neki dostupni objekti su označeni B i E, što znači da je format eksperimentalni ili u beta testiranju. S vremenom se format može promijeniti ili potpuno nestati iz Kibana.
Vertikalna traka
Za primjer „Vertikalna traka“, napravimo histogram omjera uspješnog i neuspješnog odgovora statusa našeg servisa. Na kraju podešavanja dobijamo sledeći grafikon:
Sve zahtjeve sa statusom odgovora < 400 klasificirat ćemo kao uspješne, a >= 400 kao problematične.
Da bismo kreirali "Okomiti trak" grafikon, moramo odabrati izvor podataka. Odaberite Index Pattern koji smo kreirali ranije.
Podrazumevano, jedan čvrsti grafikon će se pojaviti nakon odabira izvora podataka. Hajde da ga postavimo.
U bloku "Buckets" pritisnite dugme "Dodaj", izaberite "X-asis" i podesite osu X. Odvojimo vremenske oznake za prijem unosa u dnevnik. U polju "Aggregation" odaberite "Date Histogram", a u "Field" odaberite "@timestamp", što označava vremensko polje. Ostavimo "Minimalni interval" u stanju "Auto" i on će se automatski prilagoditi našem displeju.
Klikom na dugme "Ažuriraj" vidjet ćemo grafikon sa brojem zahtjeva svakih 30 sekundi.
Sada postavimo kolone duž ose Y. Sada prikazujemo ukupan broj zahtjeva u odabranom vremenskom intervalu.
Promijenimo vrijednost "Aggregation" u "Sum Bucket", što će nam omogućiti da kombinujemo podatke za uspješne i neuspješne zahtjeve. U bloku Bucket -> Aggregation, odaberite agregaciju prema "Filteri" i postavite filtriranje prema "statusCode >= 400". A u polju "Prilagođena oznaka" označavamo naše ime indikatora za razumljiviji prikaz u legendi na grafikonu i na općoj listi.
Klikom na dugme „Ažuriraj“ ispod bloka postavki, dobićemo grafikon sa zahtevima problema.
Ako kliknete na krug pored legende, pojavit će se prozor u kojem možete promijeniti boju kolona.
Sada dodajmo podatke o uspješnim zahtjevima na grafikon. U odjeljku "Metrike" kliknite na dugme "Dodaj" i odaberite "Y-axis".
U kreiranoj metrici vršimo iste postavke kao i za pogrešne zahtjeve. Samo u filteru navodimo "statusCode < 400".
Promjenom boje nove kolone dobijamo prikaz omjera problematičnih i uspješnih zahtjeva.
Klikom na dugme „Sačuvaj“ na vrhu ekrana i navođenjem imena, videćemo prvi grafikon na kontrolnoj tabli.
Tabela podataka
Sada razmotrite tabelarni prikaz "Tabela podataka". Kreirajmo tabelu sa listom svih traženih URL-ova i brojem tih zahtjeva. Kao i kod primjera vertikalne trake, prvo biramo izvor podataka.
Nakon toga, na ekranu će se prikazati tabela sa jednom kolonom koja prikazuje ukupan broj zahtjeva za odabrani vremenski interval.
Promijenit ćemo samo blok "Buckets". Kliknite na dugme "Dodaj" i odaberite "Podijeli redove".
U polju "Agregacija" odaberite "Uslovi". I u polju "Field" koji se pojavi odaberite "url.keyword".
Određivanjem vrijednosti "Url" u polju "Custom label" i klikom na "Ažuriraj", dobićemo željenu tabelu sa brojem zahtjeva za svaki od URL-ova za odabrani vremenski period.
Na vrhu ekrana ponovo kliknite na dugme "Sačuvaj" i navedite naziv tabele, na primer URL adrese. Vratimo se na kontrolnu tablu i vidimo kreirana oba pogleda.
Rad sa kontrolnom pločom
Prilikom kreiranja Dashboard-a, postavljamo samo glavne parametre prikaza u postavkama objekata prikaza. Nema smisla specificirati podatke za filtere u objektima, na primjer, "datumski raspon", "filtriranje po korisničkom agentu", "filtriranje prema zemlji zahtjeva" itd. Mnogo je zgodnije odrediti željeni vremenski period ili postaviti potrebno filtriranje u panelu upita, koji se nalazi iznad objekata.
Filtri dodani na ovom panelu bit će primijenjeni na cijelu Dashboard, a svi prikazni objekti će biti ponovo izgrađeni u skladu sa stvarnim filtriranim podacima.
zaključak
Kibana je moćan alat koji vam omogućava da vizualizirate sve podatke na prikladan način. Pokušao sam prikazati postavke dva glavna tipa prikaza. Ali druge vrste su konfigurirane na sličan način. A obilje postavki koje sam ostavio “iza kulisa” omogućit će vam da vrlo fleksibilno prilagodite grafikone prema vašim potrebama.
izvor: www.habr.com