Pozdrav, moje ime je Eugene, ja sam voditelj 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 što se događa u našim mikroservisima. A za to morate stalno pratiti zapisnike.
U Citymobilu za rad s logovima koristimo ELK stack (ElasticSearch, Logstash, Kibana) i količina podataka koja tamo dolazi je ogromna. Pronalaženje problema u ovoj masi zahtjeva koji se mogu pojaviti nakon postavljanja novog koda prilično je teško. A za njihovu vizualnu identifikaciju, Kibana ima odjeljak Dashboard.
Postoji dosta članaka na Habréu s primjerima kako postaviti ELK stog za primanje i pohranu podataka, ali nema relevantnih materijala o stvaranju nadzorne ploče. Stoga želim pokazati kako stvoriti vizualni prikaz podataka na temelju dolaznih zapisa u Kibani.
podešavanje
Da bi bilo jasnije, napravio sam Docker sliku s ELK-om i Filebeatom. I stavljen u malu posudu
Klonirajte repozitorij konfiguracije docker-compose
i ELK postavke te ga pokrenite naredbom docker-compose up
. Namjerno nije dodano ključ -d
da biste vidjeli napredak ELK stoga.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Ako je sve ispravno konfigurirano, vidjet ćemo unos u zapisnicima (možda ne odmah, postupak pokretanja spremnika s cijelim stogom 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 se trebala otvoriti.
Jedina stvar koju trebamo konfigurirati je stvoriti obrazac indeksa za Kibanu s 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"}}'
Stvaranje uzorka indeksa putem GUI-ja
Za konfiguraciju odaberite odjeljak Otkrij u lijevom izborniku i dođite do stranice za stvaranje indeksnog uzorka.
Klikom na gumb "Create index pattern" dolazimo na stranicu za izradu indeksa. U polje "Naziv uzorka indeksa" unesite "logstash-*". Ako je sve ispravno konfigurirano, ispod Kibane će biti prikazani indeksi koji potpadaju pod pravilo.
Na sljedećoj stranici odaberite ključno polje s vremenskom oznakom, u našem slučaju jest @timestamp
.
Ovo će dovesti do stranice s postavkama indeksa, ali u ovom trenutku od nas nisu potrebne nikakve daljnje radnje.
Sada možemo ponovno otići na odjeljak Discover, gdje ćemo vidjeti unose dnevnika.
Nadzorna ploča
U lijevom izborniku kliknite na odjeljak Izrada nadzorne ploče i dođite do odgovarajuće stranice.
Kliknite na "Create new dashboard" i doći ćete na stranicu za dodavanje objekata na Dashboard.
Kliknite na gumb "Kreiraj novi", a sustav će od vas zatražiti odabir vrste prikaza podataka. Kibana ih ima velik broj, no mi ćemo se osvrnuti na izradu grafičkog prikaza "Okomite trake" i tablične "Podatkovne tablice". Ostale vrste prezentacija konfiguriraju se na sličan način.
Neki dostupni objekti označeni su 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 Kibane.
Okomita šipka
Za primjer “Okomite trake”, napravimo histogram omjera uspješnih i neuspješnih statusa odgovora naše usluge. Na kraju postavki dobivamo sljedeći grafikon:
Klasificirat ćemo sve zahtjeve sa statusom odgovora < 400 kao uspješne, a >= 400 kao problematične.
Za izradu "Okomite trake" grafikona moramo odabrati izvor podataka. Odaberite uzorak indeksa koji smo izradili ranije.
Prema zadanim postavkama, nakon odabira izvora podataka pojavit će se jedan čvrsti grafikon. Postavimo to.
U bloku "Buckets" pritisnite gumb "Add", odaberite "X-asis" i postavite os X. Ostavimo vremenske oznake za prijem unosa u dnevnik. U polju "Aggregation" odaberite "Date Histogram", a u "Field" odaberite "@timestamp", označavajući polje vremena. Ostavimo "Minimalni interval" u stanju "Auto", i on će se automatski prilagoditi našem prikazu.
Klikom na gumb "Ažuriraj" vidjet ćemo graf s brojem zahtjeva svakih 30 sekundi.
Sada postavimo stupce duž osi Y. Sada prikazujemo ukupan broj zahtjeva u odabranom vremenskom intervalu.
Promijenimo vrijednost "Aggregation" u "Sum Bucket", što će nam omogućiti kombiniranje podataka za uspješne i neuspješne zahtjeve. U bloku Bucket -> Aggregation odaberite agregaciju prema "Filters" i postavite filtriranje prema "statusCode >= 400". A u polju "Prilagođena oznaka" navodimo naš naziv indikatora za razumljiviji prikaz u legendi na grafikonu i na općem popisu.
Klikom na gumb "Ažuriraj" ispod bloka postavki dobit ćemo grafikon sa zahtjevima problema.
Ako kliknete na krug pored legende, pojavit će se prozor u kojem možete promijeniti boju stupaca.
Dodajmo sada podatke o uspješnim zahtjevima na grafikon. U odjeljku "Mjerni podaci" kliknite gumb "Dodaj" i odaberite "Os Y".
U stvorenoj metrici postavljamo iste postavke kao i za pogrešne zahtjeve. Samo u filteru navodimo "statusCode < 400".
Promjenom boje novog stupca dobivamo prikaz omjera problematičnih i uspješnih zahtjeva.
Klikom na gumb "Spremi" na vrhu ekrana i određivanjem imena, vidjet ćemo prvi grafikon na nadzornoj ploči.
Tablica podataka
Sada razmotrite tablični prikaz "Tablica podataka". Kreirajmo tablicu s popisom svih URL-ova koji su zatraženi i brojem tih zahtjeva. Kao i kod primjera okomite trake, prvo odabiremo izvor podataka.
Nakon toga na ekranu će se prikazati tablica s jednim stupcem koji prikazuje ukupan broj zahtjeva za odabrani vremenski interval.
Promijenit ćemo samo blok "Kunte". Kliknite gumb "Dodaj" i odaberite "Razdijeli retke".
U polju "Agregacija" odaberite "Uvjeti". I u polju "Polje" koje se pojavi odaberite "url.keyword".
Određivanjem vrijednosti "Url" u polje "Custom label" i klikom na "Update" dobit ćemo željenu tablicu s brojem zahtjeva za svaki od URL-ova za odabrano vremensko razdoblje.
Na vrhu ekrana ponovno kliknite gumb "Spremi" i odredite naziv tablice, na primjer Urls. Vratimo se na nadzornu ploču i vidimo kako su stvorena oba prikaza.
Rad s nadzornom pločom
Prilikom izrade nadzorne ploče postavljamo samo osnovne parametre prikaza u postavkama prikaza objekta. Nema smisla navoditi podatke za filtre u objektima, na primjer, "datumski raspon", "filtriranje po korisničkom agentu", "filtriranje po zemlji zahtjeva" itd. Mnogo je prikladnije odrediti željeno vremensko razdoblje ili postaviti potrebno filtriranje na ploči upita koja se nalazi iznad objekata.
Filtri dodani na ovu ploču primijenit će se na cijelu nadzornu ploču, a svi objekti prikaza bit će ponovno izgrađeni u skladu sa stvarnim filtriranim podacima.
Zaključak
Kibana je moćan alat koji vam omogućuje vizualizaciju bilo kojih podataka na prikladan način. Pokušao sam prikazati postavke dvije glavne vrste prikaza. Ali druge su vrste konfigurirane na sličan način. A obilje postavki koje sam ostavio "iza kulisa" omogućit će vam vrlo fleksibilnu prilagodbu grafikona kako bi odgovarali vašim potrebama.
Izvor: www.habr.com